        (parse-column-param)
        (remove nil?)))
 
+(defn- replace-column! [columns old new]
+  {:pre [(vector? old) (vector? new)]}
+  (nav/navigate! (nav/workflow-route
+                  :inbox
+                  {:columns (->> columns
+                                (map #(if (= old %) new %))
+                                (vec)
+                                (serialize-column-param))})))
+
 (defn- add-column! [columns column]
   {:pre [(vector? column)
          (keyword? (first column))

  (will-mount [_]
    (api/fetch-inbox!)))

(declare add-column! current-columns)

(defrecord DocumentColumnSource [id document-id]
  ColumnSource

     [:header
      [:form {:on-submit (fn [e]
                           (ui/cancel-event e)
                           (let [text (.-value (om/get-node owner "search"))]
                             (replace-column! (current-columns state)
                                              [:search (:search column)] [:search text])))}
       [:input.search {:type "text"
                       :ref "search"
                       :placeholder "Search Documents"
