protected void processInput(String userInput) {
		if (userInput.equals("!end")) {
			exit = true;
			try {
				stdIn.close();
			} catch (IOException e) {
				logger.error("coulden't get inputstream");
			}

			// propper shutdown of the ExecutorService
			Main_Client.clientExecutionService.shutdown(); // Disable new tasks
															// from being
															// submitted
			try {
				// Wait a while for existing tasks to terminate
				if (!Main_Client.clientExecutionService.awaitTermination(3,
						TimeUnit.SECONDS)) {
					Main_Client.clientExecutionService.shutdownNow(); // Cancel
																		// currently
																		// executing
																		// tasks
					// Wait a while for tasks to respond to being cancelled
					if (!Main_Client.clientExecutionService.awaitTermination(3,
							TimeUnit.SECONDS))
						System.err.println("Pool did not terminate");
				}
			} catch (InterruptedException ie) {
				// (Re-)Cancel if current thread also interrupted
				Main_Client.clientExecutionService.shutdownNow();
				// Preserve interrupt status
				Thread.currentThread().interrupt();
			}

			client.shutdown();
			exit = true;
		} else {
			String[] commandArray = userInput.split(" ");
			if (commandArray[0].equals("!login")) {
				userInput += " " + udpPort;
				/*
				try {
					UDPSocket.username = commandArray[1];
				} catch (ArrayIndexOutOfBoundsException e) {

				}*/

			}
			logger.debug("sending TCP- message: " + userInput);
			out.println(userInput);
			out.flush();
		}
		
	}