@Override
  protected List<AlignmentFile> getAlignmentFiles(int currentIter) {

    // sort input file alphabetically to look nicer
    File inputDirectory = new File(this.inputDirectory);
    File[] listOfFiles = inputDirectory.listFiles();
    Arrays.sort(listOfFiles, new NaturalOrderFilenameComparator());
    List<AlignmentFile> alignmentDataList = new ArrayList<AlignmentFile>();
    List<Feature> allFeatures = new ArrayList<Feature>();

    // load feature data
    for (int i = 0; i < listOfFiles.length; i++) {

      if (listOfFiles[i].isFile()) {

        File myFile = listOfFiles[i];
        String filename = myFile.getName();
        String path = myFile.getPath();
        String extension = filename.substring(filename.lastIndexOf('.') + 1);

        // ignore other crap files in the directory
        if (!"txt".equals(extension)) {
          continue;
        }

        List<Feature> features = new ArrayList<Feature>();
        try {
          features = this.loadFeatures(path);
        } catch (ValidityException e) {
          e.printStackTrace();
        } catch (ParsingException e) {
          e.printStackTrace();
        } catch (IOException e) {
          e.printStackTrace();
        }
        AlignmentFile alignmentData = new AlignmentFile(i, myFile, features);
        if (verbose) {
          System.out.println(
              "Load " + filename + " with " + alignmentData.getFeaturesCount() + " features");
        }
        alignmentDataList.add(alignmentData);
        allFeatures.addAll(alignmentData.getFeatures());
      }
    }

    this.alignmentFiles = alignmentDataList;
    return alignmentDataList;
  }