Sketch out the new DSL
Implement the new DSL