public Loggerwhisper(){
		Scanner scanner = new Scanner (System.in);
		System.out.println("Please enter the path to the configration file"); 
		configuration_filename = scanner.next();
		BufferedReader in = null;
		try {
			in = new BufferedReader(new FileReader(configuration_filename));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		// ask user for local name
		System.out.println("Please enter the local name"); 
		localName = scanner.next();

		// parse YAML
		Constructor constructor = new Constructor(Configuration.class);
		TypeDescription carDescription = new TypeDescription(Configuration.class);
		carDescription.putListPropertyType("configuration", Configuration.Host.class);
		carDescription.putListPropertyType("sendRules", Configuration.Rule.class);
		carDescription.putListPropertyType("receiveRules", Configuration.Rule.class);
		constructor.addTypeDescription(carDescription);
		Yaml yamlParser = new Yaml(constructor);
		configuration = (Configuration) yamlParser.load(in);	
		hostnameList = new String[configuration.configuration.size()];
		ArrayList<String> tempArr = new ArrayList<String>();

		//Populate the hostnamelist used for clockfactory
		int i = 0;
		for (Configuration.Host host : configuration.configuration) {
			hostnameList[i] = host.name;
			i++;
			tempArr.add(host.name);
		}
		
		//Types of clock
		option.put("0", Clock.LOGICAL);
        option.put("1", Clock.VECTOR);
		System.out.println("Please enter Type of Clock"); 
		String clocktype = scanner.next();

		clockService = ClockFactory.getClockService(option.get(clocktype), localName, tempArr);
		try {
			mp = new MessagePasser(null,configuration_filename, localName, clockService);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		logclass = new Loggerclass();

		// start background receive thread
		(new Thread(new ReceiveThread(mp))).start();
		
		
	}