code complete
added macroexpand