remove unnecessary interfaces
add tests
add .travis.yml