     }
     
     override public var description: String {
-        return "\(type.stringValue()) \(status.stringValue())"
+        return "\(type.description) \(status.description)"
     }
 }
 

        // 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)
        
        return button
    }

    static let requestedForMotion = "askedForMotion"
}

@objc public enum PermissionType: Int, CustomStringConvertible {
    case Contacts, LocationAlways, LocationInUse, Notifications, Microphone, Camera, Photos, Reminders, Events, Bluetooth, Motion
    
    public var description: String {
        switch self {
        case .Contacts: return "Contacts"
        case .Events: return "Events"
