diff --git a/pom.xml b/pom.xml
index 6f3bee3..f95b446 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.intel.jndn.management</groupId>
   <artifactId>jndn-management</artifactId>
-  <version>1.1.0</version>
+  <version>1.1.1</version>
   <name>jndn-management</name>
   <description>Tools for managing an NDN forwarding daemon</description>
   <url>https://github.com/01org/jndn-management</url>
@@ -38,7 +38,7 @@
     <dependency>
       <groupId>net.named-data</groupId>
       <artifactId>jndn</artifactId>
-      <version>0.10</version>
+      <version>0.11</version>
     </dependency>
     <!-- test dependencies -->
     <dependency>
@@ -50,7 +50,7 @@
     <dependency>
       <groupId>com.intel.jndn.mock</groupId>
       <artifactId>jndn-mock</artifactId>
-      <version>1.0.1</version>
+      <version>1.0.2</version>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/src/test/java/com/intel/jndn/management/NfdcIT.java b/src/test/java/com/intel/jndn/management/NfdcIT.java
index 39750c0..350c79a 100644
--- a/src/test/java/com/intel/jndn/management/NfdcIT.java
+++ b/src/test/java/com/intel/jndn/management/NfdcIT.java
@@ -82,7 +82,7 @@
   public void testFailOfGetKeyLocator() throws Exception {
     mockFace.onSendInterest.add(new MockFace.SignalOnSendInterest() {
       @Override
-      public void emit(final Interest interest) throws EncodingException, SecurityException {
+      public void emit(final Interest interest) {
         Data data = new Data();
         data.setName(new Name(interest.getName()).appendVersion(0).appendSegment(0));
 
@@ -95,8 +95,11 @@
         LOG.info(data.getSignature().toString());
 
         // don't set anything else
-
-        mockFace.receive(data);
+        try {
+          mockFace.receive(data);
+        } catch (EncodingException e) {
+          LOG.severe("Failed to set receive data: " + e);
+        }
       }
     });
 
@@ -234,7 +237,7 @@
 
     mockFace.onSendInterest.add(new MockFace.SignalOnSendInterest() {
       @Override
-      public void emit(final Interest interest) throws EncodingException, SecurityException {
+      public void emit(final Interest interest) {
         ControlResponse response = new ControlResponse();
         response.setStatusCode(300);
         response.setStatusText("Test FAIL");
@@ -243,7 +246,11 @@
         data.setName(interest.getName());
         data.setContent(response.wireEncode());
 
-        mockFace.receive(data);
+        try {
+          mockFace.receive(data);
+        } catch (EncodingException e) {
+          LOG.severe("Failed to set receive data: " + e);
+        }
       }
     });
     Nfdc.setStrategy(mockFace, new Name("/"), Strategies.BROADCAST);
