private static void executeArgumentsGroup(CLIArgumentsGroup argumentsGroup) {

    /* load configuration file */

    Configuration config = new BaseConfiguration();

    if (argumentsGroup.getRepresentative().isConfig()) {
      try {
        config = new PropertiesConfiguration(argumentsGroup.getRepresentative().getConfig());
      } catch (ConfigurationException e) {
        System.err.println("could not read config, ignoring it: ");
        System.err.println(e);
      }
    }

    /* run selected mode */

    ProgramMode programMode = CLIArgumentsUtil.getProgramMode(argumentsGroup.getRepresentative());

    switch (programMode) {
      case HELP:
        System.out.println(
            CliFactory.createCli(CLIArguments.class).getHelpMessage()
                + "\n\nFor more information, see "
                + GlobalValues.WIKI_URI);
        break;

      case VERSION:
        System.out.println("OSM2World " + VERSION_STRING);
        break;

      case GUI:
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
          System.out.println("Error setting native look and feel: " + e);
        }
        new ViewerFrame(new Data(), new MessageManager(), new RenderOptions(), config)
            .setVisible(true);
        break;

      case CONVERT:
        try {
          Output.output(config, argumentsGroup);
        } catch (IOException e) {
          e.printStackTrace();
        }
        break;
    }
  }