private void executeOaiListAggregateSetRecords( String verb, HttpServletResponse response, boolean authenicate, String aggregateSetName, String metadataPrefix,  boolean forceNewDate ) throws IOException {
		
		AggregateList aggregateSets = new AggregateList();

		AggregateSet setToRetrieve = aggregateSets.getAggregateSet( aggregateSetName );

		if ( setToRetrieve == null ) 
		{
			return; // TBD this will create an error. return empty set?
		}
		Iterator<SingleSet> setIterator = setToRetrieve.getIterator();
		
		HttpClient theClient = new HttpClient();

		boolean firstRecordOfFirstSet = true;
		String header       = null;
		String footer       = null;
		HttpMethod method   = null;
		try {
			while ( setIterator.hasNext() )
			{	
				SingleSet singleSet = setIterator.next();

				method = new GetMethod( ADR_OAI_GET_URL + "?verb="+verb+"&set="+FedoraProxyConstants.ADR_OAI_SET_SPEC+singleSet.getUniqueID()+"&metadataPrefix="+metadataPrefix );
				theClient.executeMethod(method);				
				String recordList = method.getResponseBodyAsString();
				
				int listRecordTagLoc    = recordList.toLowerCase().indexOf( "<listrecords>");
				int listRecordEndTagLoc = recordList.toLowerCase().indexOf( "</listrecords>");
			//	int resumptionTagLoc       = recordList.toLowerCase().indexOf( "<resumptiontoken>" );
			//	int resumptionEndTagLoc    = recordList.toLowerCase().indexOf( "<resumptiontoken>" );
				
				if ( listRecordTagLoc <0 || listRecordEndTagLoc < 0  )
				{
					// TBD need to log error
					
					String errorMsg = "Error retieving: "+singleSet.getName();
					System.out.println( errorMsg );
					
					continue; // abort and move attempt next set.
				}
				
				String justTheRecords = recordList.substring( listRecordTagLoc+14, listRecordEndTagLoc );	
				justTheRecords        = justTheRecords.substring( 0, justTheRecords.indexOf( "<resumptionToken>" ));

				if ( firstRecordOfFirstSet )
				{
					header = recordList.substring( 0, listRecordTagLoc + 14 );
					
//					int verbLoc    = header.indexOf( "<verb=" );
//					int verbEndLod = header.indexOf( '>', verbLoc );
//					int requestEndLod = header.indexOf( "</request>", verbEndLod );
//					String textToReplace = header.substring( verbEndLod+1, requestEndLod);
//							
//					header.replace( textToReplace, fedoraProxyConstants.FedoraProxyOAI_URL ); // TBD this will this change!
					
					// see above notes about <resumptionToken>
					footer = "<resumptionToken></resumptionToken>\n" + recordList.substring( listRecordEndTagLoc );
					firstRecordOfFirstSet = false;
					
					response.getWriter().print( header );			
					System.out.println( header );
				}

				if ( forceNewDate )
				{
					justTheRecords = justTheRecords.replaceAll("<datestamp>\\d\\d\\d\\d-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\dZ</datestamp>", "<datestamp>2011-08-04T00:00:00Z</datestamp>" );
				}
				response.getWriter().print( justTheRecords );
				System.out.println( justTheRecords );
			}
			System.out.println( footer );
			response.getWriter().print( footer );
		}
		catch (Exception e) 
		{
			response.sendError( 404 );
		}
		finally {
			method.releaseConnection();
		}

	} // executeOaiListRecordsWithAggregates