public function get(string $path = null)
    {
        if (null === $path)
            return $this->data;
        $keys = explode('.', $path);
        $value = $this->data;
        foreach ($keys as $key) {
            if (!is_array($value) || !array_key_exists($key, $value))
                throw new \Exception("Unable to find a configuration value with path '{$path}'");
            $value = $value[$key];
        }
        return $value;
    }