         if let e = error {
             result = .failure(e)
         }
-        characteristicDiscoveryHandler?(result)
+        
+        for operation in queue.items {
+            guard operation.name == service.uuid.uuidString,
+                operation.isExecuting == true else {
+                    continue
+            }
+            // TODO: Exit loop, or run through everything just in case? Probably exit
+            // TODO: If queue.items can be mapped as QueueItem<Data> - cast unnecessary
+            (operation as? QueueItem<DiscoveredCharacteristic>)?.notify(result)
+        }
     }
     
     func didUpdateValueFor(characteristic: CBCharacteristic, error: Error?) {


// MARK: - GATT operations
extension Device {
    // TODO: Make CBUUID into strings
    open func discoverServices(with uuids: [CBUUID]? = nil, complete: ServiceDiscovery?) {
        guard isConnected == true else {
            Log(v: "Not connected - cannot discoverServices", tag: tag)
            return
        }
        
        serviceDiscoveryHandler = complete
        Log(v: "discoverServices: \(self.peripheral) \n \(String(describing: self.peripheral.delegate))", tag: tag)
        self.peripheral.discoverServices(uuids)
    }
    
    // TODO: Make CBUUID into strings
    // TODO: Make service a UUID?
    open func discoverCharacteristics(with uuids: [CBUUID]? = nil, for service: CBService, complete: CharacteristicDiscovery?) {
        guard isConnected == true else {
            Log(v: "Not connected - cannot discoverCharacteristics", tag: tag)
            return
        }
        
        characteristicDiscoveryHandler = complete
        Log(v: "discoverCharacteristics", tag: tag)
        peripheral.discoverCharacteristics(uuids, for: service)
    }
    
    open func read(from characteristic: String, in service: String, complete: ReadHandler?) {

    fileprivate let manager: SwiftyTeeth

    fileprivate var connectionHandler: ConnectionHandler?
    fileprivate var notificationHandler = [CBCharacteristic: ReadHandler]()
    
    // Connection parameters
