made some macros to reduce code duplication