public static boolean perfomStep()
	{

		if (remainingCells.isEmpty())
		{
			stack.removeAll(stack);
			return false;
		}

		if (checkForNeighbors(currentCell.getX(), currentCell.getY()).isEmpty())
		{
			stack.remove(stack.size() - 1);
			currentCell = stack.get(stack.size() - 1);
		} else
		{

			currentCell = checkForNeighbors(currentCell.getX(), currentCell.getY()).get(Math.abs(r.nextInt()) % checkForNeighbors(currentCell.getX(), currentCell.getY()).size());
			maze[currentCell.getX()][currentCell.getY()].visit();
			remainingCells.remove(currentCell);
			visitedCells.add(currentCell);
			maze[currentCell.getX()][currentCell.getY()].removeWall(wallToRemove(currentCell.getX(), currentCell.getY(), stack.get(stack.size() - 1).getX(), stack.get(stack.size() - 1).getY()));
			maze[stack.get(stack.size() - 1).getX()][stack.get(stack.size() - 1).getY()].removeWall(wallToRemove(stack.get(stack.size() - 1).getX(), stack.get(stack.size() - 1).getY(),
					currentCell.getX(), currentCell.getY()));

			stack.add(maze[currentCell.getX()][currentCell.getY()]);
		}

		return true;
	}