Part 1,2, and 5 are working and have tests