     
     /// Subscription queues for firing within delegates
     fileprivate var activationDidCompleteSingle = SynchronizedArray<ActivationHandler>()
-    fileprivate var didBecomeInactive = SynchronizedArray<EmptyObserver>()
-    fileprivate var didDeactivate = SynchronizedArray<EmptyObserver>()
-    fileprivate var stateDidChange = SynchronizedArray<EmptyObserver>()
-    fileprivate var reachabilityDidChange = SynchronizedArray<ReachabilityChangeObserver>()
-    fileprivate var didReceiveApplicationContext = SynchronizedArray<DictionaryObserver>()
-    fileprivate var didReceiveUserInfo = SynchronizedArray<DictionaryObserver>()
-    fileprivate var didReceiveMessage = SynchronizedArray<DidReceiveMessageObserver>()
+    public var didBecomeInactive = SynchronizedArray<EmptyObserver>()
+    public var didDeactivate = SynchronizedArray<EmptyObserver>()
+    public var stateDidChange = SynchronizedArray<EmptyObserver>()
+    public var reachabilityDidChange = SynchronizedArray<ReachabilityChangeObserver>()
+    public var didReceiveApplicationContext = SynchronizedArray<DictionaryObserver>()
+    public var didReceiveUserInfo = SynchronizedArray<DictionaryObserver>()
+    public var didReceiveMessage = SynchronizedArray<DidReceiveMessageObserver>()
 }
 
 // MARK: - Nested types

    /// Request the one-time delivery of the user’s current location.
    ///
    /// - Parameter completion: The completion with the location object.
    func activate(completion: @escaping ActivationHandler) {
        guard let session = sessionDefault else { return completion(false) }
        guard session.activationState != .activated else { return completion(true) }
        activationDidCompleteSingle += completion
        session.activate()
    }
}


public class WatchSession: NSObject, WCSessionDelegate {

    fileprivate var sessionDefault: WCSession? {
        guard WCSession.isSupported() else { return nil }
        return WCSession.default()
    }
    
    public override init() {
        super.init()
        
        guard WCSession.isSupported() else { return }
        
        WCSession.default().delegate = self
        
        if WCSession.default().activationState != .activated {
            WCSession.default().activate()
        }
    }
    
    deinit {
