public void startServer() {
		
		boolean wasPaired;
		
		try {
			
			// Creates a server socket, bound to the specified port
			this.serverSocket = new ServerSocket(this.port);
			
			// Console
			System.out.println("Listening on " + this.serverSocket);
			
			// Loops forever,
			// listening for client connection requests on server socket
			while (true) {
				
				// Listens for a client connection to be made to this server socket and accepts it
				Socket socket = this.serverSocket.accept();
				
				// Start server thread
				ServerThread serverThread = new ServerThread(this, socket);
				serverThread.start();
				
				// If the server thread was paired with an already existing server thread
				wasPaired = false; // Not paired as default
				
				// Loop through already existing server threads to find unpaired server threads
				for (ServerThread oldServerThread : this.serverThreads) {
					
					// If already existing server thread is not paired
					if (oldServerThread.pairedServerThread == null) {
						
						// Pair new server thread with already existing not paired server thread
						serverThread.pairedServerThread = oldServerThread;
						
						// Pair already existing server thread with new server thread
						// Replaces already existing server thread by removing, editing and adding
						this.serverThreads.remove(oldServerThread);
						oldServerThread.pairedServerThread = serverThread;
						this.serverThreads.add(oldServerThread);
						
						// Inform the old server thread that a client was found
						// The old server thread came first, why he is white
						oldServerThread.outToClient.println("OPPONENT FOUND");
						oldServerThread.outToClient.println("YOU ARE WHITE");
						oldServerThread.outToClient.flush();
						
						// Inform this server thread that it was paired with an old server thread
						serverThread.outToClient.println("OPPONENT FOUND");
						serverThread.outToClient.println("YOU ARE BLACK");
						serverThread.outToClient.flush();
						
					}
					
				}
				
				// Tell the client if it was not paired
				if (!wasPaired) {
					serverThread.outToClient.println("OPPONENT NOT FOUND");
					serverThread.outToClient.flush();
				}
				
				// Store server thread in ArrayList, so we can use it for pairing and connection closing
				this.serverThreads.add(serverThread);
				
			}
		} catch (IOException e) {
			System.err.println("Could not listen on port " + this.port);
			System.exit(1);
		}
	}