add gc, add macro unit
apply macros