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