Abstract macros