implemented all tests. Yay