public function load($configurationFile = null)
    {
        $this->hosts = array();
        $this->configuration = array();

        if (isset($configurationFile)) {
            $this->configurationFile = $configurationFile;
        }

        if (file_exists($this->configurationFile) === false) {
            throw new InvalidArgumentException(sprintf('The configuration file "%s" is not valid.', $this->configurationFile));
        }

        $json = file_get_contents($this->configurationFile);

        $this->validateSyntax($json);

        $json = $this->importExtendedConfiguration($json);
        if ($this->validateSchema($json)) {
            $this->configuration = json_decode($json, true);
        }

        $this->processEventSubscribers();
    }