Stephen Osentoski and Kristen Gattoni's work for EECS 484 at Umich.