diff --git a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurement.java b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurement.java
index 90720ef490d2caeaa2c5605e686aa80083ffad20..c3c6f9f8797bb29f07d8387527397e7b89f5aa0f 100644
--- a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurement.java
+++ b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurement.java
@@ -27,8 +27,10 @@ import com.yahoo.ycsb.measurements.exporter.MeasurementsExporter;
 public abstract class OneMeasurement {
 
 	String _name;
+  final ConcurrentHashMap<Integer, AtomicInteger> returncodes;
 	
 	public String getName() {
+    returncodes = new ConcurrentHashMap<Integer, AtomicInteger>();
 		return _name;
 	}
 
@@ -39,7 +41,22 @@ public abstract class OneMeasurement {
 		this._name = _name;
 	}
 
-	public abstract void reportReturnCode(int code);
+  /**
+   * No need for synchronization, using CHM to deal with that
+   */
+  public void reportReturnCode(int code) {
+    Integer Icode = code;
+
+    AtomicInteger counter = returncodes.get(Icode);
+    if (counter == null) {
+      AtomicInteger other = returncodes.putIfAbsent(Icode, counter = new AtomicInteger());
+      if (other != null) {
+        counter = other;
+      }
+    }
+
+    counter.incrementAndGet();
+  }
 
 	public abstract void measure(int latency);
 
diff --git a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHdrHistogram.java b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHdrHistogram.java
index fa0735f854f758b59d07c6c15de07b89ccef8cb4..56cdd1fdf69dd34e2676ab5811640903b309db92 100644
--- a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHdrHistogram.java
+++ b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHdrHistogram.java
@@ -46,13 +46,11 @@ public class OneMeasurementHdrHistogram extends OneMeasurement {
     final HistogramLogWriter histogramLogWriter;
     
     final Recorder histogram = new Recorder(3);
-    final ConcurrentHashMap<Integer, AtomicInteger> returncodes;
 
     Histogram totalHistogram;
 
     public OneMeasurementHdrHistogram(String name, Properties props) {
         super(name);
-        returncodes = new ConcurrentHashMap<Integer, AtomicInteger>();
         boolean shouldLog = Boolean.parseBoolean(props.getProperty("hdrhistogram.fileoutput", "false"));
         if (!shouldLog) {
             log = null;
@@ -72,24 +70,6 @@ public class OneMeasurementHdrHistogram extends OneMeasurement {
         histogramLogWriter.outputLegend();
     }
 
-    /**
-     * No need for synchronization, using CHM to deal with that
-     * 
-     * @see com.yahoo.ycsb.OneMeasurement#reportReturnCode(int)
-     */
-    public void reportReturnCode(int code) {
-        Integer Icode = code;
-        AtomicInteger counter = returncodes.get(Icode);
-        if (counter == null) {
-            AtomicInteger other = returncodes.putIfAbsent(Icode, counter = new AtomicInteger());
-            if (other != null) {
-                counter = other;
-            }
-        }
-
-        counter.incrementAndGet();
-    }
-
     /**
      * It appears latency is reported in micros.
      * Using {@link Recorder} to support concurrent updates to histogram.
diff --git a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHistogram.java b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHistogram.java
index 2cba955a2a3c926f1d7b719c26b9696562522a08..88cc5c2afbfbe5171f83fb282a80bb21c2d33feb 100644
--- a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHistogram.java
+++ b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementHistogram.java
@@ -48,7 +48,6 @@ public class OneMeasurementHistogram extends OneMeasurement
 	
 	int min;
 	int max;
-	HashMap<Integer,int[]> returncodes;
 
 	public OneMeasurementHistogram(String name, Properties props)
 	{
@@ -62,25 +61,8 @@ public class OneMeasurementHistogram extends OneMeasurement
 		windowtotallatency=0;
 		min=-1;
 		max=-1;
-		returncodes=new HashMap<Integer,int[]>();
 	}
 
-	/* (non-Javadoc)
-	 * @see com.yahoo.ycsb.OneMeasurement#reportReturnCode(int)
-	 */
-	public synchronized void reportReturnCode(int code)
-	{
-		Integer Icode=code;
-		if (!returncodes.containsKey(Icode))
-		{
-			int[] val=new int[1];
-			val[0]=0;
-			returncodes.put(Icode,val);
-		}
-		returncodes.get(Icode)[0]++;
-	}
-
-
 	/* (non-Javadoc)
 	 * @see com.yahoo.ycsb.OneMeasurement#measure(int)
 	 */
@@ -136,11 +118,9 @@ public class OneMeasurementHistogram extends OneMeasurement
       }
     }
 
-    for (Integer I : returncodes.keySet())
-    {
-      int[] val=returncodes.get(I);
-      exporter.write(getName(), "Return="+I, val[0]);
-    }     
+    for (Map.Entry<Integer, AtomicInteger> entry : returncodes.entrySet()) {
+      exporter.write(getName(), "Return=" + entry.getKey(), entry.getValue().get());
+    }
 
     for (int i=0; i<_buckets; i++)
     {
diff --git a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementTimeSeries.java b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementTimeSeries.java
index 25c77b76740feaed3bf134c78b249e4e9146a827..aab5d85e05f88d4d786170427a391a53f9d5bef7 100644
--- a/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementTimeSeries.java
+++ b/core/src/main/java/com/yahoo/ycsb/measurements/OneMeasurementTimeSeries.java
@@ -68,14 +68,11 @@ public class OneMeasurementTimeSeries extends OneMeasurement
 	int min=-1;
 	int max=-1;
 
-	private HashMap<Integer, int[]> returncodes;
-	
 	public OneMeasurementTimeSeries(String name, Properties props)
 	{
 		super(name);
 		_granularity=Integer.parseInt(props.getProperty(GRANULARITY,GRANULARITY_DEFAULT));
 		_measurements=new Vector<SeriesUnit>();
-		returncodes=new HashMap<Integer,int[]>();
 	}
 	
 	void checkEndOfUnit(boolean forceend)
@@ -138,30 +135,16 @@ public class OneMeasurementTimeSeries extends OneMeasurement
 
     //TODO: 95th and 99th percentile latency
 
-    for (Integer I : returncodes.keySet())
-    {
-      int[] val=returncodes.get(I);
-      exporter.write(getName(), "Return="+I, val[0]);
-    }     
+
+    for (Map.Entry<Integer, AtomicInteger> entry : returncodes.entrySet()) {
+      exporter.write(getName(), "Return=" + entry.getKey(), entry.getValue().get());
+    }
 
     for (SeriesUnit unit : _measurements)
     {
       exporter.write(getName(), Long.toString(unit.time), unit.average);
     }
   }
-	
-	@Override
-	public void reportReturnCode(int code) {
-		Integer Icode=code;
-		if (!returncodes.containsKey(Icode))
-		{
-			int[] val=new int[1];
-			val[0]=0;
-			returncodes.put(Icode,val);
-		}
-		returncodes.get(Icode)[0]++;
-
-	}
 
 	@Override
 	public String getSummary() {