add: functions for once and invoke