diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
index 830df6a..52feedf 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetPmfFromDoublesSketchUDFTest.java
@@ -7,10 +7,10 @@
 import java.util.List;
 
 import org.apache.hadoop.io.BytesWritable;
-
-import org.testng.annotations.Test;
 import org.testng.Assert;
+import org.testng.annotations.Test;
 
+import com.yahoo.sketches.quantiles.DoublesSketch;
 import com.yahoo.sketches.quantiles.UpdateDoublesSketch;
 
 public class GetPmfFromDoublesSketchUDFTest {
@@ -23,7 +23,7 @@
 
   @Test
   public void emptyListOfSplitPoints() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
@@ -35,7 +35,7 @@
 
   @Test
   public void normalCase() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantileFromDoublesSektchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantileFromDoublesSektchUDFTest.java
index ff4282c..29bcbd9 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantileFromDoublesSektchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantileFromDoublesSektchUDFTest.java
@@ -4,11 +4,12 @@
  */
 package com.yahoo.sketches.hive.quantiles;
 
-import com.yahoo.sketches.quantiles.UpdateDoublesSketch;
-
-import org.testng.annotations.Test;
 import org.apache.hadoop.io.BytesWritable;
 import org.testng.Assert;
+import org.testng.annotations.Test;
+
+import com.yahoo.sketches.quantiles.DoublesSketch;
+import com.yahoo.sketches.quantiles.UpdateDoublesSketch;
 
 public class GetQuantileFromDoublesSektchUDFTest {
 
@@ -20,7 +21,7 @@
 
   @Test
   public void normalCase() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
diff --git a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
index 6e328a3..99f671e 100644
--- a/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
+++ b/src/test/java/com/yahoo/sketches/hive/quantiles/GetQuantilesFromDoublesSketchUDFTest.java
@@ -7,11 +7,11 @@
 import java.util.List;
 
 import org.apache.hadoop.io.BytesWritable;
-
-import org.testng.annotations.Test;
 import org.testng.Assert;
+import org.testng.annotations.Test;
 
 import com.yahoo.sketches.SketchesArgumentException;
+import com.yahoo.sketches.quantiles.DoublesSketch;
 import com.yahoo.sketches.quantiles.UpdateDoublesSketch;
 
 public class GetQuantilesFromDoublesSketchUDFTest {
@@ -24,7 +24,7 @@
 
   @Test
   public void emptyListOfFractions() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
@@ -35,7 +35,7 @@
 
   @Test
   public void fractionsNormalCase() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
@@ -49,13 +49,13 @@
 
   @Test(expectedExceptions = SketchesArgumentException.class)
   public void evenlySpacedZero() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     new GetQuantilesFromDoublesSketchUDF().evaluate(new BytesWritable(sketch.toByteArray()), 0);
   }
 
   @Test
   public void evenlySpacedNormalCase() {
-    UpdateDoublesSketch sketch = UpdateDoublesSketch.builder().build();
+    UpdateDoublesSketch sketch = DoublesSketch.builder().build();
     sketch.update(1);
     sketch.update(2);
     sketch.update(3);
