public MClientCmdListener(String analyticsServerRef, String billingServerRef, ExecutorService mClientExecutionService) {
		this.analyticsServerRef = analyticsServerRef;
		this.billingServerRef = billingServerRef;
		this.mClientExecutionService = mClientExecutionService;
		
		// create EventListener Remote Object
		try {
			eventListener = new EventListener_Impl();
		} catch (RemoteException e1) {
			logger.error("EventListener Remote Exception");
		}
		
		readProperties();
		try {
			registry = LocateRegistry.getRegistry(registryHost, registryPort);
		} catch (RemoteException e1) {
			System.out.println("Couldn't find Registry!");
		}

		try {
			mClientHandler = (MClientHandler_RO) registry.lookup(analyticsServerRef);
		} catch (AccessException e1) {
			logger.error("Access to the registry denied");
		} catch (RemoteException e1) {
			System.out.println("Remote Objects from the Analytics Server cannot be found. For further usage please "
					+ "contact the support team and restart the client!");
		} catch (NotBoundException e1) {
			logger.error("Analytic Server not bound");
		}

		try {
			billingServer = (BillingServer_RO) registry.lookup(billingServerRef);
		} catch (AccessException e1) {
			logger.error("Access to the registry denied");
		} catch (RemoteException e1) {
			System.out.println("Remote Objects from the Billing Server cannot be found. For further usage please "
					+ "contact the support team and restart the client!");
		} catch (NotBoundException e1) {
			logger.error("Billing Server not bound");

		}
	}