maintain idempotence