Add support for required options
Update gemfile
Add rubocop and fix compliance for most files