             
             fileprivate(set) var values: [UInt: GATTClient.Characteristic] = [:]
             
-            private var lastIdentifier: UInt = 0
-            
-            fileprivate mutating func newIdentifier() -> UInt {
-                
-                lastIdentifier += 1
-                
-                return lastIdentifier
-            }
+            fileprivate(set) var notifications: [UInt: ((Data) -> ())] = [:]
         }
         
         mutating func insert(_ newValues: [GATTClient.Characteristic],

        self.log?("Did discover \(self.scanData.count) peripherals")
    }
    
    public func connect(to peripheral: Peripheral, timeout: TimeInterval = 30) throws {
        
        guard let advertisementData = scanData[peripheral]
            else { throw CentralError.unknownPeripheral }

    
    public func discoverCharacteristics(_ characteristics: [BluetoothUUID] = [],
                                        for service: Service<Peripheral>,
                                        timeout: TimeInterval = .gattDefaultTimeout) throws -> [Characteristic<Peripheral>] {
        
        return try connection(for: service.peripheral)
            .discoverCharacteristics(characteristics, for: service, timeout: timeout)
    }
    
    public func readValue(for characteristic: Characteristic<Peripheral>,
                          timeout: TimeInterval = .gattDefaultTimeout) throws -> Data {
        
        fatalError()
    }
