http://interactivemedia.seancohen.com/class/rputna1/assignment2/