 
 public class WatchSession: NSObject, WCSessionDelegate {
 
-    /// Returns the singleton session object for the current device.
     fileprivate var sessionDefault: WCSession? {
         guard WCSession.isSupported() else { return nil }
-        
-        let session = WCSession.default()
-        
-        if session.delegate?.isEqual(self) != true {
-            session.delegate = self
-        }
-        
-        if session.activationState != .activated {
-            session.activate()
-        }
-        
-        return session
+        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 {

    
    /// 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>()
}

// MARK: - Nested types

//
//  WatchSession.swift
//  ZamzamKit
//
//  Created by Basem Emara on 3/13/17.
