              (apply merge))))
 
 (defn mk-tree-template
-  [src-map fn-meta path parent-path]
+  [src-map fn-meta path parent-path & {:keys [macro?]}]
   (let [sub-src-map (-> #spy/d path
                         path->sym
                         src-map)
-        form (:orig #spy/d sub-src-map)]
+        form (if macro?
+               (:orig sub-src-map)
+               (:x sub-src-map))]
     {:parent-path parent-path
-     :name #spy/d (if (seq? form)
-                    (first form)
-                    form)
+     :name (if (seq? form)
+              (first form)
+              form)
      :form form
+     :macro? macro?
      :inner-path path
      :parent-name (:name fn-meta)
      :ns (-> fn-meta :ns str symbol)

    (let [new-grandparent (produce-recent-parent-tree-atom! inner-path
                                                            recent-trees)
          new-parent (-> (trace/mk-tree :parent new-grandparent)
                         (assoc :inner-path inner-path)
                         atom)]
      (assoc-to-recent-trees! new-parent
                              new-grandparent

              path
              '$$
              `'~template
              (first form))
        (rest form)))

(defn xpand-macro-form
