         (list base actions))))
 
 (defn track-visitor
+  "Visitor middleware that will track an element on the history
+  of the dalap walking when the given track-visit? function returns
+  true."
   [track-visit? visit-fn]
   (fn visit-decorator [x w]
     (if (track-visit? x)

(defn- matching-element [selector history]
  (first (select-element selector history)))

(defn selector-visitor [selectors select-visit? visit-fn]
  (fn [elem w]
    (cond
      (not (select-visit? elem))

         true
         (html/has-class? dom-node class)))))

(defn- history-span 
 "Does an span using dom-matches-selector? on elements
  that are DomNode type, and compares types otherwise."
 [selector elem]
 (cond
   (html/dom-node? elem)
     (not (dom-matches-selector? elem selector))
   :else
     (not (= (symbol (.getName (type elem))) selector))))

(defn track-selector 
  "Grabs an element from history that matches the given
  selector."
  [selector history]
  (let [[new-history [elem & _]]
          (span #(history-span selector %) history)]
    (cond
