refactor + add tests
bump version