diff --git a/apps/ccnx-interest-sender.cc b/apps/ccnx-interest-sender.cc
index f7b7ac0..6ca40a3 100644
--- a/apps/ccnx-interest-sender.cc
+++ b/apps/ccnx-interest-sender.cc
@@ -37,14 +37,14 @@
                    TimeValue (Seconds (0.1)),
                    MakeTimeAccessor (&CcnxInterestSender::m_offTime),
                    MakeTimeChecker ())
-    /*.AddAttribute ("NameComponents","CcnxName of the Interest (use Name::Components)",
-                   Name::ComponentsValue(Name::Components()),
-                   Name::MakeComponentsAccessor(&CcnxInterestSender::m_interestName),
-                   Name::MakeComponentsChecker())*/
-    .AddAttribute ("NameComponents","CcnxName of the Interest (use Name::Components)",
-                   PointerValue (CreateObject<Name::Components> ()),
+    /*.AddAttribute ("NameComponents","CcnxName of the Interest (use CcnxNameComponents)",
+                   CcnxNameComponentsValue(CcnxNameComponents()),
+                   MakeCcnxNameComponentsAccessor(&CcnxInterestSender::m_interestName),
+                   MakeCcnxNameComponentsChecker())*/
+    .AddAttribute ("InterestName","CcnxName of the Interest (use CcnxNameComponents)",
+                   PointerValue (CreateObject<CcnxNameComponents> ()),
                    MakePointerAccessor (&CcnxInterestSender::m_interestName),
-                   MakePointerChecker<Name::Components> ())
+                   MakePointerChecker<CcnxNameComponents> ())
     .AddAttribute ("LifeTime", "LifeTime fo interest packet",
                    TimeValue (Seconds (4.0)),
                    MakeTimeAccessor (&CcnxInterestSender::m_interestLifeTime),
@@ -61,14 +61,14 @@
                    BooleanValue(false),
                    MakeBooleanAccessor(&CcnxInterestSender::m_childSelector),
                    MakeBooleanChecker())
-    /*.AddAttribute ("Exclude","only simple name matching is supported (use Name::Components)",
-                   Name::ComponentsValue(Name::Components()),
-                   Name::MakeComponentsAccessor(&CcnxInterestSender::m_exclude),
-                   Name::MakeComponentsChecker())*/
-    .AddAttribute ("Exclude", "only simple name matching is supported (use Name::Components)",
-                   PointerValue (CreateObject<Name::Components> ()),
+    /*.AddAttribute ("Exclude","only simple name matching is supported (use CcnxNameComponents)",
+                   CcnxNameComponentsValue(CcnxNameComponents()),
+                   MakeCcnxNameComponentsAccessor(&CcnxInterestSender::m_exclude),
+                   MakeCcnxNameComponentsChecker())*/
+    .AddAttribute ("Exclude", "only simple name matching is supported (use CcnxNameComponents)",
+                   PointerValue (CreateObject<CcnxNameComponents> ()),
                    MakePointerAccessor (&CcnxInterestSender::m_exclude),
-                   MakePointerChecker<Name::Components> ())
+                   MakePointerChecker<CcnxNameComponents> ())
     .AddAttribute ("Initial Nonce", "If 0 then nonce is not used",
                    UintegerValue(1),
                    MakeUintegerAccessor(&CcnxInterestSender::m_initialNonce),
@@ -143,11 +143,11 @@
     uint32_t randomNonce = UniformVariable().GetInteger(1, std::numeric_limits<uint32_t>::max ());
     CcnxInterestHeader interestHeader;
     interestHeader.SetNonce(randomNonce);
-    //const Ptr<Name::Components> name = Create<Name::Components>(m_interestName);
+    //const Ptr<CcnxNameComponents> name = Create<CcnxNameComponents>(m_interestName);
     interestHeader.SetName(m_interestName);
     interestHeader.SetInterestLifetime(m_interestLifeTime);
     interestHeader.SetChildSelector(m_childSelector);
-    //const Ptr<Name::Components> exclude = Create<Name::Components>(m_exclude);
+    //const Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents>(m_exclude);
     interestHeader.SetExclude(m_exclude);
     interestHeader.SetMaxSuffixComponents(m_maxSuffixComponents);
     interestHeader.SetMinSuffixComponents(m_minSuffixComponents);
diff --git a/apps/ccnx-interest-sender.h b/apps/ccnx-interest-sender.h
index 0a9d2b5..345da02 100644
--- a/apps/ccnx-interest-sender.h
+++ b/apps/ccnx-interest-sender.h
@@ -59,12 +59,12 @@
         
     //Time m_onTime;
     Time m_offTime;
-    Ptr<Name::Components> m_interestName;
+    Ptr<CcnxNameComponents> m_interestName;
     Time m_interestLifeTime;
     int32_t m_minSuffixComponents;
     int32_t m_maxSuffixComponents;
     bool m_childSelector;
-    Ptr<Name::Components> m_exclude;
+    Ptr<CcnxNameComponents> m_exclude;
     uint32_t m_initialNonce;
     
     //EventId         m_startStopEvent;     // Event id for next start or stop event
@@ -78,12 +78,12 @@
     void Construct (Ptr<Node> n,
                     std::string tid,
                     const Time& offtime,
-                    Ptr<Name::Components> nameComponents,
+                    Ptr<CcnxNameComponents> nameComponents,
                     const Time& lifetime,
                     const int32_t& minSuffixComponents,
                     const int32_t& maxSuffixComponents,
                     const bool childSelector,
-                    Ptr<Name::Components> exclude,
+                    Ptr<CcnxNameComponents> exclude,
                     const uint32_t& initialNonce
                     );
     
