in the process of rewriting the macro expansion algorithm to be hygienic