make more use of macros