Final project for Google Computer Science Summer Institute 2014