public function get($key = null)
    {
        if ($key === null) {
            return $this->config;
        } else {
            $keys = (strpos($key, ' ') !== false) ? explode(' ', $key) : [$key];

            $value = $this->config;

            foreach ($keys as $key) {
                if (!array_key_exists($key, $value)) {
                    throw new \Exception(sprintf('No such key `%s` in array `%s`', $key, $keys));
                }

                $value = $value[$key];
            }

            return $value;
        }
    }