public function addRoute($name, array $routeInfo)
    {
        if (!isset($routeInfo['route']) || !isset($routeInfo['definitions'])) {
            $errMsg = 'Not found required configs for router. Maybe miss "route" or "definitions"';
            throw new Exception\InvalidArgumentException($errMsg);
        }

        $route = $this->add($routeInfo['route'], $routeInfo['definitions']);
        $route->setName($name);

        if (isset($routeInfo['convertions'])) {
            $this->setConvertions($route, $routeInfo['convertions']);
        }

        if (isset($routeInfo['before_match'])) {
            $this->setBeforeMatch($route, $routeInfo['before_match']);
        }

        if (isset($routeInfo['host_name'])) {
            $route->setHostname($routeInfo['host_name']);
        }

        if (isset($routeInfo['methods'])) {
            $this->setHttpMethods($route, $routeInfo['methods']);
        }
    }