Not sure I agree, does it ever make sense to have a validator which hasn't been run? If not then it doesn't make sense to allow them to be constructed. I guess using a context object does expose a little too much of the inner workings of a validator but at the same time I don't want lots of redundant .validate() calls everywhere. I think it's something that can be factored out later.