New validator

This still needs some comments and tests but the basic structure is there. Tear it up.
I did some benchmarking and the validation takes 1ms... I'm fine running that every time.