Final version of Project 2: see readme for assignment details