@Override
	public void reset(Map<String, Parameter> parameters) throws ManagementException {

		// get the start config and check its type
		ParameterList start;
		Parameter start1 = parameters.get("start");
		if (start1 != null) {
			if (start1 instanceof ParameterList) {
				start = (ParameterList) start1;
			} else if (start1 instanceof Identifier) {
				try {
					start = readNumbersFromFile(((Identifier) start1).getValue());
				} catch (FileNotFoundException e) {
					throw new ManagementException("failed to read initial configuration from file " + start1, e);
				}
			} else {
				throw new IllegalArgumentException(
						"expected a list or a filename for initializing the blocks configuration but found " + start1);
			}
		} else {
			// no start info, use default world with 8 blocks on table.
			start = new ParameterList();
			for (int n = 0; n < 8; n++) {
				start.add(new Numeral(0));
			}
		}

		// convert to list of integers.
		List<Integer> startlist = new ArrayList<Integer>();
		for (Parameter n : start) {
			if (!(n instanceof Numeral)) {
				throw new IllegalArgumentException("List should contain only numbers but found " + n);
			}
			startlist.add(((Numeral) n).getValue().intValue());
		}

		if (model == null) {
			model = new BlocksWorldModel(startlist);
		} else {
			model.reset(startlist);
		}

		setState(EnvironmentState.PAUSED);
	}