public static String getSummary()
	{
		String ret="";
		Set<String> allOpTypes = null;
		//getting all the optypes different threads have performed
		//TODO: what if one thread does an extra operation
		for(int i=0; i<allMeasurements.size(); i++){
			allOpTypes = allMeasurements.get(i).data.keySet();
		}
		
		try
		{
			Iterator<String> it = allOpTypes.iterator();	
			while(it.hasNext()){
				String opType = it.next();
				int totalWindowLatency = 0;
				int totalWindowOps = 0;
				for(int i=0; i<allMeasurements.size(); i++){
						OpMeasurementTracker m = allMeasurements.get(i).data.get(opType);
						if(m!=null){
							totalWindowLatency += m.getWindowtotallatencysum();
							totalWindowOps += m.getWindownumoperations();
							m.resetWindow();
						}
				}
				DecimalFormat d = new DecimalFormat("#.##");
				double report=((double)totalWindowLatency)/((double)totalWindowOps);
				ret += "["+opType+" AverageResponseTime(us)="+d.format(report)+"]";
			}
		}
		catch(ConcurrentModificationException e)
		{
			ret = "Warning - Concurrent modification. stats output skipped";
		}
		return ret;
	}