Finished initial refactoring to Formatter(), all tests pass