public void resetTo(String contig, int leftEdgePos) throws IOException, EndOfContigException, FullQueueException {
		if (reader.getCurrentContig() == null) {
			reader.advanceToContig(contig);	
		}
		
		if ((! reader.getCurrentContig().equals(contig))) {
			bases.clear();
			this.leftEdge = 1;
			reader.advanceToContig(contig);			
		}
		else {
			if (leftEdgePos < indexOfRightEdge()) {
				//System.out.println(" Shifting from " + leftEdge + "-" + indexOfRightEdge() + " to " + leftEdgePos + " without filling");
				//Advance by amount less than current window size, so just shift and don't clear any bases
				while(leftEdge < leftEdgePos) {
					shift();
				}
				return;
			}

		}

		//System.out.println(" Skipping from " + leftEdge + "-" + indexOfRightEdge() + " to " + leftEdgePos + " and re-filling");
		bases.clear();
		//Left edge may be at default value of -1
		if (leftEdge < 0)
			leftEdge = 1;

		reader.advanceToPosition(leftEdgePos-1); //reader actually keeps things 0-indexed, so subtract 1
		leftEdge = leftEdgePos;
		int contigSize = (int) (reader.getContigLength(contig).intValue());
//		System.out.println(">" + leftEdgePos);
		for(int i=leftEdgePos; i<Math.min(leftEdgePos+windowSize, contigSize); i++) {
			char c = reader.nextBase();
			bases.add( c );
			//System.out.print(c);
		}
	//	System.out.println();
		
	}