http://www.crsr.net/Programming_Languages/SoftwareTools/ch1.html