         // this is a bit of a mess, eh?
         switch type {
         case .LocationAlways, .LocationInUse:
-            button.setTitle("Enable \(type.prettyName())".localized.uppercaseString, forState: UIControlState.Normal)
-        default:
-            button.setTitle("Allow \(type.stringValue())".localized.uppercaseString, forState: UIControlState.Normal)
-        }
-        
-        button.addTarget(self, action: Selector("request\(type.stringValue())"), forControlEvents: UIControlEvents.TouchUpInside)
+            button.setTitle("Enable \(type.prettyName)".localized.uppercaseString, forState: UIControlState.Normal)
+        default:
+            button.setTitle("Allow \(type.description)".localized.uppercaseString, forState: UIControlState.Normal)
+        }
+        
+        button.addTarget(self, action: Selector("request\(type.description)"), forControlEvents: UIControlEvents.TouchUpInside)
         
         return button
     }


}

@objc public enum PermissionDemands: Int {
    case Required, Optional
    
    func stringValue() -> String {
        switch self{
        case .Required: return "Required"
        case .Optional: return "Optional"
        }

            let type = configuredPermissions[index].type
            
            let currentStatus = statusForPermission(type)
            let prettyName = type.prettyName
            if currentStatus == .Authorized {
                setButtonAuthorizedStyle(button)
                button.setTitle("Allowed \(prettyName)".localized.uppercaseString, forState: .Normal)
