diff --git a/src/main/java/com/intel/jndn/mock/MockFace.java b/src/main/java/com/intel/jndn/mock/MockFace.java
index 878040f..34b8206 100644
--- a/src/main/java/com/intel/jndn/mock/MockFace.java
+++ b/src/main/java/com/intel/jndn/mock/MockFace.java
@@ -283,12 +283,12 @@
 
   @Override
   public long setInterestFilter(InterestFilter filter, OnInterestCallback onInterest) {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    return node_.setInterestFilter(filter, onInterest, this);
   }
 
   @Override
   public void unsetInterestFilter(long interestFilterId) {
-    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
+    node_.unsetInterestFilter(interestFilterId);
   }
 
   @Override
diff --git a/src/main/java/com/intel/jndn/mock/MockTransport.java b/src/main/java/com/intel/jndn/mock/MockTransport.java
index 0079196..2db422b 100644
--- a/src/main/java/com/intel/jndn/mock/MockTransport.java
+++ b/src/main/java/com/intel/jndn/mock/MockTransport.java
@@ -37,7 +37,7 @@
   private static final Logger logger = Logger.getLogger(MockTransport.class.getName());
   protected boolean connected;
   protected ElementReader elementReader;
-  protected ByteBuffer buffer = ByteBuffer.allocate(BUFFER_CAPACITY);
+  private ByteBuffer buffer = ByteBuffer.allocate(BUFFER_CAPACITY);
   protected ByteBuffer sentBuffer = ByteBuffer.allocate(BUFFER_CAPACITY);
   protected List<Data> sentDataPackets = new ArrayList<>();
   protected List<Interest> sentInterestPackets = new ArrayList<>();
@@ -215,12 +215,34 @@
     logger.finer(String.format("Processing buffer (position: %s, limit: %s, capacity: %s): %s", buffer.position(), buffer.limit(), buffer.capacity(), Arrays.toString(buffer.array())));
 
     // pass data up to face
-    buffer.limit(buffer.position());
-    buffer.position(0);
-    elementReader.onReceivedData(buffer);
-
+    ByteBuffer temp = copy(buffer);
+    temp.flip();
+    
     // reset buffer
     buffer = ByteBuffer.allocate(BUFFER_CAPACITY);
+    
+    elementReader.onReceivedData(temp);
+  }
+  
+  /**
+   * Copy one buffer to a new buffer, preserving the source buffer's position
+   * and limit.
+   * @param source the source buffer
+   * @return a copied buffer
+   */
+  private ByteBuffer copy(ByteBuffer source){
+    ByteBuffer dest = ByteBuffer.allocate(source.capacity());
+    
+    int saveLimit = source.limit();
+    int savePosition = source.position();
+    source.flip();
+    
+    dest.put(source);
+    
+    source.limit(saveLimit);
+    source.position(savePosition);
+    
+    return dest;
   }
 
   /**
