 
     // internal state and resolution
     var configuredPermissions: [PermissionConfig] = []
+    var permissionButtons: [UIButton] = []
+    var permissionLabels: [UILabel] = []
     var authChangeClosure: (([PermissionResult]) -> Void)? = nil
     var cancelClosure: (() -> Void)? = nil
 

        case .Contacts:
            button.setTitle("Allow Contacts".uppercaseString, forState: UIControlState.Normal)
        case .LocationAlways:
            switch statusLocationAlways() {
            case .Authorized:
                setButtonAuthorizedStyle(button)
                button.setTitle("Got Location".uppercaseString, forState: UIControlState.Normal)
            default:
                button.setTitle("Enable Location".uppercaseString, forState: UIControlState.Normal)
                button.addTarget(self, action: Selector("requestLocationAlways"), forControlEvents: UIControlEvents.TouchUpInside)
            }
        case .LocationInUse:
            switch statusLocationInUse() {
            case .Authorized:

    }

    func detectAndCallback() {
        self.view.setNeedsLayout()

        if let authChangeClosure = authChangeClosure {
            var resultStatuses: [PermissionResult] = []
