http://csdl.computer.org/comp/mags/cs/2004/04/c4012abs.htm