prepare for building gem
bugfix for recursive call
remove code and add 1 more test
big refactoring. renaming method names. Adding constants