public static int[][] rotateImage(int[][] imageMatrix, Direction direction) {
		if (imageMatrix == null || direction == null) {
			throw new IllegalArgumentException(
					"imageMatrix and direction cannot be null");
		}
		int[][] rotatedImageMatrix = new int[imageMatrix[0].length][];
		for (int i = 0; i < rotatedImageMatrix.length; i++) {
			rotatedImageMatrix[i] = new int[imageMatrix.length];
		}
		switch (direction) {
		case CLOCKWISE:
			for (int i = 0; i < imageMatrix.length; i++) {
				for (int j = 0; j < imageMatrix[i].length; j++) {
					rotatedImageMatrix[j][imageMatrix.length - 1 - i] = imageMatrix[i][j];
				}
			}
			break;
		case COUNTERCLOCKWISE:
			for (int i = 0; i < imageMatrix.length; i++) {
				for (int j = 0; j < imageMatrix[i].length; j++) {
					rotatedImageMatrix[j][i] = imageMatrix[i][j];
				}
			}
			break;
		default:
			break;

		}

		return rotatedImageMatrix;
	}