use _ONCE variants of the macro