         context.queue.push(operation)
     }
     
-    private func enqueue(_ operation: Operation.ReadRSSI, for peripheral: Peripheral) {
+    private func dequeue(for peripheral: Peripheral, _ body: (Operation) -> ()) {
+        guard let context = self.central.continuation.peripherals[peripheral] else {
+            assertionFailure("Missing context")
+            return
+        }
+        context.queue.pop(body)
+    }
+    
+    private func enqueueReadRSSI(_ operation: Operation.ReadRSSI, for peripheral: Peripheral) {
         let context = self.continuation.peripherals[peripheral] ?? PeripheralContinuationContext(self)
         context.readRSSI.push(operation)
+    }
+    
+    private func dequeueReadRSSI(for peripheral: Peripheral, _ body: (Operation.ReadRSSI) -> ()) {
+        guard let context = self.central.continuation.peripherals[peripheral] else {
+            assertionFailure("Missing context")
+            return
+        }
+        context.readRSSi.pop(body)
     }
     
     private func write(

            assert(self.central != nil)
            assert(self.central?.centralManager === centralManager)
            let peripheral = Peripheral(corePeripheral)
            guard let context = self.central.continuation.peripherals[peripheral] else {
                assertionFailure("Missing context")
                return
            }
            context.queue.pop {
                guard case let .connect(operation) = $0 else {
                    assertionFailure("Missing continuation")
                    return
                }
                operation.continuation.resume()

        // if you specified the write type as `.withResponse`.
        let writeType: CBCharacteristicWriteType = operation.withResponse ? .withResponse : .withoutResponse
        peripheralObject.writeValue(operation.data, for: characteristicObject, type: writeType)
        guard operation.withResponse else {
            operation.continuation.resume()
            return false
        }
        return true
    }
    
    func execute(_ operation: Operation.DiscoverDescriptors) {
