improved macroexpansion