   "Walks an existing dom-node and makes sure that it has the same attributes and children as the given el."
   [dom-node el & {:keys [defer-attr]
                   :or {defer-attr false}}]
-  (let [el (cannonicalize el)]
+  (let [el (canonicalize el)]
     (when (not= (.toLowerCase (.-nodeName dom-node))
                 (.toLowerCase (name (:tag el))))
       (throw "Cannot merge el into node of a different type"))

(defn build-dom-elem [el]
  (match [el]
         [(s :when string?)] (gdom/createTextNode s)
         [(v :when vector?)] (recur (cannonicalize v))
         [(m :when map?)] ;;Can't use {:keys [...]} destructuring in place of m in this clause. Why?
         (let [{:keys [nsp tag children] :as elm} m
               elem (create-elem nsp tag)]

                                                                [tag-attrs content])
                                     ;;Explode children seqs in place
                                     children (mapcat #(if (and (not (vector? %)) (seq? %))
                                                         (map canonicalize %)
                                                         [(canonicalize %)])
                                                      raw-children)]
                                 {:nsp nsp :tag tag :attr attr :children children}))))

