private BoardNode[] findWordFrom(BoardNode start, String word){
		//dfs like search to find a word from the start point
		StackADT<BoardNode> searchStack=new ArrayStack<BoardNode>();
		int depth=1;
		boolean found=false;

		BoardNode current=start;
		BoardNode next;
		//push the startpoint on the stack
		searchStack.push(start);
		start.setSeen(true);

		while(!found){
			//find a neighbor that isn't seen and is the next letter
			next=getUnseenNeighbor(current,word.charAt(depth));
			if(next==null){
				//no more on this path
				if(depth==1){
					//no paths, return null
					//reverse side effect, set all unseen
					setAllUnseen();
					return null;

				}
				searchStack.pop();
				current=searchStack.peek();
				depth--;

			} else {
				searchStack.push(next);
				next.setSeen(true);
				depth++;
				current=next;
				if(depth==word.length()){
					//path found, return the array
					BoardNode[] temp=new BoardNode[word.length()];
					BoardNode[] path=new BoardNode[word.length()];
					for(int x=0;x<word.length();x++){
						temp[x]=searchStack.pop();
					}
					//reverse it
					for(int x=0;x<word.length();x++){
						path[x]=temp[(word.length()-1)-x];
					}
					// reverse side effect, set all unseen
					setAllUnseen();
					return path;
				}
			}
		}
		System.out.println("ERROR HIT UNREACHABLE CODE");
		return null;//should never get here

	}