refactoring macros
udpate