            :publications nil
            :connections nil
            :virtual-peers nil
+           :multiplex-id nil
            :compress-f nil :decompress-f nil 
            :inbound-ch nil :release-ch nil :retry-ch nil )))
 
+(defrecord PeerChannels [acking-ch inbound-ch release-ch retry-ch])
+
 (defmethod extensions/open-peer-site AeronConnection
-  [{:keys [virtual-peers] :as messenger} {:keys [aeron/id]}]
-  (swap! virtual-peers assoc id messenger)) 
+  [{:keys [virtual-peers multiplex-id acking-ch inbound-ch release-ch retry-ch] :as messenger} 
+   {:keys [aeron/id]}]
+  (reset! multiplex-id id)
+  (swap! virtual-peers assoc id (->PeerChannels acking-ch inbound-ch release-ch retry-ch))) 
 
 (def no-op-error-handler
   (reify ErrorHandler 

(defn choose-id [used]
  (first (clojure.set/difference possible-ids used)))

;;; Assigns a unique id to each peer so that messages do not need
;;; to send the entire peer-id in a payload, saving 14 bytes per
;;; message
(defmethod extensions/assign-site-resources :aeron
  [replica peer-site peer-sites]
  (let [used-ids (->> (vals peer-sites) 
                      (filter 
                        (fn [s]


(defrecord AeronPeerConnection [channel id])

(defmethod extensions/connect-to-peer AeronConnection
  [messenger peer-id event {:keys [aeron/external-addr aeron/port aeron/id]}]
  (->AeronPeerConnection (aeron-channel external-addr port) id))
