diff --git a/src/test/java/com/intel/jndn/utils/SegmentedClientTest.java b/src/test/java/com/intel/jndn/utils/SegmentedClientTest.java
index df6d056..823223d 100644
--- a/src/test/java/com/intel/jndn/utils/SegmentedClientTest.java
+++ b/src/test/java/com/intel/jndn/utils/SegmentedClientTest.java
@@ -87,14 +87,8 @@
   public void testFailureToRetrieve() throws Exception {
     // retrieve non-existent data, should timeout
     logger.info("Client expressing interest asynchronously: /test/no-data");
-    List<Future<Data>> futureSegments = SegmentedClient.getDefault().getAsyncList(face, new Name("/test/no-data"));
-
-    // the list of future packets should be initialized
-    assertEquals(1, futureSegments.size());
-    assertTrue(futureSegments.get(0).isDone());
-
-    // should throw error
-    futureSegments.get(0).get();
+    Future<Data> futureData = SegmentedClient.getDefault().getAsync(face, new Name("/test/no-data"));
+    futureData.get();
   }
 
   /**
diff --git a/src/test/java/com/intel/jndn/utils/client/SegmentedFutureDataTest.java b/src/test/java/com/intel/jndn/utils/client/SegmentedFutureDataTest.java
index b97104d..e030083 100644
--- a/src/test/java/com/intel/jndn/utils/client/SegmentedFutureDataTest.java
+++ b/src/test/java/com/intel/jndn/utils/client/SegmentedFutureDataTest.java
@@ -36,15 +36,14 @@
 
   public SegmentedFutureDataTest() {
     Face face = new MockFace();
-    List<Future<Data>> segments = new ArrayList<>();
+    instance = new SegmentedFutureData(face, new Name("/test/packet"));
     for (int i = 0; i < 10; i++) {
       Data data = new Data(new Name("/test/packet").appendSegment(i));
       data.setContent(new Blob("."));
       FutureData future = new FutureData(face, data.getName());
       future.resolve(data);
-      segments.add(future);
+      instance.add(future);
     }
-    instance = new SegmentedFutureData(new Name("/test/packet"), segments);
   }
 
   @Test
@@ -75,9 +74,8 @@
     Data data = new Data(new Name("/test/packet").appendSegment(0));
     FutureData future = new FutureData(face, data.getName());
     
-    List<Future<Data>> segments = new ArrayList<>();
-    segments.add(future);
-    SegmentedFutureData segmentedFuture = new SegmentedFutureData(new Name("/test/packet"), segments);
+    SegmentedFutureData segmentedFuture = new SegmentedFutureData(face, new Name("/test/packet"));
+    segmentedFuture.add(future);
     
     segmentedFuture.get(10, TimeUnit.MILLISECONDS);
   }
