public BoardCell pickLocation(Set<BoardCell> target){
		BoardCell targetCell = null;
		Random roller = new Random();
		ArrayList<BoardCell> doors = new ArrayList<BoardCell>();
		ArrayList<BoardCell> nonDoors = new ArrayList<BoardCell>();
		//pick target, doors have first priority
		for(BoardCell b : target) {
			if(b.isDoorway()) {
				doors.add(b);
			}
			else
				nonDoors.add(b);
		}
		
		while(doors.size() > 0) {
			int index = roller.nextInt(doors.size());
			targetCell = doors.get(index);
			RoomCell cell = (RoomCell) targetCell;
			if(cell.getRoomInitial() != lastVistedRoom) {
				updateLastVisited(cell.getRoomInitial());
				return targetCell;
			}
			else 
				doors.remove(targetCell);
		}
		
		if(doors.size() == 0) {
			if(nonDoors.size() > 1) {
				int index = roller.nextInt(nonDoors.size());
				targetCell = nonDoors.get(index);
				updateCurrent('W');
			}
			else {
				targetCell = nonDoors.get(0);
				updateCurrent('W');
			}
		}
		
		return targetCell;
	}