public static void main(String[] args) {
		if (args.length < 1) {
			System.err.println("Must at least provide filename to load");
			return;
		}

		File loadFile = new File(args[args.length-1]);

		AbstractTuringMachine machine = null;
		try {
			machine = IOController.loadTuringMachine(loadFile);
		} catch (ClassNotFoundException | IOException e) {
			System.err.println("Error loading machine from file");
		}

		Simulation simulation = new Simulation(machine, machine.createStartConfiguration());

		if (machine.type() == Type.SIMPLE) {
			printSimpleConfiguration((SimpleConfiguration)simulation.getConfiguration());
			while (!simulation.isFinished()) {
				simulation.forward(1);
				System.out.println(simulation.getCurrentStep() + ")");
				printSimpleConfiguration((SimpleConfiguration)simulation.getConfiguration());
			}
		} else if (machine.type() == Type.MULTIPLE_STRING) {
			printMultipleStringConfiguration((MultipleStringConfiguration)simulation.getConfiguration());
			while (!simulation.isFinished()) {
				simulation.forward(1);
				System.out.println(simulation.getCurrentStep() + ")");
				printMultipleStringConfiguration((MultipleStringConfiguration)simulation.getConfiguration());
			}
		} else {
			System.err.println("Error: unrecognized Machine Type");
		}
	}