         locationManager?.delegate = self
         locationManager?.requestAlwaysAuthorization()
     }
+    
+    private func statusForLocationInUse() -> StatusType {
+        if !CLLocationManager.locationServicesEnabled() {
+            return .Denied
+        }
+        switch CLLocationManager.authorizationStatus() {
+        case .AuthorizedAlways, .AuthorizedWhenInUse: return .Authorized
+        case .Restricted, .Denied:                    return .Denied
+        case .NotDetermined:                          return .NotDetermined
+        }
+    }
+    
+    private func askLocationInUse(completion: ((RequestStatusCallback) -> ())) {
+        tempBlock = completion
+        locationManager?.delegate = self
+        locationManager?.requestWhenInUseAuthorization()
+    }
+    
+    
+    // MARK: CLLocationManagerDelegate
     
     func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
         if status != .Denied {

            return "calendars_key"
        case .Contacts:
            return "contacts_key"
        case .CoreLocationAlways:
            return "location_always_key"
        case .CoreLocationInUse:
            return "location_inuse_key"
        case .Microphone:
            return "microphone_key"

    
    func status(forType type: PermissionType) -> StatusType {
        switch type {
        case .AssetsLibrary:  return statusForAssetsLibrary()
        case .Camera:         return statusForCamera()
        case .Calendars:      return statusForCalendar()
        case .Contacts:       return statusForContacts()
        case .Microphone:     return statusForMicrophone()
        case .Notifications:  return statusForNotifications()
        case .LocationAlways: return statusForLocationAlways()
        case .LocationInUse:  return statusForLocationInUse()
        default:
            return .NotDetermined
        }
