public Server(int numOfPlayers, String filename, int portIn, int portOut) {
		try {
			game = new Game(numOfPlayers, filename);
		}
		catch (NullBoardException nbe) {
			System.out.println("Creating the game failed.");
			return;
		}
		
		System.out.println("Starting server...");
		server = new com.esotericsoftware.kryonet.Server();
		
		Kryo kryo = server.getKryo();
		kryo.register(Request.class); //Unsupported by 1.6 Java - need 1.7
		kryo.register(int[].class);
		kryo.register(String[].class);
		System.out.println("Registered all pertinent classes...");
		
		server.start();
		System.out.println("Server thread is up...");
		
		System.out.println("Binding server to " + portIn + " and " + portOut + "...");
		try {
			server.bind(portIn, portOut);
		}
		catch (IOException e) {
			System.out.println("Server could not bind to the ports.");
			return;
		}
		catch (Exception e) {
			System.out.println("Some sort of error occured which has not yet been implemented.");
			return;
		}
		System.out.println("Server successfully binded to the ports...");
		
		server.addListener(new Listener() {
			public void received(Connection connection, Object object) {
				if (object instanceof Request) {
					addIfNotIn(connection); //TODO Do not need to check this everytime right?
					Request bleh = (Request) object;

					System.out.println("Got something: " + bleh.getRequest());
					allRequests.add(new RequestConnection(bleh, connection));
				}
			}
		});
		
		System.out.println("Server has been started!");
		System.out.println("Your IP Address is " + server.getKryo().toString());
		
		System.out.println("The number of players is " + game.allPlayers.length);
		System.out.println("We have so far " + this.numOfPlayers);
		
		
		/* Setting up names */
		while (this.numOfPlayers != game.allPlayers.length) {
			if (allRequests.isEmpty()) { continue; }
			handleRequest(allRequests.remove());
			//TODO Better memory management
		}
		System.out.println("All players have joined the game...");
		
		System.out.println("Randomizing order...");
		game.randomizeOrder();
		System.out.println("The order is " + game.getOrder());
		game.begin();
		
		System.out.println("Starting the game!");
		startGame();
		
		/* Main function */
		while (!game.done) {
			if (allRequests.isEmpty()) { continue; }
			handleRequest(allRequests.remove());
		}
		
		
		
		
	}