public List<Tuple<Integer,Integer>> reconstructPath ( HashMap<Tuple<Integer,Integer>,Tuple<Integer,Integer>> cameFrom, Tuple<Integer,Integer> currentNode ) {
		int delayNearEndpoints = 3;
		int roomNearEndpoints = 3;
		
		//log.trace("reconstructPath: cameFrom size:" + cameFrom.size() );
		List<Tuple<Integer,Integer>> path = new ArrayList<Tuple<Integer,Integer>>();
		if ( cameFrom.containsKey(currentNode) ) {
			path = reconstructPath( cameFrom, cameFrom.get(currentNode));
			path.add(currentNode);
			// experimenting -- stay still near endpoints
			
			if ( nearEndpoints(currentNode, roomNearEndpoints) ) {
				for ( int i = 0; i < delayNearEndpoints; i++ ) {
					path.add(currentNode);
				}
			}
			
			return path;
		} else {
			path.add(currentNode);
			// experimenting -- stay still near endpoints
			
			if ( nearEndpoints(currentNode,roomNearEndpoints) ) {
				for ( int i = 0; i < delayNearEndpoints; i++ ) {
					path.add(currentNode);
				}
			}
			
			return path;
		}
	}