guarding against redefinitions of macros