public void go(){
		try {
			
			/*Execute the recognizer on a seperate thread and wait for response*/
			this.recognizerFuture = exs.submit(recognizer);
			this.utterance = recognizerFuture.get()[0];
			
			/*Parse confidence as double*/
			this.confidence = Double.parseDouble(recognizerFuture.get()[1]);

			/*If we are below 70 percent, we respond that we could not hear correctly*/
			if (confidence < 0.700){
				this.synthesizer.setAnswer("I'm Sorry. I Am Not Sure I Hear You Correctly");
				this.openURL = "";
			}
			
			/*If we are confident about the result we select a module and run it*/
			else{
				int ModuleNo = getModuleNumber(this.utterance);
				if (ModuleNo<0){
					voice = "Invalid Input.";
					openURL = "";
				}
				else{
					IrisModule SelectedModule = Modules.get(ModuleNo);
					SelectedModule.setUtterance(utterance);
					Future<String[]> AnswerFuture = exs.submit(SelectedModule);
					
					/* All Iris Modules return a String Array
					 * The First string is the answer to be synthesize
					 * The second a browser url to be opend
					 * */
					this.Answer = AnswerFuture.get();
					this.voice = Answer[0]; 
					this.openURL = Answer[1]; 
				}
			}

			boolean voiceOut=false;
			boolean browserOut=false;

			
			/* We run the synthesizer and / or browser opener if necessary */
			if(voice != null && !voice.equals("")){
				this.synthesizer.setAnswer(voice);
				this.synthesizerFuture = this.exs.submit(synthesizer);
				voiceOut=true;
			}

			if(openURL != null && !openURL.equals("")){ 
				this.browser.setBrowserURL(openURL);
				this.browserFuture = this.exs.submit(this.browser);
				browserOut=true;
			}

			/*Wait for execution to be completed*/
			if(voiceOut){
				this.synthesizerFuture.get();
			}

			if(browserOut){
				this.browserFuture.get();
			}


		} 
		catch (Exception ee){
			ee.printStackTrace();
			exit();
		}
	}