public void connect() {
		// STEP 1 - CONNECT ALL UNCONNECTED
		// NEIGHBOURS------------------------------------------------
		// picks random room based on index from 0 to times*times(nb. of rooms)
		Random rand = new Random();
		int currentRoom = rand.nextInt(roomBase * roomBase);

		// the starting room for the player
		setStartRoom(currentRoom);

		rooms.get(currentRoom).setConnected(true);
		boolean found = false;
		int index = 0;

		boolean allC = checkConnected(rooms);

		// find and check the room's neighbours
		ArrayList<Room> neighbours = findNs(currentRoom); // could just store ID
															// less memory -
															// search needed,
															// lazy and not much
															// difference
		boolean nC = checkConnected(neighbours);

		// while there are unconnected neighbours
		while (!nC) {

			System.out.println("Current room: " + currentRoom);
			index = 0;

			// while no unconnected neighbour at index
			while (found == false) {
				// pick random neighbour
				index = rand.nextInt(neighbours.size());
				if (!neighbours.get(index).isConnected()) {
					System.out.println("Neighbor to connect: "
							+ neighbours.get(index).getID());
					found = true;
				}
			}

			System.out.println("\n" + nC);
			rooms.get(currentRoom).addConnection(neighbours.get(index)); // connect
																			// the
																			// random
																			// unconnected
																			// neighbor
																			// to
																			// this
																			// room

			currentRoom = neighbours.get(index).getID();
			rooms.get(currentRoom).setConnected(true);
			found = false;
			neighbours = findNs(currentRoom);
			nC = checkConnected(neighbours);
		}
		System.out
				.println("\n" + nC + " - all unconnected neighbors connected");

		// STEP 1
		// FINISHED--------------------------------------------------------------------------------

		// STEP 2 CONNECT ALL UNCONNECTED ROOMS TO A RANDOM CONNECTED
		// NEIGHBOUR---------------------------
		// reset for second search
		found = false;
		index = 0;
		allC = checkConnected(rooms);

		while (!allC) {
			// find a random unconnected room
			do {
				// System.out.println("Checking for unconnected room");
				currentRoom = rand.nextInt(rooms.size());
			} while (rooms.get(currentRoom).isConnected() == true
					|| hasConnectedNs(findNs(currentRoom)) == false);

			// and find its neighbours
			neighbours = findNs(currentRoom);

			System.out.println("Current room: " + currentRoom);

			index = 0;

			// FIXME Perhaps is possible for no neighbours to be connected -
			// method that checks this and keeps cycling to others if false
			// FIXED! added check for connected neighbours, else it got stuck on
			// trying to find a connected neighbour when there was none, very
			// rare but annoying as hell
			// keep searching for a connected neighbour
			while (found == false) {
				index = rand.nextInt(neighbours.size());
				// System.out.println("We are stuck");
				System.out.println(index);
				if (neighbours.get(index).isConnected()) {
					System.out.println("Neighbor to connect: "
							+ neighbours.get(index).getID());
					found = true;
				}
			}

			rooms.get(currentRoom).addConnection(rooms.get(index)); // connect
																	// the
																	// random
																	// connected
																	// neighbor
																	// to this
																	// room
			rooms.get(currentRoom).setConnected(true);

			found = false;

			allC = checkConnected(rooms);
			System.out.println("\n" + allC);
		}
		endRoom = currentRoom;
		System.out.println("\n" + allC + " - all rooms connected");
	}