public static void initStepWise(int x, int y, long seed)
	{
		GRID_WIDTH = x;
		GRID_HEIGHT = y;

		stack = new ArrayList<Cell>();
		remainingCells = new ArrayList<Cell>();
		visitedCells = new ArrayList<Cell>();

		// Init array of cells
		maze = new Cell[x][y];

		// Reset maze and add cells to remainingcell list
		for (int i = 0; i < x; i++)
			for (int j = 0; j < y; j++)
			{
				maze[i][j] = new Cell(i, j);
				remainingCells.add((maze[i][j]));
			}

		// Starting the maze generating algorithm
		/*
		 * TODO: Explanation
		 */

		// STARTING CELL
		currentCell = maze[0][0];
		maze[currentCell.getX()][currentCell.getY()].visit();
		stack.add(maze[currentCell.getX()][currentCell.getY()]);
		remainingCells.remove(maze[currentCell.getX()][currentCell.getY()]);
		visitedCells.add(currentCell);

		// Initiating random with given seed
		r = new Random(seed);
	}