public ControlImpl(String prefix) {
		this.name = prefix;
		this.pid = Configuration.lookupPid(Configuration.getString(prefix + "."
				+ ControlImpl.PROTOCOL));
		if (Configuration.contains(prefix + "." + ControlImpl.PAR_INIT_STEP)) {
			this.initStep = Configuration.getInt(prefix + "." + ControlImpl.PAR_INIT_STEP);
			if (this.initStep < 0)
				throw new InvalidParameterException(ControlImpl.PAR_DO_EVERY
						+ " cannot be smaller than zero!");
		} else {
			this.initStep = 0;
		}
		if (Configuration.contains(prefix + "." + ControlImpl.PAR_DO_EVERY)) {
			this.doEvery = Configuration.getInt(prefix + "." + ControlImpl.PAR_DO_EVERY);
			if (this.doEvery < 1)
				throw new InvalidParameterException(ControlImpl.PAR_DO_EVERY
						+ " cannot be smaller than 1!");
		} else {
			this.doEvery = 1;
		}
		this.currentIt = this.doEvery - 1;
		if (Configuration.contains(prefix + "." + ControlImpl.PAR_FINAL_STEP)) {
			this.finalStep = Configuration.getInt(prefix + "." + ControlImpl.PAR_FINAL_STEP);
		} else {
			this.finalStep = -1;
		}

		this.filename = prefix;
		if (Configuration.contains(prefix + "." + ControlImpl.PAR_FILENAME)) {
			this.filename = Configuration.getString(prefix + "." + ControlImpl.PAR_FILENAME);
		}
		try {
			this.ps = new PrintStream(this.filename);
		} catch (FileNotFoundException e) {
			this.ps = System.out;
			System.err.println(this.name + ": could not set write to file:" + this.filename
					+ " Writing to system.out instead.");
		}
		if (GlobalConfig.getDetail()) {
			try {
				this.psDetail = new PrintStream(this.filename + ".detail");
			} catch (FileNotFoundException e) {
				this.psDetail = System.out;
				System.err.println(this.name + ": could not set write to file:" + this.filename
						+ " Writing to system.out instead.");
			}
		}
	}