refactored the whole project
replaced throwing errors by emiting them to the out stream
added tests
edited README.md
removed example code
restructured folders
testing travis