     
     public var didDisconnect: ((Peripheral) -> ())?
     
-    public var newConnection: ((ScanData<Peripheral, Advertisement>, HCILEAdvertisingReport.Report) throws -> (L2CAPSocket))?
-    
-    internal lazy var asyncQueue: DispatchQueue = DispatchQueue(label: "\(type(of: self)) Operation Queue")
+    @available(*, deprecated, message: "Set value in `.init()`")
+    public var newConnection: NewConnection?
+    
+    private lazy var queue = DispatchQueue(label: "\(type(of: self)) Queue")
+    
+    private lazy var concurrentQueue = DispatchQueue(label: "\(type(of: self)) Async Queue", qos: .userInitiated, attributes: [.concurrent])
     
     internal private(set) var scanData: [Peripheral: (ScanData<Peripheral, Advertisement>, HCILEAdvertisingReport.Report)] = [:]
     

    // MARK: - Private Methods
    
    private func newConnectionID() -> Int {
        
        lastConnectionID += 1
        
        return lastConnectionID
    }
    

#if os(macOS) || os(Linux)

@available(macOS 10.12, *)
public final class GATTCentral <HostController: BluetoothHostControllerInterface, L2CAPSocket: L2CAPSocketProtocol>: CentralProtocol {
    
    // MARK: - Properties
    
    public typealias Advertisement = LowEnergyAdvertisingData
    
    public typealias AttributeID = UInt16
    
    public typealias NewConnection = (ScanData<Peripheral, Advertisement>, HCILEAdvertisingReport.Report) throws -> (L2CAPSocket)
    
    public var log: ((String) -> ())?
    
