@Override
    public void run() {
      try {
        log.config("Configuration.browser=" + browser);
        log.config("Configuration.remote=" + remote);
        log.config("Configuration.startMaximized=" + startMaximized);

        webdriver =
            remote != null
                ? createRemoteDriver(remote, browser)
                : CHROME.equalsIgnoreCase(browser)
                    ? createChromeDriver()
                    : isFirefox()
                        ? createFirefoxDriver()
                        : isHtmlUnit()
                            ? createHtmlUnitDriver()
                            : isIE()
                                ? createInternetExplorerDriver()
                                : isPhantomjs()
                                    ? createPhantomJsDriver()
                                    : isOpera()
                                        ? createOperaDriver()
                                        : isSafari()
                                            ? createSafariDriver()
                                            : createInstanceOf(browser);
      } catch (Exception e) {
        log.log(SEVERE, "Failed to create webdriver", e);
      }
    }
    @Override
    public void setSystemProperty(Configuration configInstance, Capabilities capabilities) {
      String brofserName = capabilities.getBrowserName();

      if (DesiredCapabilities.chrome().getBrowserName().equals(brofserName))
        CHROME.setSystemProperty(configInstance);
      if (DesiredCapabilities.internetExplorer().getBrowserName().equals(brofserName))
        INTERNETEXPLORER.setSystemProperty(configInstance);
      if (DesiredCapabilities.phantomjs().getBrowserName().equals(brofserName))
        PHANTOMJS.setSystemProperty(configInstance);
    }