separate gen_valid for all three types in settings
hook for validation setting per campaign