refactor again and now all current tests pass