 class PorkHandler: NSObject {
     private(set) weak var eventHandler: PorkEventHandler?
 
-    private let PorkLimit = 20
-    private var isRunning = false
+    private let PorkLimit      = 20
+    private var isRunning      = false
+    private var plistValidator = PlistKeysChecker()
 
     private let locationManager: CLLocationManager
     private let porkRegions    : [PorkRegion]
     private var handledBeacons : [String : Pork] = [:]
 
     init(porkRegions: [PorkRegion], porkEventHandler: PorkEventHandler? = nil) throws {
+
 
         self.porkRegions = porkRegions
         eventHandler = porkEventHandler


enum PorkHandlerErrors: ErrorType {
    case TooManyRegions(message: String)
    case MissingKeysInPlisFile(keys:[String])
}

protocol PorkEventHandler: class { // 💩

        }
    }

    func requestForLocationManagerAuthorization() {

        switch self.plistValidator.validationResult {

            case .AllwaysAndWhenInUse?, .Allways? :
                self.locationManager .requestAlwaysAuthorization()

            case .WhenInUse?:
                self.locationManager.requestWhenInUseAuthorization()

            default:
                break;
        }
    }
}

extension PorkHandler: CLLocationManagerDelegate {

    func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {

        switch status {

            case .AuthorizedAlways, .AuthorizedWhenInUse :
                try! start()
                self.locationManager .startUpdatingLocation()

            case .NotDetermined:
                requestForLocationManagerAuthorization()

            default:
                break
        }
    }

