first rule of macros, dont write macros