make validation idempotent