Written to fulfill the requirements of 6.005's Project 1 (MIT OpenCourseware).