add tests
add finish method