public synchronized void start() throws Exception {
		if (thread != null) {
			throw new Exception("Process has already started.");
		}
		
		thread = new Thread(mp);
		
		if (hasStarted == false) {
			thread.start();
			hasStarted = true;
		} else {
			mp.run();
		}
	}