             // call completion
             completion(response)
         }
-    }
-    
-    /**
-     Discover All Characteristic Descriptors
-     
-     This sub-procedure is used by a client to find all the characteristic descriptor’s Attribute Handles and Attribute Types within a characteristic definition when only the characteristic handle range is known. The characteristic specified is identified by the characteristic handle range.
-     
-     ![Image](https://github.com/PureSwift/Bluetooth/raw/master/Assets/DiscoverAllCharacteristicDescriptors.png)
-     */
-    public func discoverAllCharacteristicDescriptors(of characteristic: Characteristic,
-                                                     completion: @escaping (GATTClientResponse<[Descriptor]>) -> ()) {
-        
-        /**
-         The Attribute Protocol Find Information Request shall be used with the Starting Handle set
-         to the handle of the specified characteristic value + 1 and the Ending Handle set to the
-         ending handle of the specified characteristic.
-         */
-        
-        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)
-        }
-        
-        discoverDescriptors(operation: operation)
     }
     
     /// Read Characteristic Value

                                    completion: ((GATTClientResponse<()>) -> ())?) {
        
        writeAttribute(characteristic.handle.value,
                       data: data,
                       reliableWrites: reliableWrites,
                       completion: completion)

            
        } else {
            
            discoverDescriptors(of: characteristic) { [unowned self] (response) in
                
                switch response {
                    
