         for characteristic in characteristics {
             if characteristic.uuid == timeOfLastUpdateCharacteristic.uuid {
                 peripheral.setNotifyValue(true, for: characteristic)
-            } else if characteristic.uuid == serviceCharacteristic.uuid {
+            } else if characteristic.uuid == peerDataCharacteristic.uuid {
                 peripheral.readValue(for: characteristic)
             }
         }

    
    public final func peripheralManagerIsReady(toUpdateSubscribers peripheral: CBPeripheralManager) {
        if self.logLevel == .verbose { print("calling \(#function)") }
        self.peripheralManager.updateValue(self.localPeerData, for: self.serviceCharacteristic, onSubscribedCentrals: nil)
    }
    
    public final func peripheralManager(_ peripheral: CBPeripheralManager, didReceiveRead request: CBATTRequest) {
        if request.characteristic.uuid != serviceCharacteristic.uuid {
            return peripheralManager.respond(to: request, withResult: .attributeNotFound)
        } else if request.offset > localPeerData.count {
            return peripheralManager.respond(to: request, withResult: .invalidOffset)

        if characteristic.uuid == 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
            }
            
            peripheral.readValue(for: char)
        } else if characteristic.uuid == peerDataCharacteristic.uuid {
            guard
                let data = characteristic.value,
                let dict = NSKeyedUnarchiver.unarchiveObject(with: data) as? [String: Any],
