     (let [gen (IdGenerator.getInstance)
           columns [(->InboxColumnSource (.getNextUniqueId gen))
                    (->DocumentColumnSource (.getNextUniqueId gen) 1)
-                   (->DocumentColumnSource (.getNextUniqueId gen) 2)]]
-      {:columns (into {}
-                      (map (juxt :id identity))
-                      columns)}))
+                   (->DocumentColumnSource (.getNextUniqueId gen) 2)
+                   (->DocumentColumnSource (.getNextUniqueId gen) nil)]]
+      {:columns columns}))
   (will-mount [_]
     ;; HACK: Use om/IWillMount to fetch additional data needed by each
     ;; column
-    (doseq [[_ column] (om/get-state owner :columns)]
+    (doseq [column (om/get-state owner :columns)]
       (when (satisfies? om/IWillMount column)
         (om/will-mount column))))
   (render-state [_ {:keys [columns]}]

(defn ^:private make-page-cache [state columns]
  (into {}
        ;; Transducerpower
        (comp (mapcat #(column-pages (val %) state))
              #_(map om/value)
              (map (juxt :id identity)))
        columns))


    (let [page-cache (make-page-cache state columns)]
      [:.workflow.inbox
       (om/build-all inbox-column columns
                     {:fn (fn [column]
                            [state (assoc column ::page-cache page-cache)])
                      :state {:handle-drop! (partial inbox-handle-drop! state owner page-cache)}})])))
