http://www.csc.ncsu.edu/faculty/healey/csc541/assn_4/index.html