     }
     
     func requestBluetooth() {
+        
+        switch statusBluetooth() {
+        case .Disabled:
+            showDisabledAlert(.Bluetooth)
+        case .Unauthorized:
+            showDeniedAlert(.Bluetooth)
+        case .Unknown:
+            triggerBluetoothStatusUpdate()
+        default:
+            break
+        }
+        
+    }
+    
+    private func triggerBluetoothStatusUpdate() {
+        NSUserDefaults.standardUserDefaults().setBool(true, forKey: PermissionScopeConstants.requestedForBluetooth)
+        NSUserDefaults.standardUserDefaults().synchronize()
         bluetoothManager.startAdvertising(nil)
         bluetoothManager.stopAdvertising()
-        NSUserDefaults.standardUserDefaults().setBool(true, forKey: kAskedForBluetoothString)
     }
     
     // MARK: finally, displaying the panel


struct PermissionScopeConstants {
    static let requestedInUseToAlwaysUpgrade = "requestedInUseToAlwaysUpgrade"
}

public enum PermissionType: String {

        }
    }
    
    
    public func statusBluetooth() -> PermissionStatus{
        let askedBluetooth = NSUserDefaults.standardUserDefaults().boolForKey(PermissionScopeConstants.requestedForBluetooth)
        
        // if already asked for bluetooth before, do a request to get status, else wait for user to request
        if askedBluetooth{
            triggerBluetoothStatusUpdate()
        } else {
            return .Unknown
        }
