set the proper boundary between private and public APIs; simplified the tests.
added .travis.yml.