New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
Why? Wouldn't it be useful to always provide this feedback?