         
         let start = characteristic.handle.value + 1
         
-        guard let end = cache.endHandle(for: characteristic)
-            else { fatalError("Could not retrieve handles") }
-        
-        let operation = DescriptorDiscoveryOperation(start: start, end: end) { [unowned self] (response) in
-            
-            // update cache
-            switch response {
-            case .error:
-                break
-            case let .value(value):
-                self.cache.update(value, for: characteristic)
-            }
-            
-            // call completion
-            completion(response)
-        }
+        let end = start // FIXME:
+        
+        let operation = DescriptorDiscoveryOperation(start: start, end: end, completion: completion)
         
         discoverDescriptors(operation: operation)
     }

        /// The Attribute Protocol Read By Group Type Request shall be used with 
        /// the Attribute Type parameter set to the UUID for «Primary Service». 
        /// The Starting Handle shall be set to 0x0001 and the Ending Handle shall be set to 0xFFFF.
        discoverServices(start: 0x0001, end: 0xFFFF, primary: true) { [unowned self] (response) in
            
            // update cache
            switch response {
            case .error:
                break
            case let .value(value):
                self.cache.update(value)
            }
            
            // call completion
            completion(response)
        }
    }
    
    /// Discover Primary Service by Service UUID

        
        send(pdu) { [unowned self] in self.findInformationResponse($0, operation: operation) }
    }
    /*
    private func register(notification: Notification?,
                          for characteristic: Characteristic,
                          descriptors: [GATTClient.Descriptor],
