All unit tests are passing after full refactoring