restructured the DSL part