http://fab.cba.mit.edu/classes/863.09/people/cranor/How_to_Make_%28Almost%29_Anything/David_Cranor/Entries/2009/10/12_Entry_1_files/module.pdf