Refactored to use DSL style