Moved DSL into it's own file.