public void removeConnection(ServerThread serverThread) {
		
		// The thread owns the intrinsic lock
		synchronized(this.serverThreads) { // Synchronized statement
			
			// Console
			System.out.println("Removing connection to " + serverThread);
			
			// Close server thread's socket
			try {
				serverThread.socket.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			
			// Also close the paired server thread
			if (serverThread.pairedServerThread != null) {
				
				// Tell client that his opponent left
				serverThread.pairedServerThread.outToClient.println("OPPONENT LEFT GAME");
				serverThread.pairedServerThread.outToClient.flush();
				
				// Close paired server thread
				try {
					serverThread.pairedServerThread.socket.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
				
				// Remove and forget about the closed paired server thread
				this.serverThreads.remove(serverThread.pairedServerThread);
				
				// Remove pairing
				serverThread.pairedServerThread = null;
				
			}
			
			// Remove and forget about the closed server thread
			this.serverThreads.remove(serverThread);
			
		}
		System.out.println(this.serverThreads.size() + " connections left.");
	}