refactoring and tests
refactoring and tests