diff --git a/sub_peers.js b/sub_peers.js
index <HASH>..<HASH> 100644
--- a/sub_peers.js
+++ b/sub_peers.js
@@ -88,6 +88,13 @@ TChannelSubPeers.prototype.add = function add(hostPort, options) {
     peer = topChannel.peers.add(hostPort, options);
     peer.setPreferConnectionDirection(self.preferConnectionDirection);
 
+    if (peer.countConnections('out') > 0) {
+        this.currentConnectedPeers++;
+    }
+
+    peer.incrementOutConnectionEvent.on(self.boundOnOutConnectionIncrement);
+    peer.decrementOutConnectionEvent.on(self.boundOnOutConnectionDecrement);
+
     self._map[hostPort] = peer;
     self._keys.push(hostPort);
 
@@ -113,6 +120,15 @@ TChannelSubPeers.prototype._delete = function _del(peer) {
         return;
     }
 
+    if (peer.countConnections('out') > 0) {
+        this.currentConnectedPeers--;
+    }
+
+    peer.incrementOutConnectionEvent
+        .removeListener(self.boundOnOutConnectionIncrement);
+    peer.decrementOutConnectionEvent
+        .removeListener(self.boundOnOutConnectionDecrement);
+
     delete self._map[peer.hostPort];
     popout(self._keys, index);
sub_peers: hook up event listeners