A project for CIS3090 at the University of Guelph, Fall 2014 semester.