add tests
refactoring