Rewrite to allow validators to raise exceptions, instead of returning true or false. This allows more specificity in the error messages.