refactoring
refactoring (again)
checkpoint for testing
add tests
tests, tests, tests!