private Receiver(ClientDavParameters parameters, List subscriptionInfos) throws Exception {
		connection = new ClientDavConnection(parameters);
		connection.connect();
		connection.login();
		DataModel dataModel = connection.getDataModel();

		Iterator infoIterator = subscriptionInfos.iterator();
		while(infoIterator.hasNext()) {
			List<SystemObject> objects = new LinkedList<SystemObject>();
			SubscriptionInfo subscriptionInfo = (SubscriptionInfo)infoIterator.next();
			String objectSpec = subscriptionInfo.getObjectSpec();
			objects = ConfigurationHelper.getObjects(objectSpec, dataModel);

			String[] dataSpecs = subscriptionInfo.getSplittedData(":", 3);
			AttributeGroup attributeGroup = dataModel.getAttributeGroup(dataSpecs[0]);
			if(attributeGroup == null) {
				debug.error("Attributgruppe \"" + dataSpecs[0] + "\" existiert nicht.");
				System.exit(1);
			}
			Aspect aspect = dataModel.getAspect(dataSpecs[1]);
			if(aspect == null) {
				debug.error("Aspekt \"" + dataSpecs[1] + "\" existiert nicht.");
				System.exit(1);
			}
			DataDescription dataDescription;
			String simulationVariantText = "";
			if(dataSpecs.length == 3) {
				short simulationVariant = Short.parseShort(dataSpecs[2]);
				simulationVariantText = ":" + simulationVariant;
				dataDescription = new DataDescription(
						attributeGroup, aspect, simulationVariant
				);
			}
			else {
				dataDescription = new DataDescription(attributeGroup, aspect);
			}

			debug.config(
					subscriptionInfo.getOptions() + "-Anmeldung als " + subscriptionInfo.getReceiverRole() + " für " + attributeGroup.getNameOrPidOrId() + ":"
					+ aspect.getNameOrPidOrId() + simulationVariantText
			);
			debug.config(" Objekte: " + objects);

			/* XXX
			 * Work around: Ist die Simulationsvariante -1 (also nicht explizit
			 * über die Aufrufparameter gesetzt), so wird sie durch die
			 * DaV-Applikationsfunktionen automatisch auf 0 gesetzt. Dieses
			 * Verhalten ist unerwünscht und wird hier bis auf weiteres
			 * umgangen.
			 */
			short rescueSimulationVariant = dataDescription.getSimulationVariant();

			connection.subscribeReceiver(
					pmc.getProtocoller(), objects, dataDescription, subscriptionInfo.getOptions(), subscriptionInfo.getReceiverRole()
			);

			/* XXX
			 * Work around (s. o.)
			 */
			dataDescription.setSimulationVariant(rescueSimulationVariant);
		}
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String inputLine = "";
		while(true) {
			inputLine = in.readLine();
			if(inputLine == null) {
				// nicht mehr weiter lesen, aber nicht das Programm terminieren
				break;
			}
			else if(inputLine.startsWith("q")) {
				//Programm kontrolliert terminieren
				System.exit(0);
			}
		}
	}