Update requirements
Refactor and add main and cli modules
Update tests
Add travis ci