     }
 
     func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
-        // TODO low power geofence tracking
     }
     
     func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
-        // TODO low power geofence tracking
     }
     
     func locationManager(_ manager: CLLocationManager, didStartMonitoringFor region: CLRegion) {

    internal var desiredAccuracy: Double = kCLLocationAccuracyBest
    internal var lifespan: TimeInterval = PositionLocationManager.OneShotRequestTimeOut {
        didSet {
            self.expired = false
            self._expirationTimer?.invalidate()
            self._expirationTimer = Timer.scheduledTimer(timeInterval: self.lifespan, target: self, selector: #selector(handleTimerFired(_:)), userInfo: nil, repeats: false)
        }
    }
    
    internal var completed: Bool = false
    internal var expired: Bool = false

    internal var timeOutHandler: TimeOutCompletionHandler?
    internal var completionHandler: Position.OneShotCompletionHandler?

    internal func updateLocationManagerStateIfNeeded() {
        // when not processing requests, set desired accuracy appropriately
        if self._locationRequests.count > 0 {
            if self.isUpdatingLocation == true {
                self._locationManager.desiredAccuracy = self.trackingDesiredAccuracyActive
            } else if self.isUpdatingLowPowerLocation == true {
                self._locationManager.desiredAccuracy = self.trackingDesiredAccuracyBackground
            }
            
