corner cases
tests
refactoring