diff --git a/src/test/java/com/intel/jndn/management/NfdcIT.java b/src/test/java/com/intel/jndn/management/NfdcIT.java
index 350c79a..f1deef1 100644
--- a/src/test/java/com/intel/jndn/management/NfdcIT.java
+++ b/src/test/java/com/intel/jndn/management/NfdcIT.java
@@ -13,7 +13,6 @@
  */
 package com.intel.jndn.management;
 
-import com.intel.jndn.management.enums.LocalControlHeader;
 import com.intel.jndn.management.enums.Strategies;
 import com.intel.jndn.management.types.RibEntry;
 import com.intel.jndn.management.types.StrategyChoice;
@@ -62,7 +61,7 @@
   @Before
   public void setUp() throws SecurityException {
     face = new Face("localhost");
-    mockFace = new MockFace();
+    mockFace = new MockFace(new MockFace.Options().setEnablePacketLogging(false).setEnableRegistrationReply(false));
     noKeyChainFace = new Face("localhost"); // don't set command signing info
     KeyChain keyChain = MockKeyChain.configure(new Name("/tmp/identity"));
     face.setCommandSigningInfo(keyChain, keyChain.getDefaultCertificateName());
@@ -226,7 +225,7 @@
 
   @Test
   public void testFailOfSetStrategyWithoutKeychain() throws Exception {
-    exception.expect(IllegalArgumentException.class);
+    exception.expect(NullPointerException.class);
     Nfdc.setStrategy(noKeyChainFace, new Name("/test"), Strategies.BEST_ROUTE);
   }
 
@@ -256,19 +255,6 @@
     Nfdc.setStrategy(mockFace, new Name("/"), Strategies.BROADCAST);
   }
 
-  /**
-   * LocalControlHeader works only with NFD < 0.3.4, broken otherwise.
-   */
-  @Test(expected = ManagementException.class)
-  public void testLocalControlHeader() throws Exception {
-    Nfdc.enableLocalControlHeader(face, LocalControlHeader.INCOMING_FACE_ID);
-    Thread.sleep(1000); // strategy takes a while to register
-
-    // TODO: add asserts
-
-    Nfdc.disableLocalControlHeader(face, LocalControlHeader.INCOMING_FACE_ID);
-  }
-
   @Test
   public void testGetChannelStatus() throws Exception {
     assertFalse(Nfdc.getChannelStatusList(face).isEmpty());
diff --git a/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java b/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
index a960e15..0b09dee 100644
--- a/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/types/FaceStatusTest.java
@@ -24,6 +24,7 @@
 import java.nio.ByteBuffer;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 /**
  * Test encode/decode of FaceStatus.
@@ -36,40 +37,98 @@
   @Before
   public void setUp() throws Exception {
     testFaceStatusWire = TestHelper.bufferFromIntArray(new int[] {
-      0x80, 0x5e, 0x69, 0x01, 0x64, 0x72, 0x15, 0x74, 0x63, 0x70,
+      0x80, 0x6a, 0x69, 0x01, 0x64, 0x72, 0x15, 0x74, 0x63, 0x70,
       0x34, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32, 0x2e, 0x30, 0x2e,
       0x32, 0x2e, 0x31, 0x3a, 0x36, 0x33, 0x36, 0x33, 0x81, 0x16,
       0x74, 0x63, 0x70, 0x34, 0x3a, 0x2f, 0x2f, 0x31, 0x39, 0x32,
       0x2e, 0x30, 0x2e, 0x32, 0x2e, 0x32, 0x3a, 0x35, 0x35, 0x35,
       0x35, 0x35, 0x6d, 0x02, 0x27, 0x10, 0x84, 0x01, 0x01, 0x85,
-      0x01, 0x01, 0x86, 0x01, 0x01, 0x90, 0x01, 0x0a, 0x91, 0x01,
-      0xc8, 0x97, 0x01, 0x01, 0x92, 0x02, 0x0b, 0xb8, 0x93, 0x01,
-      0x04, 0x98, 0x01, 0x02, 0x94, 0x04, 0x4f, 0x41, 0xe7, 0x7b,
-      0x95, 0x04, 0x3b, 0x8d, 0x37, 0x30,
+      0x01, 0x01, 0x86, 0x01, 0x01, 0x87, 0x01, 0x05, 0x88, 0x01,
+      0x07, 0x89, 0x01, 0x09, 0x90, 0x01, 0x0a, 0x91, 0x01, 0xc8,
+      0x97, 0x01, 0x01, 0x92, 0x02, 0x0b, 0xb8, 0x93, 0x01, 0x04,
+      0x98, 0x01, 0x02, 0x94, 0x04, 0x4f, 0x41, 0xe7, 0x7b, 0x95,
+      0x04, 0x3b, 0x8d, 0x37, 0x30, 0x6c, 0x01, 0x07,
     });
   }
 
   @Test
-  public void testEncode() throws Exception {
+  public void testSettersGetters() throws Exception {
     FaceStatus status = new FaceStatus();
-    status.setFaceId(100)
+    status
+      .setFaceId(100)
       .setRemoteUri("tcp4://192.0.2.1:6363")
       .setLocalUri("tcp4://192.0.2.2:55555")
       .setFaceScope(FaceScope.LOCAL)
       .setFacePersistency(FacePersistency.ON_DEMAND)
       .setLinkType(LinkType.MULTI_ACCESS)
       .setExpirationPeriod(10000)
+      .setBaseCongestionMarkingInterval(5)
+      .setDefaultCongestionThreshold(7)
+      .setMtu(9)
       .setNInInterests(10)
-      .setNInDatas(200)
+      .setNInData(200)
       .setNInNacks(1)
       .setNOutInterests(3000)
-      .setNOutDatas(4)
+      .setNOutData(4)
       .setNOutNacks(2)
       .setNInBytes(1329719163)
-      .setNOutBytes(999110448);
+      .setNOutBytes(999110448)
+      .setFlags(0x7);
+
+    assertEquals(100, status.getFaceId());
+    assertEquals("tcp4://192.0.2.1:6363", status.getRemoteUri());
+    assertEquals("tcp4://192.0.2.2:55555", status.getLocalUri());
+    assertEquals(FaceScope.LOCAL, status.getFaceScope());
+    assertEquals(FacePersistency.ON_DEMAND, status.getFacePersistency());
+    assertEquals(LinkType.MULTI_ACCESS, status.getLinkType());
+    assertEquals(10000, status.getExpirationPeriod());
+    assertEquals(10, status.getNInInterests());
+    assertEquals(200, status.getNInData());
+    assertEquals(1, status.getNInNacks());
+    assertEquals(3000, status.getNOutInterests());
+    assertEquals(4, status.getNOutData());
+    assertEquals(2, status.getNOutNacks());
+    assertEquals(1329719163, status.getNInBytes());
+    assertEquals(999110448, status.getNOutBytes());
+
+    assertEquals(9, status.getMtu());
+    assertEquals(0x7, status.getFlags());
+    assertEquals(5, status.getBaseCongestionMarkingInterval());
+    assertEquals(7, status.getDefaultCongestionThreshold());
+    assertTrue(status.hasMtu());
+    assertTrue(status.hasBaseCongestionMarkingInterval());
+    assertTrue(status.hasDefaultCongestionThreshold());
+  }
+
+  @Test
+  public void testEncode() throws Exception {
+    FaceStatus status = new FaceStatus();
+    status
+      .setFaceId(100)
+      .setRemoteUri("tcp4://192.0.2.1:6363")
+      .setLocalUri("tcp4://192.0.2.2:55555")
+      .setFaceScope(FaceScope.LOCAL)
+      .setFacePersistency(FacePersistency.ON_DEMAND)
+      .setLinkType(LinkType.MULTI_ACCESS)
+      .setExpirationPeriod(10000)
+      .setBaseCongestionMarkingInterval(5)
+      .setDefaultCongestionThreshold(7)
+      .setMtu(9)
+      .setNInInterests(10)
+      .setNInData(200)
+      .setNInNacks(1)
+      .setNOutInterests(3000)
+      .setNOutData(4)
+      .setNOutNacks(2)
+      .setNInBytes(1329719163)
+      .setNOutBytes(999110448)
+      .setFlags(0x7);
 
     // encode
     Blob encoded = status.wireEncode();
+//    for (final byte b : encoded.getImmutableArray()) {
+//      System.err.format("0x%02x, ", b);
+//    }
     assertEquals(testFaceStatusWire, encoded.buf());
   }
 
@@ -85,46 +144,64 @@
     assertEquals(LinkType.MULTI_ACCESS, status.getLinkType());
     assertEquals(10000, status.getExpirationPeriod());
     assertEquals(10, status.getNInInterests());
-    assertEquals(200, status.getNInDatas());
+    assertEquals(200, status.getNInData());
     assertEquals(1, status.getNInNacks());
     assertEquals(3000, status.getNOutInterests());
-    assertEquals(4, status.getNOutDatas());
+    assertEquals(4, status.getNOutData());
     assertEquals(2, status.getNOutNacks());
     assertEquals(1329719163, status.getNInBytes());
     assertEquals(999110448, status.getNOutBytes());
+
+    assertEquals(9, status.getMtu());
+    assertEquals(0x7, status.getFlags());
+    assertEquals(5, status.getBaseCongestionMarkingInterval());
+    assertEquals(7, status.getDefaultCongestionThreshold());
+    assertTrue(status.hasMtu());
+    assertTrue(status.hasBaseCongestionMarkingInterval());
+    assertTrue(status.hasDefaultCongestionThreshold());
   }
 
   @Test
   public void testToString() throws Exception {
     FaceStatus status = new FaceStatus(testFaceStatusWire);
 
-    assertEquals("FaceStatus(FaceID: 100,\n" +
-        "RemoteUri: tcp4://192.0.2.1:6363,\n" +
-        "LocalUri: tcp4://192.0.2.2:55555,\n" +
-        "ExpirationPeriod: 10000 milliseconds,\n" +
-        "FaceScope: LOCAL,\n" +
-        "FacePersistency: ON_DEMAND,\n" +
-        "LinkType: MULTI_ACCESS,\n" +
-        "Counters: { Interests: {in: 10, out: 3000},\n" +
-        "            Data: {in: 200, out: 4},\n" +
-        "            Nack: {in: 1, out: 2},\n" +
-        "            bytes: {in: 1329719163, out: 999110448} }\n" +
-        ")",
+    assertEquals(
+      "Face(FaceId: 100,\n" +
+      "     RemoteUri: tcp4://192.0.2.1:6363,\n" +
+      "     LocalUri: tcp4://192.0.2.2:55555,\n" +
+      "     ExpirationPeriod: 10000 milliseconds,\n" +
+      "     FaceScope: local,\n" +
+      "     FacePersistency: on-demand,\n" +
+      "     LinkType: multi-access,\n" +
+      "     BaseCongestionMarkingInterval: 5 nanoseconds,\n" +
+      "     DefaultCongestionThreshold: 7 bytes,\n" +
+      "     Mtu: 9 bytes,\n" +
+      "     Flags: 0x7,\n" +
+      "     Counters: {Interests: {in: 10, out: 3000},\n" +
+      "                Data: {in: 200, out: 4},\n" +
+      "                Nacks: {in: 1, out: 2},\n" +
+      "                bytes: {in: 1329719163, out: 999110448}}\n" +
+      "     )",
       status.toString());
 
     status.setExpirationPeriod(0);
-    assertEquals("FaceStatus(FaceID: 100,\n" +
-        "RemoteUri: tcp4://192.0.2.1:6363,\n" +
-        "LocalUri: tcp4://192.0.2.2:55555,\n" +
-        "ExpirationPeriod: infinite,\n" +
-        "FaceScope: LOCAL,\n" +
-        "FacePersistency: ON_DEMAND,\n" +
-        "LinkType: MULTI_ACCESS,\n" +
-        "Counters: { Interests: {in: 10, out: 3000},\n" +
-        "            Data: {in: 200, out: 4},\n" +
-        "            Nack: {in: 1, out: 2},\n" +
-        "            bytes: {in: 1329719163, out: 999110448} }\n" +
-        ")",
+    assertEquals(
+      "Face(FaceId: 100,\n" +
+      "     RemoteUri: tcp4://192.0.2.1:6363,\n" +
+        "     LocalUri: tcp4://192.0.2.2:55555,\n" +
+        "     ExpirationPeriod: infinite,\n" +
+        "     FaceScope: local,\n" +
+        "     FacePersistency: on-demand,\n" +
+        "     LinkType: multi-access,\n" +
+        "     BaseCongestionMarkingInterval: 5 nanoseconds,\n" +
+        "     DefaultCongestionThreshold: 7 bytes,\n" +
+        "     Mtu: 9 bytes,\n" +
+        "     Flags: 0x7,\n" +
+        "     Counters: {Interests: {in: 10, out: 3000},\n" +
+        "                Data: {in: 200, out: 4},\n" +
+        "                Nacks: {in: 1, out: 2},\n" +
+        "                bytes: {in: 1329719163, out: 999110448}}\n" +
+        "     )",
       status.toString());
   }
 }
diff --git a/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java b/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
index fc2484d..cc2eafe 100644
--- a/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
+++ b/src/test/java/com/intel/jndn/management/types/ForwarderStatusTest.java
@@ -56,10 +56,10 @@
     status.setNMeasurementsEntries(1771725298);
     status.setNCsEntries(1264968688);
     status.setNInInterests(612811615);
-    status.setNInDatas(1843576050);
+    status.setNInData(1843576050);
     status.setNInNacks(1234);
     status.setNOutInterests(952144445);
-    status.setNOutDatas(138198826);
+    status.setNOutData(138198826);
     status.setNOutNacks(4321);
 
     ByteBuffer wire = status.wireEncode().buf();
@@ -79,10 +79,10 @@
     assertEquals(1771725298,          status.getNMeasurementsEntries());
     assertEquals(1264968688,          status.getNCsEntries());
     assertEquals(612811615,           status.getNInInterests());
-    assertEquals(1843576050,          status.getNInDatas());
+    assertEquals(1843576050,          status.getNInData());
     assertEquals(1234,                status.getNInNacks());
     assertEquals(952144445,           status.getNOutInterests());
-    assertEquals(138198826,           status.getNOutDatas());
+    assertEquals(138198826,           status.getNOutData());
     assertEquals(4321,                status.getNOutNacks());
   }
 }
