             self.view.setNeedsLayout()
         })
 
+        var success = true
+        for result in getResultsForConfig() {
+            if result.status != .Authorized {
+                success = false
+            }
+        }
+
         // compile the results and pass them back if necessary
         let results = getResultsForConfig()
         if let authChangeClosure = authChangeClosure {
-            authChangeClosure(results)
+            authChangeClosure(success, results)
         }
 
         // and hide if we've sucessfully got all permissions
-        var permissionMissing = false
-        for result in getResultsForConfig() {
-            if result.status != .Authorized {
-                permissionMissing = true
-            }
-        }
-
-        if !permissionMissing {
+        if success {
             self.hide()
         }
     }

    var configuredPermissions: [PermissionConfig] = []
    var permissionButtons: [UIButton] = []
    var permissionLabels: [UILabel] = []
    var authChangeClosure: (([PermissionResult]) -> Void)? = nil
    var cancelClosure: (() -> Void)? = nil

    public override init() {


    // MARK: finally, displaying the panel

    public func show(authChange: ((success: Bool, results: [PermissionResult]) -> Void)? = nil, cancelled: (() -> Void)? = nil) {
        assert(configuredPermissions.count > 0, "Please add at least one permission")

        authChangeClosure = authChange
        cancelClosure = cancelled

        var success = true
        let results = getResultsForConfig()
        for result in results {
            if result.status != .Authorized {
                success = false
            }
        }

        // no missing perms? callback and do nothing
        if success {
            if let authChangeClosure = authChangeClosure {
                authChangeClosure(success, results)
            }

            return
        }

