             return AVAudioSession.sharedInstance().recordPermission() == .Granted
         case .Contacts:
             return ABAddressBookGetAuthorizationStatus() == .Authorized
+        case .Reminders:
+            return EKEventStore.authorizationStatusForEntityType(.Reminder) == .Authorized
+        case .Calendar:
+            return EKEventStore.authorizationStatusForEntityType(.Event) == .Authorized
         case .Location(let usage):
             switch usage {
             case .WhenInUse:

            return AVAudioSession.sharedInstance().recordPermission() == .Undetermined
        case .Contacts:
            return ABAddressBookGetAuthorizationStatus() == .NotDetermined
        case .Location:
            return CLLocationManager.authorizationStatus() == .NotDetermined
        }


    case .Contacts:
        proposeToAccessContacts(agreed: successAction, rejected: failureAction)

    case .Reminders:
        proposeToAccessEventForEntityType(.Reminder, agreed: successAction, rejected: failureAction)

    case .Calendar:
        proposeToAccessEventForEntityType(.Event, agreed: successAction, rejected: failureAction)

    case .Location(let usage):
        proposeToAccessLocation(usage, agreed: successAction, rejected: failureAction)
