diff --git a/tests/unit-tests/encoding/block.t.cpp b/tests/unit-tests/encoding/block.t.cpp
index f094460..967a285 100644
--- a/tests/unit-tests/encoding/block.t.cpp
+++ b/tests/unit-tests/encoding/block.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2017 Regents of the University of California.
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -177,9 +177,9 @@
   const uint8_t PACKET[] = {
     0x06, 0x20, // Data
           0x07, 0x11, // Name
-                0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, // NameComponent 'hello'
-                0x08, 0x01, 0x31, // NameComponent '1'
-                0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, // NameComponent 'world'
+                0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, // GenericNameComponent 'hello'
+                0x08, 0x01, 0x31, // GenericNameComponent '1'
+                0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, // GenericNameComponent 'world'
           0x14, 0x00, // MetaInfo empty
           0x15, 0x00, // Content empty
           0x16, 0x05, // SignatureInfo
@@ -306,9 +306,9 @@
   const uint8_t PACKET[] = {
     0x06, 0x20, // Data
           0x07, 0x11, // Name
-                0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, // NameComponent 'hello'
-                0x08, 0x01, 0x31, // NameComponent '1'
-                0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, // NameComponent 'world'
+                0x08, 0x05, 0x68, 0x65, 0x6c, 0x6c, 0x6f, // GenericNameComponent 'hello'
+                0x08, 0x01, 0x31, // GenericNameComponent '1'
+                0x08, 0x05, 0x77, 0x6f, 0x72, 0x6c, 0x64, // GenericNameComponent 'world'
           0x14, 0x00, // MetaInfo empty
           0x15, 0x00, // Content empty
           0x16, 0x05, // SignatureInfo
@@ -334,15 +334,15 @@
 BOOST_AUTO_TEST_CASE(InsertBeginning)
 {
   Block masterBlock(tlv::Name);
-  Block firstBlock = makeStringBlock(tlv::NameComponent, "firstName");
-  Block secondBlock = makeStringBlock(tlv::NameComponent, "secondName");
-  Block thirdBlock = makeStringBlock(tlv::NameComponent, "thirdName");
+  Block firstBlock = makeStringBlock(tlv::GenericNameComponent, "firstName");
+  Block secondBlock = makeStringBlock(tlv::GenericNameComponent, "secondName");
+  Block thirdBlock = makeStringBlock(tlv::GenericNameComponent, "thirdName");
 
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 0);
   masterBlock.push_back(secondBlock);
   masterBlock.push_back(thirdBlock);
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 2);
-  Block::element_const_iterator it = masterBlock.find(tlv::NameComponent);
+  Block::element_const_iterator it = masterBlock.find(tlv::GenericNameComponent);
   BOOST_CHECK_EQUAL(*it == secondBlock, true);
 
   it = masterBlock.insert(it, firstBlock);
@@ -355,9 +355,9 @@
 BOOST_AUTO_TEST_CASE(InsertEnd)
 {
   Block masterBlock(tlv::Name);
-  Block firstBlock = makeStringBlock(tlv::NameComponent, "firstName");
-  Block secondBlock = makeStringBlock(tlv::NameComponent, "secondName");
-  Block thirdBlock = makeStringBlock(tlv::NameComponent, "thirdName");
+  Block firstBlock = makeStringBlock(tlv::GenericNameComponent, "firstName");
+  Block secondBlock = makeStringBlock(tlv::GenericNameComponent, "secondName");
+  Block thirdBlock = makeStringBlock(tlv::GenericNameComponent, "thirdName");
 
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 0);
   masterBlock.push_back(firstBlock);
@@ -376,15 +376,15 @@
 BOOST_AUTO_TEST_CASE(InsertMiddle)
 {
   Block masterBlock(tlv::Name);
-  Block firstBlock = makeStringBlock(tlv::NameComponent, "firstName");
-  Block secondBlock = makeStringBlock(tlv::NameComponent, "secondName");
-  Block thirdBlock = makeStringBlock(tlv::NameComponent, "thirdName");
+  Block firstBlock = makeStringBlock(tlv::GenericNameComponent, "firstName");
+  Block secondBlock = makeStringBlock(tlv::GenericNameComponent, "secondName");
+  Block thirdBlock = makeStringBlock(tlv::GenericNameComponent, "thirdName");
 
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 0);
   masterBlock.push_back(firstBlock);
   masterBlock.push_back(thirdBlock);
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 2);
-  Block::element_const_iterator it = masterBlock.find(tlv::NameComponent);
+  Block::element_const_iterator it = masterBlock.find(tlv::GenericNameComponent);
   BOOST_CHECK_EQUAL(*it == firstBlock, true);
 
   it = masterBlock.insert(it + 1, secondBlock);
@@ -397,16 +397,16 @@
 BOOST_AUTO_TEST_CASE(EraseSingleElement)
 {
   Block masterBlock(tlv::Name);
-  Block firstBlock = makeStringBlock(tlv::NameComponent, "firstName");
-  Block secondBlock = makeStringBlock(tlv::NameComponent, "secondName");
-  Block thirdBlock = makeStringBlock(tlv::NameComponent, "thirdName");
+  Block firstBlock = makeStringBlock(tlv::GenericNameComponent, "firstName");
+  Block secondBlock = makeStringBlock(tlv::GenericNameComponent, "secondName");
+  Block thirdBlock = makeStringBlock(tlv::GenericNameComponent, "thirdName");
 
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 0);
   masterBlock.push_back(firstBlock);
   masterBlock.push_back(secondBlock);
   masterBlock.push_back(thirdBlock);
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 3);
-  Block::element_const_iterator it = masterBlock.find(tlv::NameComponent);
+  Block::element_const_iterator it = masterBlock.find(tlv::GenericNameComponent);
   it++;
   BOOST_CHECK_EQUAL(*it == secondBlock, true);
 
@@ -420,12 +420,12 @@
 BOOST_AUTO_TEST_CASE(EraseRange)
 {
   Block masterBlock(tlv::Name);
-  Block firstBlock = makeStringBlock(tlv::NameComponent, "firstName");
-  Block secondBlock = makeStringBlock(tlv::NameComponent, "secondName");
-  Block thirdBlock = makeStringBlock(tlv::NameComponent, "thirdName");
-  Block fourthBlock = makeStringBlock(tlv::NameComponent, "fourthName");
-  Block fifthBlock = makeStringBlock(tlv::NameComponent, "fifthName");
-  Block sixthBlock = makeStringBlock(tlv::NameComponent, "sixthName");
+  Block firstBlock = makeStringBlock(tlv::GenericNameComponent, "firstName");
+  Block secondBlock = makeStringBlock(tlv::GenericNameComponent, "secondName");
+  Block thirdBlock = makeStringBlock(tlv::GenericNameComponent, "thirdName");
+  Block fourthBlock = makeStringBlock(tlv::GenericNameComponent, "fourthName");
+  Block fifthBlock = makeStringBlock(tlv::GenericNameComponent, "fifthName");
+  Block sixthBlock = makeStringBlock(tlv::GenericNameComponent, "sixthName");
 
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 0);
   masterBlock.push_back(firstBlock);
@@ -435,7 +435,7 @@
   masterBlock.push_back(fifthBlock);
   masterBlock.push_back(sixthBlock);
   BOOST_CHECK_EQUAL(masterBlock.elements_size(), 6);
-  Block::element_const_iterator itStart = masterBlock.find(tlv::NameComponent);
+  Block::element_const_iterator itStart = masterBlock.find(tlv::GenericNameComponent);
   itStart++;
   Block::element_const_iterator itEnd = itStart + 3;
   BOOST_CHECK_EQUAL(*itStart == secondBlock, true);
diff --git a/tests/unit-tests/exclude.t.cpp b/tests/unit-tests/exclude.t.cpp
index 715f747..da93a85 100644
--- a/tests/unit-tests/exclude.t.cpp
+++ b/tests/unit-tests/exclude.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2013-2017 Regents of the University of California.
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -31,7 +31,7 @@
 
 BOOST_AUTO_TEST_SUITE(TestExclude)
 
-BOOST_AUTO_TEST_SUITE(GenericComponent) // exclude generic NameComponent
+BOOST_AUTO_TEST_SUITE(GenericComponent) // exclude GenericNameComponent
 
 BOOST_AUTO_TEST_CASE(One)
 {
@@ -239,7 +239,7 @@
 
 /** \brief make a name::Component with an octet repeated util::Sha256::DIGEST_SIZE times
  *  \param octet the octet to fill the component
- *  \param isDigest whether to make an ImplicitSha256DigestComponent or a generic NameComponent
+ *  \param isDigest whether to make an ImplicitSha256DigestComponent or a GenericNameComponent
  *  \param lastOctet if non-negative, set the last octet to a different value
  */
 static name::Component
@@ -503,7 +503,7 @@
   BOOST_CHECK_THROW(e2.wireDecode(Block(ANY_ANY, sizeof(ANY_ANY))),
                                   Exclude::Error);
 
-  // // <Exclude><Any/><NameComponent>T</NameComponent><Any/></Exclude>
+  // // <Exclude><Any/><GenericNameComponent>T</GenericNameComponent><Any/></Exclude>
   // const uint8_t ANY_COMPONENT_ANY[] = { 0x10, 0x07, 0x13, 0x00, 0x08, 0x01, 0x54, 0x13, 0x00 };
   // BOOST_CHECK_THROW(e2.wireDecode(Block(ANY_COMPONENT_ANY, sizeof(ANY_COMPONENT_ANY))),
   //                   Exclude::Error);
diff --git a/tests/unit-tests/interest.t.cpp b/tests/unit-tests/interest.t.cpp
index c1dc23d..4fe7288 100644
--- a/tests/unit-tests/interest.t.cpp
+++ b/tests/unit-tests/interest.t.cpp
@@ -48,9 +48,9 @@
   const uint8_t WIRE[] = {
     0x05, 0x1c, // Interest
           0x07, 0x14, // Name
-                0x08, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, // NameComponent
-                0x08, 0x03, 0x6e, 0x64, 0x6e, // NameComponent
-                0x08, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, // NameComponent
+                0x08, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, // GenericNameComponent
+                0x08, 0x03, 0x6e, 0x64, 0x6e, // GenericNameComponent
+                0x08, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, // GenericNameComponent
           0x0a, 0x04, // Nonce
                 0x01, 0x00, 0x00, 0x00
   };
@@ -74,9 +74,9 @@
   const uint8_t WIRE[] = {
     0x05, 0x31, // Interest
           0x07, 0x14, // Name
-                0x08, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, // NameComponent
-                0x08, 0x03, 0x6e, 0x64, 0x6e, // NameComponent
-                0x08, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, // NameComponent
+                0x08, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, // GenericNameComponent
+                0x08, 0x03, 0x6e, 0x64, 0x6e, // GenericNameComponent
+                0x08, 0x06, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, // GenericNameComponent
           0x09, 0x03, // Selectors
                 0x0d, 0x01, 0x01,  // MinSuffixComponents
           0x0a, 0x04, // Nonce
diff --git a/tests/unit-tests/name.t.cpp b/tests/unit-tests/name.t.cpp
index 67782cf..65cadf6 100644
--- a/tests/unit-tests/name.t.cpp
+++ b/tests/unit-tests/name.t.cpp
@@ -31,22 +31,22 @@
 
 static const uint8_t TestName[] = {
         0x7,  0x14, // Name
-          0x8,  0x5, // NameComponent
+          0x8,  0x5, // GenericNameComponent
               0x6c,  0x6f,  0x63,  0x61,  0x6c,
-          0x8,  0x3, // NameComponent
+          0x8,  0x3, // GenericNameComponent
               0x6e,  0x64,  0x6e,
-          0x8,  0x6, // NameComponent
+          0x8,  0x6, // GenericNameComponent
               0x70,  0x72,  0x65,  0x66,  0x69,  0x78
 };
 
 const uint8_t Name1[] = {0x7,  0x7, // Name
-                           0x8,  0x5, // NameComponent
+                           0x8,  0x5, // GenericNameComponent
                              0x6c,  0x6f,  0x63,  0x61,  0x6c};
 
 const uint8_t Name2[] = {0x7,  0xc, // Name
-                           0x8,  0x5, // NameComponent
+                           0x8,  0x5, // GenericNameComponent
                              0x6c,  0x6f,  0x63,  0x61,  0x6c,
-                           0x8,  0x3, // NameComponent
+                           0x8,  0x3, // GenericNameComponent
                              0x6e,  0x64,  0x6e};
 
 // ---- encoding, decoding ----
diff --git a/tests/unit-tests/selectors.t.cpp b/tests/unit-tests/selectors.t.cpp
index 0b5d70f..202fd71 100644
--- a/tests/unit-tests/selectors.t.cpp
+++ b/tests/unit-tests/selectors.t.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2013-2017 Regents of the University of California.
+/*
+ * Copyright (c) 2013-2018 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -74,10 +74,10 @@
                       0x08, 0x03, 0x6b, 0x65, 0x79,
                       0x08, 0x07, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
           0x10, 0x14, // Exclude
-                0x08, 0x04, 0x61, 0x6c, 0x65, 0x78, // NameComponent
-                0x08, 0x04, 0x78, 0x78, 0x78, 0x78, // NameComponent
+                0x08, 0x04, 0x61, 0x6c, 0x65, 0x78, // GenericNameComponent
+                0x08, 0x04, 0x78, 0x78, 0x78, 0x78, // GenericNameComponent
                 0x13, 0x00, // Any
-                0x08, 0x04, 0x79, 0x79, 0x79, 0x79, // NameComponent
+                0x08, 0x04, 0x79, 0x79, 0x79, 0x79, // GenericNameComponent
           0x11, 0x01, 0x01, // ChildSelector
           0x12, 0x00 // MustBeFresh
   };
