                               (remove #(contains? page-ids (:id %)))
                               pages)))))))
 
-(defrecord FakeColumnSource [id]
+(comment
+  (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!")))))
+
+(defrecord DocumentColumnSource [id document-id]
   ColumnSource
-  (column-title [_]
-    "Fake")
+  (column-title [_ state]
+    (get-in state [:documents document-id :title]
+            "Untitled Document"))
   (column-pages [_ state]
-    (get-in state [::fake-column-pages]))
+    (get-in state [:documents document-id :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!"))))
+      (js/console.warn "Unimplemented: Removing pages from Fake..."))))
 
 ;;; NOTE: We need on-drag-start in `inbox-column' and in
 ;;; `inbox-column-page' (the latter to handle selection-updates when


(defrecord InboxColumnSource [id]
  ColumnSource
  (column-title [_]
    "Inbox")
  (column-pages [_ state]
    (get-in state [:inbox :pages]))

                            (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] 
