add middelware
add tests
travis setup