         return false
     }
     
-    func switchToNewPeripheralAndConnect(_ selector: DFUPeripheralSelector) {
+    func switchToNewPeripheralAndConnect(_ selector: DFUPeripheralSelectorDelegate) {
         // Release the previous peripheral
         peripheral!.delegate = nil
         peripheral = nil

    associatedtype DFUServiceType : DFUService
    
    /// Selector used to find the advertising peripheral in DFU Bootloader mode.
    var peripheralSelector:DFUPeripheralSelector? { get }
    
    /// The DFU Service instance. Not nil when found on the peripheral.
    var dfuService:DFUServiceType? { get set }
}

internal class BaseCommonDFUPeripheral<TD : DFUPeripheralDelegate, TS : DFUService> : BaseDFUPeripheral<TD>, DFUPeripheral {
    var peripheralSelector:DFUPeripheralSelector?
    
    typealias DFUServiceType = TS
    var dfuService:DFUServiceType?

     
     - parameter selector: a selector used to select a device in DFU Bootloader mode
     */
    func switchToNewPeripheralAndConnect(_ selector: DFUPeripheralSelectorDelegate)
    
    /**
     Returns whether the Init Packet is required by the target DFU device.
