private void handleMessage(String[] message, InetAddress clientName) {
		if (this.shutdown) {
			sendShutdownToClient(clientName.getCanonicalHostName());
		}

		switch(Status.valueOf(message[0])){
			case PING:
				System.out.println("Ping received from: " + clientName.getCanonicalHostName());
				break;
				
			case COMPLETE:
				// if failed to find a password
				if (message[2].length() == 0){
					System.out.println("Client has finished processing job");

					if (this.debug)
						System.out.println("Client reports these guesses: " + parseResult(message[3]));

					sendNextCommand(clientName, message[1]);
				}
				// password found
				else{
					System.out.println("Client found the password. Stopping all clients");

					this.crackedPassword = message[2];
					this.shutdown = true;
					System.out.println("Password=" + this.crackedPassword);
					sendShutdownToClient(clientName.getCanonicalHostName());
				}
					
				break;
				
			case ACTIVE:
				System.out.println("Client is Ready");
				sendNextCommand(clientName, message[1]);
				break;
				
			default:
				System.err.println("Server does not understand this status");
				
		}
	}