diff --git a/apps/ccnx-interest-sender.h b/apps/ccnx-interest-sender.h
index 04e9801..865841a 100644
--- a/apps/ccnx-interest-sender.h
+++ b/apps/ccnx-interest-sender.h
@@ -27,7 +27,7 @@
 #include "ns3/simulator.h"
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-local-face.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/packet.h"
 #include "ns3/boolean.h"
 #include "ns3/integer.h"
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
index d252cd5..8548598 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-content-object-visitor.cc
@@ -23,7 +23,7 @@
 
 #include "ns3/ccnb-parser-block.h"
 #include "ns3/ccnb-parser-dtag.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/assert.h"
 
 #include "ns3/ccnx-content-object-header.h"
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
index 05c6beb..052cb8c 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-interest-visitor.cc
@@ -22,7 +22,7 @@
 
 #include "ns3/ccnb-parser-block.h"
 #include "ns3/ccnb-parser-dtag.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/assert.h"
 #include "ns3/nstime.h"
 
diff --git a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
index 49b2fc5..08bfe2e 100644
--- a/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
+++ b/helper/ccnb-parser/visitors/ccnb-parser-name-components-visitor.cc
@@ -22,7 +22,7 @@
 
 #include "ccnb-parser-string-visitor.h"
 #include "ns3/ccnb-parser-dtag.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 
 namespace ns3 {
 namespace CcnbParser {
diff --git a/helper/ccnx-encoding-helper.cc b/helper/ccnx-encoding-helper.cc
index 6a4d889..3dd7ad6 100644
--- a/helper/ccnx-encoding-helper.cc
+++ b/helper/ccnx-encoding-helper.cc
@@ -20,7 +20,7 @@
 
 #include "ccnx-encoding-helper.h"
 
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/ccnx-content-object-header.h"
 
diff --git a/helper/ccnx-interest-sender-helper.h b/helper/ccnx-interest-sender-helper.h
index 2ff46cc..b58b41f 100644
--- a/helper/ccnx-interest-sender-helper.h
+++ b/helper/ccnx-interest-sender-helper.h
@@ -29,7 +29,7 @@
 #include "ns3/net-device.h"
 #include "ns3/node-container.h"
 #include "ns3/application-container.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/pointer.h"
 #include "ns3/ccnx-local-face.h"
 
diff --git a/model/ccnx-content-object-header.h b/model/ccnx-content-object-header.h
index cebfd4d..88887a6 100644
--- a/model/ccnx-content-object-header.h
+++ b/model/ccnx-content-object-header.h
@@ -30,7 +30,7 @@
 #include <vector>
 #include <list>
 
-#include "name-components.h"
+#include "ccnx-name-components.h"
 
 namespace ns3
 {
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index dfd6e30..d364917 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -38,7 +38,7 @@
 #include "hash-helper.h"
 #include "ccnx-content-object-header.h"
 #include "ccnx-interest-header.h"
-#include "name-components.h"
+#include "ccnx-name-components.h"
 
 namespace  ns3
 {
diff --git a/model/ccnx-interest-header.h b/model/ccnx-interest-header.h
index 3b59c00..e8436fb 100644
--- a/model/ccnx-interest-header.h
+++ b/model/ccnx-interest-header.h
@@ -30,7 +30,7 @@
 #include <vector>
 #include <list>
 
-#include "name-components.h"
+#include "ccnx-name-components.h"
 
 namespace ns3
 {
diff --git a/model/ccnx-name-components.cc b/model/ccnx-name-components.cc
new file mode 100644
index 0000000..18e7ea2
--- /dev/null
+++ b/model/ccnx-name-components.cc
@@ -0,0 +1,90 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#include "ccnx-name-components.h"
+
+#include <iostream>
+
+using namespace std;
+
+namespace ns3 {
+
+CcnxNameComponents::CcnxNameComponents ()
+{
+  // m_value = ccn_charbuf_create ();
+  // ccn_name_init(m_value);
+}
+
+CcnxNameComponents::CcnxNameComponents (const string &s)
+{
+  // m_value = ccn_charbuf_create ();
+  // ccn_name_init(m_value);
+  // (*this) (s);
+  m_prefix.push_back (s);
+}
+
+CcnxNameComponents::~CcnxNameComponents ()
+{
+  // ccn_charbuf_destroy(&m_value);
+}
+
+const std::list<std::string> &
+CcnxNameComponents::GetComponents () const
+{
+  return m_prefix;
+}
+
+  
+// const ccn_charbuf*
+// Components::GetName () const
+// {
+//   return m_value;
+// }
+
+CcnxNameComponents&
+CcnxNameComponents::operator () (const string &s)
+{
+  // ccn_name_append_str (m_value,s.c_str());
+  m_prefix.push_back (s);
+  return *this;
+}
+
+// Components::operator const unsigned char* ()
+// {
+//   return m_value->buf;
+// }
+
+void
+CcnxNameComponents::Print (std::ostream &os) const
+{
+  for (const_iterator i=m_prefix.begin(); i!=m_prefix.end(); i++)
+    {
+      os << "/" << *i;
+    }
+}
+  
+std::ostream &
+operator << (std::ostream &os, const CcnxNameComponents &components)
+{
+  components.Print (os);
+  return os;
+}
+}
+
diff --git a/model/ccnx-name-components.h b/model/ccnx-name-components.h
new file mode 100644
index 0000000..55cd5ae
--- /dev/null
+++ b/model/ccnx-name-components.h
@@ -0,0 +1,120 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#ifndef _NDN_NAME_COMPONENTS_H_
+#define _NDN_NAME_COMPONENTS_H_
+
+#include "ns3/simple-ref-count.h"
+#include "ns3/attribute.h"
+#include "ns3/attribute-helper.h"
+
+#include <string>
+#include <algorithm>
+#include <list>
+#include "ns3/object.h"
+
+namespace ns3 {
+
+class CcnxNameComponents : public Object
+
+{
+public:
+  CcnxNameComponents ();
+  CcnxNameComponents (const std::string &s);
+  ~CcnxNameComponents ();
+  
+  inline void
+  Add (const std::string &s);
+       
+  CcnxNameComponents&
+  operator () (const std::string &s);
+
+  const std::list<std::string> &
+  GetComponents () const;
+  
+  // virtual uint32_t
+  // GetSerializedSize (void) const;
+
+  // virtual void
+  // Serialize (Buffer::Iterator start) const;
+
+  // virtual uint32_t
+  // Deserialize (Buffer::Iterator start);
+
+  void Print (std::ostream &os) const;
+
+  inline size_t
+  size () const;
+
+  inline bool
+  operator== (const CcnxNameComponents &prefix) const;
+
+  inline bool
+  operator< (const CcnxNameComponents &prefix) const;
+  
+private:
+  std::list<std::string> m_prefix;
+
+  typedef std::list<std::string>::iterator iterator;
+  typedef std::list<std::string>::const_iterator const_iterator;
+};
+
+std::ostream & operator << (std::ostream &os, const CcnxNameComponents &components);
+
+size_t
+CcnxNameComponents::size () const
+{
+  return m_prefix.size ();
+}
+  
+void
+CcnxNameComponents::Add (const std::string &s)
+{
+  (*this) (s);
+}
+
+bool
+CcnxNameComponents::operator== (const CcnxNameComponents &prefix) const
+{
+  if (m_prefix.size () != prefix.m_prefix.size ())
+    return false;
+  
+  return std::equal (m_prefix.begin (), m_prefix.end (), prefix.m_prefix.begin ());
+}
+
+bool
+CcnxNameComponents::operator< (const CcnxNameComponents &prefix) const
+{
+  return std::lexicographical_compare (m_prefix.begin (), m_prefix.end (),
+                                       prefix.m_prefix.begin (), prefix.m_prefix.end ());
+}
+
+    
+/**
+* \class ns3::ComponentsValue
+* \brief hold objects of type ns3:CcnxNameComponents
+*/
+ATTRIBUTE_VALUE_DEFINE (CcnxNameComponents);
+ATTRIBUTE_ACCESSOR_DEFINE (CcnxNameComponents);
+ATTRIBUTE_CHECKER_DEFINE (CcnxNameComponents);
+} // namespace ns3
+
+#endif // _NDN_NAME_COMPONENTS_H_
+
diff --git a/model/ccnx-rit.h b/model/ccnx-rit.h
index b448320..99b2fac 100644
--- a/model/ccnx-rit.h
+++ b/model/ccnx-rit.h
@@ -23,7 +23,7 @@
 
 #include <list>
 #include "ns3/nstime.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 #include "ns3/object.h"
 #include "ns3/nstime.h"
 #include "ns3/event-id.h"
diff --git a/model/ccnx-route.h b/model/ccnx-route.h
index 65d978f..65fed46 100644
--- a/model/ccnx-route.h
+++ b/model/ccnx-route.h
@@ -25,7 +25,7 @@
 
 #include "ns3/ptr.h"
 #include "ns3/simple-ref-count.h"
-#include "ns3/name-components.h"
+#include "ns3/ccnx-name-components.h"
 
 namespace ns3 {
   
diff --git a/model/hash-helper.h b/model/hash-helper.h
index 0440e29..c14b567 100644
--- a/model/hash-helper.h
+++ b/model/hash-helper.h
@@ -23,7 +23,7 @@
 
 #include <string>
 #include <boost/foreach.hpp>
-#include "name-components.h"
+#include "ccnx-name-components.h"
 
 namespace ns3
 {
