make init and add idempotent