public static char[] rotate(char[] state, Character face, int turns) {
		// Turning it by any number of turns mod 4 would be wasting CPU cycles
		if (turns % 4 == 0) {
			return state;
		}
		int[] thisFace = FACES.get(face);
		int[] theSides = Cube.SIDES.get(face);
		// Error checking to verify that the given character is valid
		// and in the map and that we got both theFace and theSide
		if (thisFace == null || theSides == null) {
			return state;
		}

		// An array representing the chars of the state after rotations
		char[] newStateArray = state.clone();

		// Rotate the face
		rotateFace(state, thisFace, turns, newStateArray);
		// Rotate the sides
		rotateSide(state, theSides, turns, newStateArray);

		// Set the state to the newly rotated cube
		state = newStateArray;
		// Return true because it was successful!
		return state;
	}