diff --git a/src/main/java/com/intel/jndn/management/Nfdc.java b/src/main/java/com/intel/jndn/management/Nfdc.java
index 1ab7ae2..1be2d07 100644
--- a/src/main/java/com/intel/jndn/management/Nfdc.java
+++ b/src/main/java/com/intel/jndn/management/Nfdc.java
@@ -26,10 +26,10 @@
 import net.named_data.jndn.ControlResponse;
 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.KeyLocator;
 import net.named_data.jndn.Name;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.security.SecurityException;
 
@@ -277,15 +277,15 @@
    *                             the NFD rejected the request
    */
   public static void register(final Face face, final Name route, final int cost) throws ManagementException {
-    ForwardingFlags flags = new ForwardingFlags();
-    flags.setCapture(false);
-    flags.setChildInherit(true);
+    RegistrationOptions options = new RegistrationOptions();
+    options.setCapture(false);
+    options.setChildInherit(true);
 
     register(face, new ControlParameters()
       .setName(route)
       .setCost(cost)
       .setOrigin(RouteOrigin.APP.toInteger())
-      .setForwardingFlags(flags));
+      .setForwardingFlags(options));
   }
 
   /**
@@ -332,10 +332,10 @@
     parameters.setFaceId(faceId);
     parameters.setCost(cost);
     parameters.setOrigin(RouteOrigin.STATIC.toInteger());
-    ForwardingFlags flags = new ForwardingFlags();
-    flags.setCapture(false);
-    flags.setChildInherit(true);
-    parameters.setForwardingFlags(flags);
+    RegistrationOptions options = new RegistrationOptions();
+    options.setCapture(false);
+    options.setChildInherit(true);
+    parameters.setForwardingFlags(options);
 
     // run base method
     register(forwarder, parameters);
diff --git a/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java b/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
index 3a59a4a..ec6d353 100644
--- a/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
+++ b/src/main/java/com/intel/jndn/management/helpers/EncodingHelper.java
@@ -14,8 +14,8 @@
 package com.intel.jndn.management.helpers;
 
 import net.named_data.jndn.ControlParameters;
-import net.named_data.jndn.ForwardingFlags;
 import net.named_data.jndn.Name;
+import net.named_data.jndn.RegistrationOptions;
 import net.named_data.jndn.encoding.EncodingException;
 import net.named_data.jndn.encoding.tlv.Tlv;
 import net.named_data.jndn.encoding.tlv.TlvDecoder;
@@ -179,7 +179,8 @@
 
     // Encode ForwardingFlags
     int flags = controlParameters.getForwardingFlags().getNfdForwardingFlags();
-    if (flags != new ForwardingFlags().getNfdForwardingFlags()) { // The flags are not the default value.
+
+    if (flags != new RegistrationOptions().getNfdForwardingFlags()) { // The flags are not the default value.
       encoder.writeNonNegativeIntegerTlv(Tlv.ControlParameters_Flags, flags);
     }
 
