Let the DSL reflect what actually happens internally. This will also make it easier to add more functionality.