New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
Ah, this is very subtle. In the others, I am creating a copy of `c`. In this one, I am modifying it.