reimplemented macroexpander