initial implementation with tests
travis