Code from CIS 240 Fall 2013 at the University of Pennsylvania