fix idempotent behaviour