public List<List<Point>> solve()
	{
		List<List<Point>> paths = new ArrayList<List<Point>>();
		open.add(new SearchNode(start, null));
		currentNode = null;
		while(!open.isEmpty())
		{
			List<Point> path = new ArrayList<Point>();
			currentNode = pop(open);
			nodesVisited++;
			if(board.isAccessible(currentNode.getLocation()))
			{
				Status status = board.getCell(currentNode.getLocation().x, currentNode.getLocation().y).getStatus();
				if(status == Status.GOLD)
				{
					path = currentNode.getPath();
					for(int i = path.size() - 2; i >= 0; i--) //reverse the path but skip gold square
					{
						path.add(path.get(i));
					}
					paths.add(path);
					break;
				}
				else if(status == Status.PIT)
				{
					pit.add(currentNode.toString());
					paths.add(currentNode.getPath());
				}
				else if(status == Status.WUMPUS)
				{
					wumpus = currentNode.toString();
					paths.add(currentNode.getPath());
				}
				else
				{
					exploring.add(currentNode.toString());
					addNewChildrenToOpen(currentNode);
				}
			}
			else
			{
				wall.add(currentNode.toString());
			}
		}
		return paths;
	}