public synchronized void start() throws Exception {
		if (thread != null) {
			throw new Exception("Process has already started.");
		}
		
		thread = new Thread(new Runnable() {
			@Override
			/** run()
			 * 
			 * The run function of the runnable object within the thread
			 * Runs the process being managed by ProcessManager
			 */
			public void run() {
				try {
					mpw.start();
					mpw.getThread().join();
					isComplete = true;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		thread.start();
	}