Broke the validation off into an interface