public static void main(String[] args) {
        try {
            // create the command line parser
            parser = new BasicParser();

            // create the Options
            options = new Options();

            addOption("folder", "Folder to store downloaded data");
            addOption("congress", "Congress number");
            addOption("type", "Download type");
            addOption("year", "Year");
            addOption("congress-type", "Congress type: house or senate");

            options.addOption("help", false, "Help");

            cmd = parser.parse(options, args);
            if (cmd.hasOption("help")) {
                CLIUtils.printHelp("java -cp 'dist/gtcrawler.jar' main.Downloader -help", options);
                return;
            }

            String type = CLIUtils.getStringArgument(cmd, "type", "fw-score");
            
            if (type.equals("all")) {
                download();
            } else if (type.equals("external")) {
                downloadExternalResources();
            } else if (type.equals("bill-text")) {
                downloadBillTexts();
            } else if (type.equals("bill-html")) {
                downloadBillTextInHtmls();
            } else if (type.equals("fw-score")) {
                downloadFreedomWorksScores();
            } else {
                throw new RuntimeException("Download type " + type + " is not supported");
            }
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException();
        }
    }