private static void formatDebateTurns() throws Exception {
        if (verbose) {
            System.out.println("Formatting turns with NOMINATE reponses and labels ...");
        }

        String folder = cmd.getOptionValue("folder");
        String processedFolder = cmd.getOptionValue("processed-folder");
        int congressNo = CLIUtils.getIntegerArgument(cmd, "congress", 109); // default
        String outputFolder = cmd.getOptionValue("format-folder");
        IOUtils.createFolder(outputFolder);

        GTProcessor proc = new GTProcessor(folder, congressNo);
        proc.setVerbose(verbose);

        // load legislators
        HashMap<String, GTLegislator> legislators = proc.inputLegislators(
                new File(processedFolder, "legislators.txt").getAbsolutePath());

        // load debates
        File debateFolder = new File(processedFolder, DEBATE_FOLDER);
        ArrayList<GTDebate> debates = proc.inputDebates(debateFolder);

        ArrayList<String> docIds = new ArrayList<String>();
        ArrayList<String> docTexts = new ArrayList<String>();
        ArrayList<Double> docResponses = new ArrayList<Double>();
        ArrayList<String> docInfo = new ArrayList<String>();
        for (GTDebate debate : debates) {
            int turnCount = -1;
            for (GTTurn turn : debate.getTurns()) {
                turnCount++;

                String speaker = turn.getSpeakerId();
                GTLegislator legislator = legislators.get(speaker);
                // skipping speakers without NOMINATE score
                if (legislator == null) {
                    continue;
                }
                if (!legislator.hasProperty(GTProcessor.NOMINATE_SCORE1)) {
                    System.out.println(legislator.toString() + " does not have NOMINATE score");
                    continue;
                }

                GTRoll roll = debate.getAssociatedRoll();

                String id = debate.getId() + "_" + turnCount;
                String text = turn.getText();
                double response = Double.parseDouble(legislator.getProperty(GTProcessor.NOMINATE_SCORE1));

                docIds.add(id);
                docTexts.add(text);
                docResponses.add(response);

                docInfo.add(debate.getId() + "_" + turnCount + "\t"
                        + speaker + "\t"
                        + legislator.getParty() + "\t"
                        + roll.getVote(legislator.getId()) + "\t"
                        + legislator.getProperty(GTProcessor.NOMINATE_SCORE1) + "\t"
                        + roll.getBillId() + "\t"
                        + roll.getTitle());
            }
        }

        // output
        if (verbose) {
            System.out.println("\nOutputing format data to " + outputFolder);
        }
        BufferedWriter writer;
        // 1. output main texts
        File textFolder = new File(outputFolder, "texts");
        IOUtils.createFolder(textFolder);
        for (int ii = 0; ii < docIds.size(); ii++) {
            writer = IOUtils.getBufferedWriter(new File(textFolder, docIds.get(ii) + ".txt"));
            writer.write(docTexts.get(ii));
            writer.close();
        }

        // 2. output responses
        writer = IOUtils.getBufferedWriter(new File(outputFolder, "responses.txt"));
        for (int ii = 0; ii < docIds.size(); ii++) {
            writer.write(docIds.get(ii) + "\t" + docResponses.get(ii) + "\n");
        }
        writer.close();

        // 3. output info
        writer = IOUtils.getBufferedWriter(new File(outputFolder, "info.txt"));
        for (int ii = 0; ii < docIds.size(); ii++) {
            writer.write(docIds.get(ii) + "\t" + docInfo.get(ii) + "\n");
        }
        writer.close();
    }