undefined macros to avoid polluting the namespace