idempotent methods