http://spiral.ece.cmu.edu/mcm/gen.html