code and spec for project2