Refactoring finished and tests are passed.