some refactoring and added voruby gem