Use structural elements configured in the rule set, get rid of constants
Refactor code & improve error messages
Merge remote-tracking branch 'matthias-ronge/flexible-ruleset-elements' into feature-zm