Macros are re ective tools that operate on the representation of programs. Though having been used, and still being useful, for more than thirty years, their semantics and pragmatics are still unclear. This paper proposes a new model to understand the macroexpansion process; this model is based on a re ective tower of macroexpansion engines.