                 throw Error("This is a singleton, use getInstance(), do not call the constructor directly.");
 
             _instance = this;
-
-            _context = ExtensionContext.createExtensionContext(EXTENSION_ID, null);
-
-            if (!_context)
-                _log("ERROR", "Extension context is null. Please check if extension.xml is setup correctly.");
-            else
-                _context.addEventListener(StatusEvent.STATUS, _onStatus);
+        }
+
+        private var __context:ExtensionContext;
+        private function getContext():ExtensionContext
+        {
+            if (!__context) {
+                __context = ExtensionContext.createExtensionContext(EXTENSION_ID, null);
+                if (!__context) {
+                    _log("ERROR", "Extension context is null. Please check if extension.xml is setup correctly.");
+                } else {
+                    __context.addEventListener(StatusEvent.STATUS, _onStatus);
+                }
+            }
+            return __context;
         }
 
         /**

        public function storeTrackingNotifUrl(url:String, appGroupId:String):void {

            if (isSupported)
                _context.call("storeNotifTrackingInfo", url, appGroupId);
        }

		/**

		public function setIsAppInForeground(value:Boolean, appGroupId:String):void {

			if (isSupported)
                callContext("setIsAppInForeground", value, appGroupId);
		}

        /**
