http://www.cs.rpi.edu/~musser/dsc/idl/idl-overview_13.html