diff --git a/build.gradle b/build.gradle
index 0a5c50d..4d059fe 100644
--- a/build.gradle
+++ b/build.gradle
@@ -36,12 +36,12 @@
 }
 
 dependencies {
-  compile 'net.named-data:jndn:0.17'
+  compile 'net.named-data:jndn:0.24'
 
   testCompile 'junit:junit:4.12'
-  testRuntime 'org.slf4j:slf4j-api:1.7.25'
+  testRuntime 'org.slf4j:slf4j-api:1.7.30'
 
-  checkstyleConfig "com.puppycrawl.tools:checkstyle:8.11"
+  checkstyleConfig 'com.puppycrawl.tools:checkstyle:8.23'
 }
 
 task javadocJar(type: Jar) {
diff --git a/src/main/java/com/intel/jndn/mock/MockForwarder.java b/src/main/java/com/intel/jndn/mock/MockForwarder.java
index 11ea73e..84c18bc 100644
--- a/src/main/java/com/intel/jndn/mock/MockForwarder.java
+++ b/src/main/java/com/intel/jndn/mock/MockForwarder.java
@@ -21,12 +21,12 @@
 import com.intel.jndn.mock.forwarder.PitImpl;
 import net.named_data.jndn.Data;
 import net.named_data.jndn.Face;
-import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Interest;
 import net.named_data.jndn.Name;
 import net.named_data.jndn.OnData;
 import net.named_data.jndn.OnNetworkNack;
 import net.named_data.jndn.OnTimeout;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.encoding.WireFormat;
 import net.named_data.jndn.security.KeyChain;
 import net.named_data.jndn.security.SecurityException;
@@ -86,7 +86,7 @@
     /**
      * @return the entry flags
      */
-    ForwardingFlags getFlags();
+    RegistrationOptions getFlags();
   }
 
   /**
@@ -137,7 +137,7 @@
   public interface OnInterestReceived {
     /**
      * Called when the mock forwarder receives incoming interests from a face; see {@link #register(Name,
-     * OnInterestReceived, ForwardingFlags)}.
+     * OnInterestReceived, RegistrationOptions)}.
      *
      * @param interest the incoming interest
      * @param destinationTransport the transport that sent the interest; necessary for the forwarder to be able to
@@ -157,7 +157,7 @@
 
     OnPrefixRegistration onPrefixRegistration = new OnPrefixRegistration(keyChain, fib);
     Name registrationPrefix = new Name("/localhost/nfd/rib/register");
-    register(registrationPrefix, onPrefixRegistration, new ForwardingFlags());
+    register(registrationPrefix, onPrefixRegistration, new RegistrationOptions());
   }
 
   public Face connect() {
@@ -167,7 +167,7 @@
     return face;
   }
 
-  public void register(Name prefix, OnInterestReceived callback, ForwardingFlags flags) {
+  public void register(Name prefix, OnInterestReceived callback, RegistrationOptions flags) {
     Face registrationFace = this.connect();
     FibEntry registrationEntry = new LocalFibEntry(prefix, callback, registrationFace, flags);
     fib.add(registrationEntry);
diff --git a/src/main/java/com/intel/jndn/mock/forwarder/ClientFibEntry.java b/src/main/java/com/intel/jndn/mock/forwarder/ClientFibEntry.java
index 020a8fb..910c304 100644
--- a/src/main/java/com/intel/jndn/mock/forwarder/ClientFibEntry.java
+++ b/src/main/java/com/intel/jndn/mock/forwarder/ClientFibEntry.java
@@ -16,9 +16,9 @@
 
 import com.intel.jndn.mock.MockForwarder;
 import com.intel.jndn.mock.MockTransport;
-import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Interest;
 import net.named_data.jndn.Name;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.transport.Transport;
 
 import java.util.logging.Logger;
@@ -31,9 +31,9 @@
   private static final Logger LOGGER = Logger.getLogger(ClientFibEntry.class.getName());
   private final Name prefix;
   private final MockTransport transport;
-  private final ForwardingFlags flags;
+  private final RegistrationOptions flags;
 
-  ClientFibEntry(Name prefix, MockTransport transport, ForwardingFlags flags) {
+  ClientFibEntry(Name prefix, MockTransport transport, RegistrationOptions flags) {
     this.prefix = prefix;
     this.transport = transport;
     this.flags = flags;
@@ -51,7 +51,7 @@
   }
 
   @Override
-  public ForwardingFlags getFlags() {
+  public RegistrationOptions getFlags() {
     return flags;
   }
 }
diff --git a/src/main/java/com/intel/jndn/mock/forwarder/LocalFibEntry.java b/src/main/java/com/intel/jndn/mock/forwarder/LocalFibEntry.java
index c803c3e..6d7ce1b 100644
--- a/src/main/java/com/intel/jndn/mock/forwarder/LocalFibEntry.java
+++ b/src/main/java/com/intel/jndn/mock/forwarder/LocalFibEntry.java
@@ -16,9 +16,9 @@
 
 import com.intel.jndn.mock.MockForwarder;
 import net.named_data.jndn.Face;
-import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Interest;
 import net.named_data.jndn.Name;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.transport.Transport;
 
 import java.util.logging.Logger;
@@ -32,9 +32,9 @@
   private final Name prefix;
   private final MockForwarder.OnInterestReceived callback;
   private final Face registrationFace;
-  private final ForwardingFlags flags;
+  private final RegistrationOptions flags;
 
-  public LocalFibEntry(Name prefix, MockForwarder.OnInterestReceived callback, Face registrationFace, ForwardingFlags flags) {
+  public LocalFibEntry(Name prefix, MockForwarder.OnInterestReceived callback, Face registrationFace, RegistrationOptions flags) {
     this.prefix = prefix;
     this.callback = callback;
     this.registrationFace = registrationFace;
@@ -52,7 +52,7 @@
   }
 
   @Override
-  public ForwardingFlags getFlags() {
+  public RegistrationOptions getFlags() {
     return flags;
   }
 }
diff --git a/src/test/java/com/intel/jndn/mock/forwarder/MockForwarderVisibilityTest.java b/src/test/java/com/intel/jndn/mock/forwarder/MockForwarderVisibilityTest.java
index c38fa6e..4e8d685 100644
--- a/src/test/java/com/intel/jndn/mock/forwarder/MockForwarderVisibilityTest.java
+++ b/src/test/java/com/intel/jndn/mock/forwarder/MockForwarderVisibilityTest.java
@@ -16,9 +16,9 @@
 
 import com.intel.jndn.mock.MockForwarder;
 import net.named_data.jndn.Face;
-import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Interest;
 import net.named_data.jndn.Name;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.transport.Transport;
 import org.junit.Test;
 
@@ -40,6 +40,6 @@
       public void in(Interest interest, Transport destinationTransport, Face sourceFace) {
         // do nothing
       }
-    }, new ForwardingFlags());
+    }, new RegistrationOptions());
   }
-}
\ No newline at end of file
+}
