Basic unit tests are passed
Refactoring on level 1