public synchronized void start() throws Exception {
		if (thread != null) {
			throw new Exception("ProcessRunner already started.");
		}
			
		thread = new Thread(new Runnable() {
			@Override
			/** run()
			 * 
			 * The run function of the runnable object within the thread
			 * Checks to see if any ProcessChildren have completed or terminated
			 */
			public void run() {
				running = true;
				while(running) {
					for (int i = 0; i < processes.size(); i++) {
						ProcessChild cur = processes.get(i);
						if (cur !=null) {
							if (cur.isTerminated()) {
								processes.remove(i);
							} else if (cur.isComplete()) {
								System.out.print("\n" + cur.getMPW().getName() + " has terminated\n==> ");
								processes.remove(i);
							}
						}
					}
				}
			}
		});
		
		thread.start();
	}