all tests pass, before final refactor