add new tests
add some comments
change some unit and integration tests