validators use generic arguments