explanation of macros