void readDir(String dirName) {
		filesByCellType = new AutoHashMap<String, ArrayList<String>>(new ArrayList<String>());
		epiMarkByFile = new HashMap<String, String>();

		// Read all files
		int countFiles = 0;
		File dir = new File(dirName);
		for (String file : dir.list()) {
			if (file.indexOf(".bed") > 0) { // Is is a 'bed' file?
				String parts[] = file.split("\\."); // Format: regulatory.CellType.EpigeneticMark.bed[.gz]

				if (parts.length > 2) {
					String cellType = parts[1];
					String epigeneticMark = parts[2];

					if ((this.cellType == null) || this.cellType.equals(cellType)) {
						// Add epigenetic mark to hash
						String filePath = dirName + "/" + file;
						epiMarkByFile.put(filePath, epigeneticMark);

						// Add file to hash
						ArrayList<String> files = filesByCellType.getOrCreate(cellType);
						files.add(filePath);

						countFiles++;
					}
				}
			}
		}

		if (verbose) Timer.showStdErr("Directory has " + countFiles + " bed files and " + filesByCellType.size() + " cell types");
	}