     }
     
     public func notify(_ notification: ((Data) -> ())?,
-                       for characteristic: Characteristic<Peripheral>,
+                       for characteristic: Characteristic<Peripheral, AttributeID>,
                        timeout: TimeInterval = .gattDefaultTimeout) throws {
         
         guard state == .poweredOn

        case scan
        case connect(Peripheral)
        case discoverServices(Peripheral)
        case discoverCharacteristics(Service<Peripheral>)
        case readCharacteristic(Characteristic<Peripheral>)
        case writeCharacteristic(Characteristic<Peripheral>)
        case flushWriteWithoutResponse(Peripheral)
        case updateCharacteristicNotificationState(Characteristic<Peripheral>)
        
        var peripheral: Peripheral? {
            switch self {

    }
    
    public func writeValue(_ data: Data,
                           for characteristic: Characteristic<Peripheral, AttributeID>,
                           withResponse: Bool = true,
                           timeout: TimeInterval = .gattDefaultTimeout) throws {
        
