First working version all tests pass all methods