diff --git a/src/main/java/com/intel/jndn/utils/SegmentedServer.java b/src/main/java/com/intel/jndn/utils/SegmentedServer.java
index d89f445..875ca87 100644
--- a/src/main/java/com/intel/jndn/utils/SegmentedServer.java
+++ b/src/main/java/com/intel/jndn/utils/SegmentedServer.java
@@ -20,16 +20,15 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.ByteBuffer;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import net.named_data.jndn.Data;
 import net.named_data.jndn.Face;
 import net.named_data.jndn.Interest;
+import net.named_data.jndn.InterestFilter;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.encoding.EncodingException;
-import net.named_data.jndn.transport.Transport;
 
 /**
  * Implementation of a {@link RepositoryServer} that segments packets stored in
@@ -75,7 +74,7 @@
    * {@inheritDoc}
    */
   @Override
-  public void onInterest(Name prefix, Interest interest, Transport transport, long registeredPrefixId) {
+  public void onInterest(Name prefix, Interest interest, Face face, long interestFilterId, InterestFilter filter) {
     logger.finer("Serving packet for: " + interest.toUri());
     
     if (interest.getChildSelector() == -1) {
@@ -89,10 +88,9 @@
     try {
       Data data = repository.get(interest);
       data = processPipeline(data);
-      ByteBuffer buffer = data.wireEncode().buf();
-      transport.send(buffer);
+      face.putData(data);
     } catch (Exception e) {
-      logger.log(Level.SEVERE, "Failed to find data satisfying: " + interest.toUri(), e);
+      logger.log(Level.FINE, "Failed to find data satisfying: " + interest.toUri(), e);
     }
   }
 
diff --git a/src/main/java/com/intel/jndn/utils/SimpleServer.java b/src/main/java/com/intel/jndn/utils/SimpleServer.java
index 683dd06..b983fa3 100644
--- a/src/main/java/com/intel/jndn/utils/SimpleServer.java
+++ b/src/main/java/com/intel/jndn/utils/SimpleServer.java
@@ -23,6 +23,7 @@
 import net.named_data.jndn.Data;
 import net.named_data.jndn.Face;
 import net.named_data.jndn.Interest;
+import net.named_data.jndn.InterestFilter;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.transport.Transport;
 import net.named_data.jndn.util.Blob;
@@ -83,14 +84,13 @@
    * {@inheritDoc}
    */
   @Override
-  public void onInterest(Name prefix, Interest interest, Transport transport, long registeredPrefixId) {
+  public void onInterest(Name prefix, Interest interest, Face face, long interestFilterId, InterestFilter filter){
     try {
       Data data = callback.onInterest(prefix, interest);
       data = processPipeline(data);
-      ByteBuffer buffer = data.wireEncode().buf();
-      transport.send(buffer);
+      face.putData(data);
     } catch (Exception e) {
-      logger.log(Level.SEVERE, "Failed to send data for: " + interest.toUri(), e);
+      logger.log(Level.FINE, "Failed to send data for: " + interest.toUri(), e);
     }
   }
 }
diff --git a/src/main/java/com/intel/jndn/utils/server/Server.java b/src/main/java/com/intel/jndn/utils/server/Server.java
index bc5eca7..bcf7f3c 100644
--- a/src/main/java/com/intel/jndn/utils/server/Server.java
+++ b/src/main/java/com/intel/jndn/utils/server/Server.java
@@ -15,8 +15,9 @@
 
 import java.util.concurrent.ScheduledThreadPoolExecutor;
 import net.named_data.jndn.Data;
+import net.named_data.jndn.Face;
 import net.named_data.jndn.Name;
-import net.named_data.jndn.OnInterest;
+import net.named_data.jndn.OnInterestCallback;
 
 /**
  * Base interface for defining a server; see descendant interfaces for different
@@ -27,7 +28,7 @@
  *
  * @author Andrew Brown <andrew.brown@intel.com>
  */
-public interface Server extends Runnable, OnInterest {
+public interface Server extends Runnable, OnInterestCallback {
 
   /**
    * @return the {@link Name} prefix this server is serving on.
