refactoring | add new tests