The spec and code for project1