Refactor all validators to use predicate