           (>!! (:outbox-ch state) entry))
         (assoc (dissoc state :buffered-outbox) :stall-output? false))
     state))
+
+(defmethod extensions/fire-side-effects! :accept-join-cluster
+  [entry old new diff state]
+  (let [next-state (unbuffer-messages state diff new)
+        old-allocation (common/peer->allocated-job (:allocations old) (:id next-state))
+        new-allocation (common/peer->allocated-job (:allocations new) (:id next-state))]
+    (if-not (not old-allocation new-allocation)
+      (common/start-new-lifecycle next-state diff)
+      next-state)))

        (update-in [:accepted] dissoc accepted-observer)
        (update-in [:peers] vec)
        (update-in [:peers] conj accepted-joiner)
        (assoc-in [:peer-state accepted-joiner] :idle))))

(defmethod extensions/replica-diff :accept-join-cluster
  [entry old new]


(defmethod extensions/reactions :accept-join-cluster
  [entry old new diff state]
  [])

(defn unbuffer-messages [state diff new]
  (if (= (:id state) (:subject diff))
    (do (extensions/open-peer-site (:messenger state) 
                                   (get-in new [:peer-sites (:id state)]))
