public function build()
    {
        $capabilities = $this->makeCapabilities($this->type, $this->extraCapabilities);

        $this->remoteWebDriver = RemoteWebDriver::create(
            $this->url,
            $capabilities,
            $this->connectionTimeout,
            $this->requestTimeout
        );

        // define web driver configurations before being decorated
        if ($this->implicitTimeout > 0) {
            $this->remoteWebDriver->manage()->timeouts()->implicitlyWait($this->implicitTimeout);
        }

        // translator
        $baseUrlId = UrlTranslator::BASE_URL_IDENTIFIER;
        $baseUrl = array_key_exists($baseUrlId, $this->urls) ? $this->urls[$baseUrlId] : null;
        $this->urlTranslator = new UrlTranslator($this->urls, $baseUrl);

        return $this;
    }