documentation
diff --git a/model/ccnx-name-components.h b/model/ccnx-name-components.h
index fdffe91..892ac4b 100644
--- a/model/ccnx-name-components.h
+++ b/model/ccnx-name-components.h
@@ -34,58 +34,90 @@
 
 namespace ns3 {
 
+/**
+ * \ingroup ccnx
+ * \brief Hierarchical CCNX name
+ * A Name element represents a hierarchical name for CCNx content. 
+ * It simply contains a sequence of Component elements. 
+ * Each Component element contains a sequence of zero or more bytes. 
+ * There are no restrictions on what byte sequences may be used.
+ * The Name element in an Interest is often referred to with the term name prefix or simply prefix.
+ */ 
 class CcnxNameComponents : public SimpleRefCount<CcnxNameComponents>
 {
 public:
   /**
-   * \brief Creates a prefix with zero components (can be looked as root "/")
+   * \brief Constructor 
+   * Creates a prefix with zero components (can be looked as root "/")
    */
   CcnxNameComponents ();
-  // CcnxNameComponents (const std::string &s);
+  
+  /**
+   * \brief Constructor
+   * Creates a prefix from a list of strings where every string represents a prefix component
+   * @param[in] components A list of strings
+   */
   CcnxNameComponents (const std::list<boost::reference_wrapper<const std::string> > &components);
 
+  /**
+   * \brief Generic Add method
+   * Appends object of type T to the list of components 
+   * @param[in] value The object to be appended
+   */
   template<class T>
   inline void
   Add (const T &value);
   
+  /**
+   * \brief Generic constructor operator
+   * The object of type T will be appended to the list of components
+   */
   template<class T>
   inline CcnxNameComponents&
   operator () (const T &value);
 
+  /**
+   * \brief Get a name
+   * Returns a list of components (strings)
+   */
   const std::list<std::string> &
   GetComponents () const;
 
   /**
    * \brief Get subcomponents of the name, starting with first component
-   * \param num Number of components to return. Valid value is in range [1, GetComponents ().size ()]
+   * @param[in] num Number of components to return. Valid value is in range [1, GetComponents ().size ()]
    */
   std::list<boost::reference_wrapper<const std::string> >
   GetSubComponents (size_t num) const;
   
-  // virtual uint32_t
-  // GetSerializedSize (void) const;
-
-  // virtual void
-  // Serialize (Buffer::Iterator start) const;
-
-  // virtual uint32_t
-  // Deserialize (Buffer::Iterator start);
-
+  /**
+   * \brief Print name
+   * @param[in] os Stream to print 
+   */
   void Print (std::ostream &os) const;
 
+  /**
+   * \brief Returns the size of CcnxNameComponents
+   */
   inline size_t
   size () const;
 
+  /**
+   * \brief Equality operator for CcnxNameComponents
+   */
   inline bool
   operator== (const CcnxNameComponents &prefix) const;
 
+  /**
+   * \brief Less than operator for CcnxNameComponents
+   */
   inline bool
   operator< (const CcnxNameComponents &prefix) const;
   
 private:
-  std::list<std::string> m_prefix;
+  std::list<std::string> m_prefix;                              ///< \brief a list of strings (components)
 
-  typedef std::list<std::string>::iterator iterator;
+  typedef std::list<std::string>::iterator iterator;            
   typedef std::list<std::string>::const_iterator const_iterator;
 };
 
@@ -97,20 +129,24 @@
 
 /**
  * \brief Read components from input and add them to components. Will read input stream till eof
- *
- * \todo Check that NS-3 doesn't give unlimited input streams... Otherwise it would be disaster
- *
  * Substrings separated by slashes will become separate components
  */
 std::istream &
 operator >> (std::istream &is, CcnxNameComponents &components);
-  
+
+/**
+ * \brief Returns the size of CcnxNameComponents object
+ */  
 size_t
 CcnxNameComponents::size () const
 {
   return m_prefix.size ();
 }
 
+/**
+ * \brief Generic constructor operator
+ * The object of type T will be appended to the list of components
+ */
 template<class T>
 CcnxNameComponents&
 CcnxNameComponents::operator () (const T &value)
@@ -119,13 +155,11 @@
   return *this;
 }
 
-// template<>
-// void
-// CcnxNameComponents::Add (const std::string &string)
-// {
-//   m_prefix.push_back (string);
-// }
-
+/**
+ * \brief Generic Add method
+ * Appends object of type T to the list of components 
+ * @param[in] value The object to be appended
+ */
 template<class T>
 void
 CcnxNameComponents::Add (const T &value)
@@ -135,6 +169,9 @@
   m_prefix.push_back (os.str ());
 }
 
+/**
+ * \brief Equality operator for CcnxNameComponents
+ */
 bool
 CcnxNameComponents::operator== (const CcnxNameComponents &prefix) const
 {
@@ -144,6 +181,9 @@
   return std::equal (m_prefix.begin (), m_prefix.end (), prefix.m_prefix.begin ());
 }
 
+/**
+ * \brief Less than operator for CcnxNameComponents
+ */
 bool
 CcnxNameComponents::operator< (const CcnxNameComponents &prefix) const
 {