Passing plain error messages into listeners rather than constraints