added callback macros