Move 'special_rules' out of _validate(), remove constraint value checking