refactored around newly added dsl.rb