     ;; `inbox-column' can access it (as the drop `dataTransfer' only
     ;; contains IDs)
     (let [page-cache (make-page-cache state columns)]
-      [:.workflow.inbox {:on-drop (fn [e]
-                                    ;; TODO: Handle the on-drop to
-                                    ;; remove the pages from the
-                                    ;; source column
-                                    (println "inbox/on-drop")
-                                    (let [source-column (get-transfer-data e "application/x-pepa-column")
-                                          source-column (some #(when (= source-column
-                                                                        (:id %)) %)
-                                                              columns)
-                                          page-ids (get-transfer-data e "application/x-pepa-pages")]
-                                      (prn source-column page-ids)))}
+      [:.workflow.inbox
        (om/build-all inbox-column columns
                      {:fn (fn [column]
                             [state
                              (-> column
                                  val
-                                 (assoc ::page-cache page-cache))])})])))
+                                 (assoc ::page-cache page-cache))])
+                      ;; NOTE: Passing this callback as `opts' might
+                      ;; cause issues
+                      :opts {:handle-drop! (partial inbox-handle-drop! state owner page-cache)}})])))

               :on-drag-end (fn [_]
                              (println "on-drag-end"))
               :on-drop (fn [e]
                          (let [page-cache (::page-cache column)]
                            (when-let [page-ids (get-transfer-data e "application/x-pepa-pages")]
                              (accept-drop! column state (mapv page-cache page-ids))
                              #_(ui/cancel-event e))))}
     [:header (column-title column)]
     [:ul.pages
      (om/build-all inbox-column-page (column-pages column state)

    "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
