 	
 	// MARK: Location Services
 	func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
-		if CLLocationManager.authorizationStatus() != .Restricted && CLLocationManager.authorizationStatus() != .Denied {
-			locationManager.startUpdatingLocation()
+		if havePermissions && refreshing {
+			refresh()
 		} else if refreshing {
 			timer?.invalidate()
 			timer = nil

			} else {
				locationManager.requestAlwaysAuthorization()
			}
		}
	}
	
	func refresh() {
		delegate?.dataRefreshing()
		refreshing = true
		
		// start updating location if authorized
		if CLLocationManager.authorizationStatus() != .Restricted && CLLocationManager.authorizationStatus() != .Denied {
			locationManager.startUpdatingLocation()
			
			// start timer
			timer = NSTimer.scheduledTimerWithTimeInterval(3.0, target: self, selector: "timedOut", userInfo: nil, repeats: false)
		} else {
			delegate?.dataError()
			refreshing = false
		}
	}
	

	private var refreshing = false
	private var timer: NSTimer?
	
	var disabled: Bool {
		let status = CLLocationManager.authorizationStatus()
		return status == .Restricted || status == .Denied
	}
	
	var havePermissions: Bool {
		let status = CLLocationManager.authorizationStatus()
		
		if ios7() {
			return status == .Authorized
		}
		
		return status == .Authorized || status == .AuthorizedWhenInUse
	}
	
	override init() {
		// setup CLLocationManager to get location
		locationManager = CLLocationManager()
