DSL in scala