         }
         
         switch characteristic.uuid {
+        case isPairingCharacteristic.uuid:
+            guard
+                let dataValue = characteristic.value,
+                let isPairing = NSKeyedUnarchiver.unarchiveObject(with: dataValue) as? Bool,
+                isPairing == true
+            else {
+                return
+            }
+            
+            let peer = ClinkPeer(peripheral: peripheral)
+            let peerManager = self.peerManager ?? self
+            
+            peerManager.save(peer: peer)
+            
+            self.connectedPeers.append(peer)
+            self.delegate?.clink(self, didDiscoverPeer: peer)
+            
+            NotificationCenter.default.post(name: Clink.Notifications.didDiscoverPeer, object: peer, userInfo: peer.data)
+            
         case timeOfLastUpdateCharacteristic.uuid:
             guard
                 let service = peripheral.services?.filter({ $0.uuid == self.serviceId }).first,
                 let char = service.characteristics?.filter({ $0.uuid == self.peerDataCharacteristic.uuid }).first
-                else {
-                    return
+            else {
+                return
             }
             
             peripheral.readValue(for: char)

                let data = characteristic.value,
                let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: Any],
                let peer = self.connectedPeers.filter({ $0.id == peripheral.identifier }).first
                else {
                    return
            }
            
            peer.data = dict

            self.delegate?.clink(self, didUpdateDataForPeer: peer)
            
            NotificationCenter.default.post(name: Clink.Notifications.didUpdatePeerData, object: self, userInfo: peer.data)
            
        default:
            return
        }
