as a result of major refactoring, all of the tests are passing at this point