6.005 Software Design Project 1