   (init-state [_]
     (let [gen (IdGenerator.getInstance)
           columns [(->InboxColumnSource (.getNextUniqueId gen))
-                   (->FakeColumnSource (.getNextUniqueId gen))]]
-      {:columns (into {} (map (juxt :id identity))
+                   (->DocumentColumnSource (.getNextUniqueId gen) 1)
+                   (->DocumentColumnSource (.getNextUniqueId gen) 2)]]
+      {:columns (into {}
+                      (map (juxt :id identity))
                       columns)}))
   (will-mount [_]
     (api/fetch-inbox! state))

                              (remove #(contains? page-ids (:id %)))
                              pages)))))))

(defrecord FakeColumnSource [id]
  ColumnSource
  (column-title [_]
    "Fake")
  (column-pages [_ state]
    (get-in state [::fake-column-pages]))
  (remove-pages! [_ state page-ids]
    (go
      (js/console.warn "Unimplemented: Removing pages from Fake...")))
  ColumnDropTarget
  (accepts-drop? [_ state]
    true)
  ;; TODO: Make immutable?
  (accept-drop! [_ state new-pages]
    (go
      (println "dropping" (pr-str new-pages))
      (om/transact! state ::fake-column-pages
                    (fn [pages]
                      (into pages
                            (remove #(contains? (set (map :id pages)) (:id %)))
                            new-pages)))
      (println "Fake-saving...")
      (<! (async/timeout 2000))
      (println "Saved!"))))

;;; NOTE: We need on-drag-start in `inbox-column' and in
;;; `inbox-column-page' (the latter to handle selection-updates when

                            (handle-drop! (:id column)
                                          source-column
                                          page-ids)))}
     [:header (column-title column state)]
     [:ul.pages
      (om/build-all inbox-column-page (column-pages column state)
                    {:opts {:page-click! (fn [click] 
