3263 - start implementing macroexpansion

Instigated by waterhouse.