DSL refactored cleaner and easier to change