         }
         
         // TODO: Can using just the characteristic UUID cause a conflict if there is an identical characteristic in another service? Can't recall if legal
+        // TODO: Maybe use new compositeId? Merges service and characteristic IDs
         notificationHandler[targetCharacteristic] = complete
         peripheral.setNotifyValue(true, for: targetCharacteristic)
     }

        queue.pushBack(item)
    }
    
    open func write(data: Data, to characteristic: String, in service: String, complete: WriteHandler? = nil) {
        guard let targetService = peripheral.services?.find(uuidString: service),
            let targetCharacteristic = targetService.characteristics?.find(uuidString: characteristic) else {
                return

            return
        }
        
        let item = QueueItem<Void>(
            name: targetCharacteristic.compositeId,
            execution: {
                // TODO: Add connection check, and error out otherwise
                self.peripheral.writeValue(data, for: targetCharacteristic, type: type)
        }, callback: { (result) in
            complete?(result)
        })
        queue.pushBack(item)
    }
    
    // TODO: Adding some pre-conditions libraries/toolkits could streamline the initial clutter
