add unit tests
add more tests