     (log/infof "sending subscribers for %s to %s" document-id client-id)
     (send-fn client-id [:frontend/subscribers
                         {:document/id document-id
-                         :subscribers (get subs document-id)}])
+                         :subscribers (reduce (fn [acc [client-id subscriber]]
+                                                (assoc acc client-id (subscriber-read-api subscriber)))
+                                              {} (get subs document-id))}])
 
     ;; These are interesting b/c they're read-only. And by "interesting", I mean "bad"
     ;; We should find a way to let the frontend edit things

                                                                             team))
                           :entity-type :access-request}]))))

;; TODO: subscribe should be the only function you need when you get to a doc, then it should send
;;       all of the data asynchronously
(defmethod ws-handler :frontend/subscribe [{:keys [client-id ?data ?reply-fn] :as req}]

        mouse-position (-> ?data :mouse-position)
        tool (-> ?data :tool)
        layers (-> ?data :layers)
        relation (-> ?data :relation)
        recording? (-> ?data :recording?)]
    (swap! document-subs utils/update-when-in [document-id client-id] merge {:mouse-position mouse-position
                                                                             :tool tool
                                                                             :recording? recording?})
    (doseq [[uid _] (dissoc (get @document-subs document-id) client-id)]
      ((:send-fn @sente-state) uid [:frontend/mouse-move (subscriber-read-api {:client-id client-id
                                                                               :tool tool
                                                                               :layers layers
                                                                               :relation relation
                                                                               :recording? recording?
                                                                               :mouse-position mouse-position})]))))

(defmethod ws-handler :frontend/update-self [{:keys [client-id ?data] :as req}]
  ;; TODO: update subscribers in a different way
