add tests
add docs