moves to a more DSL-y approach