         }
 
         // just by instantiating, we'll get a callback to `locationManager(_:didChangeAuthorization:)`
-        let locationManager = CLLocationManager()
-        locationManager.delegate = self
+        locationManager = CLLocationManager()
+        locationManager?.delegate = self
     }
 
 }

        self.authorizationCompletion = { authorizationResult in
            switch authorizationResult {
            case .success(let authorizedLocationManager):
                authorizedLocationManager.delegate = nil
                completion(.success(authorizedLocationManager))
            case .failure(let error):


    fileprivate var authorizationCompletion: ((AuthorizedLocationManagerResult) -> Void)!
    fileprivate var authorizationScope: AuthorizationScope!
    
    fileprivate var locationManager: CLLocationManager?

    public class func authorizedLocationManager(scope: AuthorizationScope, completion: @escaping (AuthorizedLocationManagerResult) -> Void) {
        guard CLLocationManager.locationServicesEnabled() else {
            let error = NSError(domain: AuthorizationErrorDomain, code: AuthorizationErrorCode.disabled.rawValue, userInfo: [NSLocalizedDescriptionKey: AuthorizationErrorDescription, NSLocalizedFailureReasonErrorKey: "The user has disabled location services for their device."])
            completion(.failure(error))
            return
