retain macros on undef/redef