Moved the DSL to its own file and re-org'd for readability