Move internal MACROS to separate header file to avoid polluting namespace