 
     // MARK: finally, displaying the panel
 
-    public func show(authChange: (([PermissionResult]) -> Void)? = nil, cancelled: (() -> Void)? = nil) {
+    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 permissionMissing = false
-        for result in getResultsForConfig() {
+        var success = true
+        let results = getResultsForConfig()
+        for result in results {
             if result.status != .Authorized {
-                permissionMissing = true
-            }
-        }
-
-        // no missing perms? do nothing
-        if !permissionMissing {
+                success = false
+            }
+        }
+
+        // no missing perms? callback and do nothing
+        if success {
+            if let authChangeClosure = authChangeClosure {
+                authChangeClosure(success, results)
+            }
+
             return
         }
 

            self.view.setNeedsLayout()
        })

        // compile the results and pass them back if necessary
        let results = getResultsForConfig()
        if let authChangeClosure = authChangeClosure {
            authChangeClosure(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 {
            self.hide()
        }
    }

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

    public override init() {
