             topController.present(alert, animated: true, completion: nil)
         }
     }
+    
+    internal func managePermission(status: ArekPermissionStatus, completion: @escaping ArekPermissionResponse) {
+        switch status {
+        case .NotDetermined:
+            self.manageInitialPopup(completion: completion)
+            NSLog("⁉️Current Permission NotDetermined")
+            break
+        case .Denied:
+            self.presentReEnablePopup()
+            NSLog("⛔️Current Permission Denied")
+            return completion(.Denied)
+        case .Authorized:
+            NSLog("✅Current Permission Authorized")
+            return completion(.Authorized)
+        }
+    }
 }

        }
    }
    
    internal func presentReEnablePopup(title: String, message: String) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
        
        let allow = UIAlertAction(title: "Allow", style: .default) { (action) in

typealias ArekPermissionResponse = (ArekPermissionStatus) -> Void

protocol ArekPermissionProtocol {
    var identifier: String { get }
    
    // MARK: Logic
    func status(completion: @escaping ArekPermissionResponse)
    func manage(completion: @escaping ArekPermissionResponse)
    func askForPermission(completion: @escaping ArekPermissionResponse)
}

class ArekBasePermission {
    var configuration: ArekConfiguration
    var initialPopupData: ArekPopupData
    var reEnablePopupData: ArekPopupData
    var permission: ArekPermissionProtocol!
    
    init() {
        self.configuration = ArekConfiguration(frequency: .OnceADay, presentInitialPopup:
            true, presentReEnablePopup: true)
        
        self.initialPopupData = ArekPopupData()
        self.reEnablePopupData = ArekPopupData()
    }
    
    required init(configuration: ArekConfiguration, initialPopupData: ArekPopupData, reEnablePopupData: ArekPopupData) {
        self.configuration = configuration
        self.initialPopupData = initialPopupData
        self.reEnablePopupData = reEnablePopupData
    }
    
    internal func manageInitialPopup(completion: @escaping ArekPermissionResponse) {
        if self.configuration.presentInitialPopup {
            self.presentInitialPopup(title: self.initialPopupData.title, message: self.initialPopupData.message, completion: completion)
        } else {
            self.permission.status(completion: completion)
        }
    }
    
    private func presentInitialPopup(title: String, message: String, completion: @escaping ArekPermissionResponse) {
        let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
        
        let allow = UIAlertAction(title: "Enable", style: .default) { (action) in
