public CreatureBuilder(ActionBuilder actionBuilder) {
		fileParser = new FileParser(KEYS);
		this.actionBuilder = actionBuilder;
		List<File> files = FileUtils.getFiles(getCreaturesDirectory());
		for (File file : files) {
			try {
				Creature creature = buildCreature((FileUtils.readFile(file)));
				String missingKey = FileValidator.isValid(creature, REQUIRED_KEYS);
				if (missingKey == null) {
					attachActions(creature);
					allCreatures.add(creature);
				} else {
					System.out.println("Creature file " + file.getName() + " missing key "
							+ missingKey + ". Failed to create object");
				}
			} catch (IOException | NoSuchMethodException | SecurityException
					| IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
				e.printStackTrace();
			}
		}

		for (Creature creature : allCreatures) {
			if (creature.getDifficulty().equals(Difficulty.EASY)) {
				easyCreatures.add(creature);
			}
			if (creature.getDifficulty().equals(Difficulty.MEDIUM)) {
				mediumCreatures.add(creature);
			}
			if (creature.getDifficulty().equals(Difficulty.HARD)) {
				hardCreatures.add(creature);
			}
			if (creature.getDifficulty().equals(Difficulty.DANGEROUS)) {
				dangerousCreatures.add(creature);
			}
		}

	}