 // PeripheralImpl
 ///////////////////////////////////////////
 
-public class Peripheral : NSObject, CBPeripheralDelegate, PeripheralWrappable {
+public final class Peripheral : NSObject, CBPeripheralDelegate, PeripheralWrappable {
     
     internal var impl = PeripheralImpl<Peripheral>()
     
     // PeripheralImpl
     public var name : String {
-        if let name = cbPeripheral.name {
+        if let name = self.cbPeripheral.name {
             return name
         } else {
             return "Unknown"

                                                Wrapper.WrappedService:ServiceWrappable> {
    
    private var servicesDiscoveredPromise   = Promise<Wrapper>()
    
    private var connectionSequence          = 0
    private var currentError                = PeripheralConnectionError.None

        }
    }
    
    public func didReadRSSI(RSSI:NSNumber!, error:NSError!) {
        if let error = error {
            self.readRSSIPromise.failure(error)
        } else {
            if let RSSI = RSSI {
                self.readRSSIPromise.success(RSSI.integerValue)
            } else {
                self.readRSSIPromise.success(RSSI.integerValue)
            }
        }
    }

    // utils
    private func timeoutConnection(peripheral:Wrapper, sequence:Int) {
        let central = CentralManager.sharedInstance
