add gen macros