introduce some macros