use macros, modify syntax