Feature/create gem

- [x] make the code to installable gem
- [x] have a test suite against code, need refactoring code