refactor, tests
add tests
readme
update deps