 	static var sharedInstance: MobileMessaging?
 	let userNotificationType: UserNotificationType
 	let applicationCode: String
+	var doRegisterToApns: Bool = true
 	
 	var storageType: MMStorageType = .SQLite
 	let remoteAPIBaseURL: String

		return self
	}
	
	/// Starts a new Mobile Messaging session.
	///
	/// This method should be called form AppDelegate's `application(_:didFinishLaunchingWithOptions:)` callback.
	/// - remark: For now, Mobile Messaging SDK doesn't support Badge. You should handle the badge counter by yourself.
	public func start(_ completion: (() -> Void)? = nil) {
		start(doRegisterToApns: true, completion)
	}
	
	/// Starts a new Mobile Messaging session.
	///
	/// This method should be called form AppDelegate's `application(_:didFinishLaunchingWithOptions:)` callback.
	/// - remark: For now, Mobile Messaging SDK doesn't support Badge. You should handle the badge counter by yourself.
	/// - parameter doRegisterToApns: defines whether the user will be promt to allow receiving Push Notifications.
	public func start(doRegisterToApns: Bool, _ completion: (() -> Void)? = nil) {
		MMLogDebug("Starting service (with apns registration=\(doRegisterToApns))...")
		
		startСomponents()
		
		performForEachSubservice {
			$0.mobileMessagingWillStart(self)
		}
		
		if doRegisterToApns == true {
			registerForRemoteNotifications()
		}
		
		performForEachSubservice {
			$0.mobileMessagingDidStart(self)
		}
		
		completion?()
		
		MMLogDebug("Service started with subservices: \(subservices)")
	}
	
	/// Syncronizes all available subservices with the server.

		
		// just to break retain cycles:
		installationQueue.cancelAllOperations()
		doRegisterToApns = true
		appListener = nil
		currentInstallation = nil
		currentUser = nil
