In the for loop above this new one, we could put the '!<keyword>' entries in an array/hash (probably together with the dsl key), and the remaining pairs into another array/hash. This way we could get only a for loop making it a little more efficient (ok, the lists are not that big) but also more legible.

Not required, but a suggestion :-)