Merge remote-tracking branch 'git.irl/ilya'
diff --git a/apps/ccnx-app.h b/apps/ccnx-app.h
index 457172e..ae52048 100644
--- a/apps/ccnx-app.h
+++ b/apps/ccnx-app.h
@@ -43,6 +43,9 @@
 class CcnxApp: public Application
 {
 public:
+  /**
+   * \typedef A callback to pass packets to underlying CCNx protocol
+   */
   typedef Callback<bool, const Ptr<const Packet>&> ProtocolHandler;
   
   static TypeId GetTypeId ();
@@ -94,9 +97,9 @@
   StopApplication ();     // Called at time specified by Stop
 
 protected:
-  ProtocolHandler m_protocolHandler;
+  ProtocolHandler m_protocolHandler;      ///< \brief A callback to pass packets to underlying CCNx protocol
   bool m_active; 
-  Ptr<CcnxFace> m_face; // local face that is created 
+  Ptr<CcnxFace> m_face;   // local face that is created 
 
   TracedCallback<Ptr<const CcnxInterestHeader>,
                  Ptr<CcnxApp>, Ptr<CcnxFace> > m_receivedInterests;
diff --git a/apps/ccnx-consumer.cc b/apps/ccnx-consumer.cc
index 0010be2..9fc5d12 100644
--- a/apps/ccnx-consumer.cc
+++ b/apps/ccnx-consumer.cc
@@ -79,7 +79,7 @@
                    StringValue ("/"),
                    MakeCcnxNameComponentsAccessor (&CcnxConsumer::m_interestName),
                    MakeCcnxNameComponentsChecker ())
-    .AddAttribute ("LifeTime", "LifeTime fo interest packet",
+    .AddAttribute ("LifeTime", "LifeTime for interest packet",
                    StringValue ("2s"),
                    MakeTimeAccessor (&CcnxConsumer::m_interestLifeTime),
                    MakeTimeChecker ())
diff --git a/apps/ccnx-consumer.h b/apps/ccnx-consumer.h
index 6138416..9b28a2c 100644
--- a/apps/ccnx-consumer.h
+++ b/apps/ccnx-consumer.h
@@ -40,11 +40,19 @@
 namespace ns3 
 {
 
+/**
+ * @ingroup ccnx
+ * \brief CCNx application for sending out Interest packets
+ */
 class CcnxConsumer: public CcnxApp
 {
 public: 
   static TypeId GetTypeId ();
         
+  /**
+   * \brief Default constructor 
+   * Sets up randomizer function and packet sequence number
+   */
   CcnxConsumer ();
 
   // From CcnxApp
@@ -67,7 +75,9 @@
   StopApplication ();
   
 private:
-  //helpers
+  /**
+   * \brief Constructs the Interest packet and sends it using a callback to the underlying CCNx protocol
+   */
   void
   ScheduleNextPacket ();
 
@@ -89,15 +99,26 @@
   void
   SendPacket ();
 
+  /**
+   * \brief Checks if the packet need to be retransmitted becuase of retransmission timer expiration
+   */
   void
   CheckRetxTimeout ();
   
+  /**
+   * \brief Modifies the frequency of checking the retransmission timeouts
+   * \param retxTimer Timeout defining how frequent retransmission timeouts should be checked
+   */
   void
   SetRetxTimer (Time retxTimer);
 
+  /**
+   * \brief Returns the frequency of checking the retransmission timeouts
+   * \return Timeout defining how frequent retransmission timeouts should be checked
+   */
   Time
   GetRetxTimer () const;
-
+  
   double
   GetMaxSize () const;
 
@@ -116,24 +137,30 @@
   EventId         m_sendEvent; // Eventid of pending "send packet" event
   Time            m_retxTimer;
   EventId         m_retxEvent; // Event to check whether or not retransmission should be performed
-  
-  Time            m_rto; // Retransmission timeout
-  Time            m_rttVar; // RTT variance
-  Time            m_sRtt; // smoothed RTT
-  
-  Time               m_offTime;
-  CcnxNameComponents m_interestName;
-  Time               m_interestLifeTime;
-  int32_t            m_minSuffixComponents;
-  int32_t            m_maxSuffixComponents;
-  bool               m_childSelector;
-  CcnxNameComponents m_exclude;
 
+  Time            m_rto;        ///< \brief Retransmission timeout
+  Time            m_rttVar;     ///< \brief RTT variance
+  Time            m_sRtt;       ///< \brief smoothed RTT
+  
+  Time               m_offTime;             ///< \brief Time interval between packets
+  CcnxNameComponents m_interestName;        ///< \brief CcnxName of the Interest (use CcnxNameComponents)
+  Time               m_interestLifeTime;    ///< \brief LifeTime for interest packet
+  int32_t            m_minSuffixComponents; ///< \brief MinSuffixComponents. See CcnxInterestHeader for more information
+  int32_t            m_maxSuffixComponents; ///< \brief MaxSuffixComponents. See CcnxInterestHeader for more information
+  bool               m_childSelector;       ///< \brief ChildSelector. See CcnxInterestHeader for more information
+  CcnxNameComponents m_exclude;             ///< \brief Exclude. See CcnxInterestHeader for more information
+
+  /**
+   * \struct This struct contains sequence numbers of packets to be retransmitted
+   */
   struct RetxSeqsContainer :
     public std::set<uint32_t> { };
   
-  RetxSeqsContainer m_retxSeqs; // ordered set of sequence numbers to be retransmitted
+  RetxSeqsContainer m_retxSeqs;             ///< \brief ordered set of sequence numbers to be retransmitted
 
+  /**
+   * \struct This struct contains a pair of packet sequence number and its timeout
+   */ 
   struct SeqTimeout
   {
     SeqTimeout (uint32_t _seq, Time _time) : seq (_seq), time (_time) { }
@@ -145,6 +172,9 @@
   class i_seq { };
   class i_timestamp { }; 
   
+  /**
+   * \struct This struct contains a multi-index for the set of SeqTimeout structs
+   */
   struct SeqTimeoutsContainer :
     public boost::multi_index::multi_index_container<
     SeqTimeout,
@@ -160,9 +190,12 @@
       >
     > { } ;
 
-  SeqTimeoutsContainer m_seqTimeouts;
-  boost::mutex m_seqTimeoutsGuard;
+  SeqTimeoutsContainer m_seqTimeouts;       ///< \brief multi-index for the set of SeqTimeout structs
+  boost::mutex m_seqTimeoutsGuard;          ///< \brief mutex for safe work with the m_seqTimeouts
 
+  /**
+   * \brief A trace that is called after each transmitted Interest packet
+   */
   TracedCallback<Ptr<const CcnxInterestHeader>,
                  Ptr<CcnxApp>, Ptr<CcnxFace> > m_transmittedInterests;
 };
diff --git a/apps/ccnx-interest-sender.cc b/apps/ccnx-interest-sender.cc
deleted file mode 100644
index d110978..0000000
--- a/apps/ccnx-interest-sender.cc
+++ /dev/null
@@ -1,160 +0,0 @@
-// /* -*-  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-interest-sender.h"
-
-// NS_LOG_COMPONENT_DEFINE ("CcnxInterestSender");
-
-// namespace ns3
-// {    
-
-// NS_OBJECT_ENSURE_REGISTERED (CcnxInterestSender);
-
-// TypeId
-// CcnxInterestSender::GetTypeId (void)
-// {
-//   static TypeId tid = TypeId ("ns3::CcnxInterestSender")
-//     .SetParent<Application> ()
-//     .AddConstructor<CcnxInterestSender> ()
-//     .AddAttribute ("OffTime", "Time interval between packets",
-//                    TimeValue (Seconds (0.1)),
-//                    MakeTimeAccessor (&CcnxInterestSender::m_offTime),
-//                    MakeTimeChecker ())
-//     // Alex: this is incorrect. SetNode call is not called if face is created using this accessor
-//     // .AddAttribute ("Face","Local face to be used",
-//     //                PointerValue (CreateObject<CcnxLocalFace> ()),
-//     //                MakePointerAccessor (&CcnxInterestSender::m_face),
-//     //                MakePointerChecker<CcnxLocalFace> ())
-//     .AddAttribute ("NameComponents","CcnxName of the Interest (use CcnxNameComponents)",
-//                    CcnxNameComponentsValue (CcnxNameComponents (/* root */)),
-//                    MakeCcnxNameComponentsAccessor (&CcnxInterestSender::m_interestName),
-//                    MakeCcnxNameComponentsChecker ())
-//     .AddAttribute ("LifeTime", "LifeTime fo interest packet",
-//                    TimeValue (Seconds (4.0)),
-//                    MakeTimeAccessor (&CcnxInterestSender::m_interestLifeTime),
-//                    MakeTimeChecker ())
-//     .AddAttribute ("MinSuffixComponents", "MinSuffixComponents",
-//                    IntegerValue(-1),
-//                    MakeIntegerAccessor(&CcnxInterestSender::m_minSuffixComponents),
-//                    MakeIntegerChecker<int32_t>())
-//     .AddAttribute ("MaxSuffixComponents", "MaxSuffixComponents",
-//                    IntegerValue(-1),
-//                    MakeIntegerAccessor(&CcnxInterestSender::m_maxSuffixComponents),
-//                    MakeIntegerChecker<int32_t>())
-//     .AddAttribute ("ChildSelector", "ChildSelector",
-//                    BooleanValue(false),
-//                    MakeBooleanAccessor(&CcnxInterestSender::m_childSelector),
-//                    MakeBooleanChecker())
-//     .AddAttribute ("Exclude","only simple name matching is supported (use CcnxNameComponents)",
-//                    CcnxNameComponentsValue (CcnxNameComponents(/* root */)),
-//                    MakeCcnxNameComponentsAccessor (&CcnxInterestSender::m_exclude),
-//                    MakeCcnxNameComponentsChecker ())
-//     .AddAttribute ("Initial Nonce", "If 0 then nonce is not used",
-//                    UintegerValue(1),
-//                    MakeUintegerAccessor(&CcnxInterestSender::m_initialNonce),
-//                    MakeUintegerChecker<uint32_t>())
-//     ;
-//   /*
-//     .AddAttribute ("NoiseModel",
-//     "A pointer to the model of the channel ambient noise.",
-//     PointerValue (CreateObject<UanNoiseModelDefault> ()),
-//     MakePointerAccessor (&UanChannel::m_noise),
-//     MakePointerChecker<UanNoiseModel> ())*/
-//   return tid;
-// }
-    
-// CcnxInterestSender::CcnxInterestSender ()
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-// }
-    
-// CcnxInterestSender::~CcnxInterestSender()
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-// }
-    
-// void
-// CcnxInterestSender::DoDispose (void)
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-        
-//   Application::DoDispose ();
-// }
-    
-// // Application Methods
-// void 
-// CcnxInterestSender::StartApplication () // Called at time specified by Start
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-//   ScheduleNextTx();
-// }
-    
-// void 
-// CcnxInterestSender::StopApplication () // Called at time specified by Stop
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-    
-//   CancelEvents ();
-// }
-    
-// void 
-// CcnxInterestSender::CancelEvents ()
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-        
-//   Simulator::Cancel (m_sendEvent);
-// }
-
-// void 
-// CcnxInterestSender::ScheduleNextTx ()
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-        
-//   Time nextTime = Seconds(m_offTime);
-//   m_sendEvent = Simulator::Schedule (nextTime, &CcnxInterestSender::SendPacket, this);
-// }
-    
-// void
-// CcnxInterestSender::SendPacket ()
-// {
-//   NS_LOG_FUNCTION_NOARGS ();
-//   // NS_LOG_INFO ("Sending Interest at " << Simulator::Now ());
-    
-//   uint32_t randomNonce = UniformVariable().GetInteger(1, std::numeric_limits<uint32_t>::max ());
-//   CcnxInterestHeader interestHeader;
-//   interestHeader.SetNonce(randomNonce);
-//   //const Ptr<CcnxNameComponents> name = Create<CcnxNameComponents>(m_interestName);
-//   interestHeader.SetName(Create<CcnxNameComponents> (m_interestName)); //making a copy of name
-//   interestHeader.SetInterestLifetime(m_interestLifeTime);
-//   interestHeader.SetChildSelector(m_childSelector);
-//   //const Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents>(m_exclude);
-//   interestHeader.SetExclude(Create<CcnxNameComponents> (m_exclude));
-//   interestHeader.SetMaxSuffixComponents(m_maxSuffixComponents);
-//   interestHeader.SetMinSuffixComponents(m_minSuffixComponents);
-    
-//   Ptr<Packet> packet = Create<Packet> ();
-//   packet->AddHeader (interestHeader);
-    
-//   m_face->Send(packet);
-    
-//   ScheduleNextTx();
-// }
-    
-// }
diff --git a/apps/ccnx-interest-sender.h b/apps/ccnx-interest-sender.h
deleted file mode 100644
index cbb54ad..0000000
--- a/apps/ccnx-interest-sender.h
+++ /dev/null
@@ -1,106 +0,0 @@
-// /* -*-  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 "ns3/application.h"
-// #include "ns3/log.h"
-// #include "ns3/random-variable.h"
-// #include "ns3/nstime.h"
-// #include "ns3/event-id.h"
-// #include "ns3/ptr.h"
-// #include "ns3/simulator.h"
-// #include "ns3/ccnx-interest-header.h"
-// #include "ns3/ccnx-local-face.h"
-// #include "ns3/ccnx-name-components.h"
-// #include "ns3/packet.h"
-// #include "ns3/boolean.h"
-// #include "ns3/integer.h"
-// #include "ns3/uinteger.h"
-// #include "ns3/random-variable.h"
-// #include <limits> 
-// #include "ns3/pointer.h"
-
-// namespace ns3 
-// {
-    
-// class Socket;
-    
-// class CcnxInterestSender: public Application
-// {
-// public: 
-//   static TypeId GetTypeId (void);
-        
-//   CcnxInterestSender ();
-        
-//   virtual ~CcnxInterestSender ();
-        
-// protected:
-//   virtual void DoDispose (void);
-// private:
-//   // inherited from Application base class.
-//   virtual void StartApplication (void);    // Called at time specified by Start
-//   virtual void StopApplication (void);     // Called at time specified by Stop
-        
-//   //Time m_onTime;
-//   Time m_offTime;
-//   CcnxNameComponents m_interestName;
-  
-//   Time m_interestLifeTime;
-//   int32_t m_minSuffixComponents;
-//   int32_t m_maxSuffixComponents;
-//   bool m_childSelector;
-//   CcnxNameComponents m_exclude;
-//   uint32_t m_initialNonce;
-    
-//   //EventId         m_startStopEvent;     // Event id for next start or stop event
-//   EventId         m_sendEvent;    // Eventid of pending "send packet" event
-//   TypeId          m_tid;
-//   Ptr<CcnxLocalFace> m_face;
-        
-//   //helpers
-//   void CancelEvents ();
-        
-//   void Construct (Ptr<Node> n,
-//                   std::string tid,
-//                   const Time& offtime,
-//                   Ptr<CcnxLocalFace> face,
-//                   Ptr<CcnxNameComponents> nameComponents,
-//                   const Time& lifetime,
-//                   const int32_t& minSuffixComponents,
-//                   const int32_t& maxSuffixComponents,
-//                   const bool childSelector,
-//                   Ptr<CcnxNameComponents> exclude,
-//                   const uint32_t& initialNonce
-//                   );
-    
-//   // Event handlers
-//   void StartSending ();
-//   void StopSending ();
-//   void SendPacket ();
-        
-// private:
-//   void ScheduleNextTx ();
-//   //void ScheduleStartEvent ();
-//   //void ScheduleStopEvent ();
-//   void ConnectionSucceeded (Ptr<Socket>);
-//   void ConnectionFailed (Ptr<Socket>);
-//   void Ignore (Ptr<Socket>);
-        
-// };
-// }
diff --git a/helper/ccnx-decoding-helper.cc b/helper/ccnx-decoding-helper.cc
index 4d4695c..ee3f084 100644
--- a/helper/ccnx-decoding-helper.cc
+++ b/helper/ccnx-decoding-helper.cc
@@ -15,7 +15,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: 
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
  */
 
 #include "ccnx-decoding-helper.h"
diff --git a/helper/ccnx-decoding-helper.h b/helper/ccnx-decoding-helper.h
index 8ebfcc5..015b7ff 100644
--- a/helper/ccnx-decoding-helper.h
+++ b/helper/ccnx-decoding-helper.h
@@ -35,15 +35,24 @@
 class CcnxDecodingHelper
 {
 public:
+  /**
+   * \brief Deserialize Buffer::Iterator to CcnxInterestHeader
+   * @param start Buffer containing serialized CCNx message
+   * @param interest Pointer to the CcnxInterestHeader to hold deserialized value
+   * @return Number of bytes used for deserialization
+   */
   static size_t
   Deserialize (Buffer::Iterator start, CcnxInterestHeader &interest);
 
+  /**
+   * \brief Deserialize Buffer::Iterator to CcnxContentObjectHeader
+   * @param start Buffer containing serialized CCNx message
+   * @param contentObject Pointer to the CcnxContentObjectHeader to hold deserialized value
+   * @return Number of bytes used for deserialization
+   */
   static size_t
   Deserialize (Buffer::Iterator start, CcnxContentObjectHeader &contentObject);
-  
-private:
 };
-
 } // namespace ns3
 
 #endif // _CCNX_DECODING_HELPER_H_
diff --git a/helper/ccnx-encoding-helper.cc b/helper/ccnx-encoding-helper.cc
index 15757fc..e63c67c 100644
--- a/helper/ccnx-encoding-helper.cc
+++ b/helper/ccnx-encoding-helper.cc
@@ -15,7 +15,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: 
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu> 
  */
 
 #include "ccnx-encoding-helper.h"
diff --git a/helper/ccnx-encoding-helper.h b/helper/ccnx-encoding-helper.h
index acce922..e4fe45d 100644
--- a/helper/ccnx-encoding-helper.h
+++ b/helper/ccnx-encoding-helper.h
@@ -15,7 +15,7 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  *
- * Author: 
+ * Author: Alexander Afanasyev <alexander.afanasyev@ucla.edu>
  */
 
 #ifndef _CCNX_ENCODING_HELPER_H_
@@ -36,15 +36,26 @@
 class CcnxContentObjectHeader;
   
 /**
- * Helper to encode/decode ccnb formatted CCNx message
+ * \brief Helper to encode/decode ccnb formatted CCNx message
  *
  */
 class CcnxEncodingHelper
 {
 public:
+  /**
+   * \brief Serialize CcnxInterestHeader to Buffer::Iterator
+   * @param start Buffer to store serialized CcnxInterestHeader
+   * @param interest Pointer to CcnxInterestHeader to be serialized 
+   * @return length of serialized CcnxInterestHeader
+   */
   static size_t
   Serialize (Buffer::Iterator start, const CcnxInterestHeader &interest);
 
+  /**
+   * \brief Compute the size of serialized CcnxInterestHeader
+   * @param interest Pointer to CcnxInterestHeader
+   * @return length 
+   */
   static size_t
   GetSerializedSize (const CcnxInterestHeader &interest);
 
diff --git a/helper/ccnx-stack-helper.h b/helper/ccnx-stack-helper.h
index 16e4e25..b4cdbc6 100644
--- a/helper/ccnx-stack-helper.h
+++ b/helper/ccnx-stack-helper.h
@@ -74,7 +74,7 @@
    *
    * Set the forwarding helper to use during Install. The forwarding helper is
    * really an object factory which is used to create an object of type
-   * ns3::CcnxFrProtocol per node. This forwarding object is then associated to
+   * ns3::CcnxL3Protocol per node. This forwarding object is then associated to
    * a single ns3::Ccnx object through its ns3::Ccnx::SetforwardingProtocol.
    */
   void
diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
index 95c0b7f..77122e0 100644
--- a/model/ccnx-face.cc
+++ b/model/ccnx-face.cc
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx-face.h b/model/ccnx-face.h
index 98969e2..df488dc 100644
--- a/model/ccnx-face.h
+++ b/model/ccnx-face.h
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx-forwarding-strategy.h b/model/ccnx-forwarding-strategy.h
index 73f1165..23c15a5 100644
--- a/model/ccnx-forwarding-strategy.h
+++ b/model/ccnx-forwarding-strategy.h
@@ -49,7 +49,7 @@
   virtual ~CcnxForwardingStrategy ();
 
   /**
-   * @brief Base method to propagate the insterest according to the forwarding strategy
+   * @brief Base method to propagate the interest according to the forwarding strategy
    *
    * @param pitEntry      Reference to PIT entry (reference to corresponding FIB entry inside)
    * @param incomingFace  Incoming face
@@ -75,7 +75,7 @@
   
 protected:
   /**
-   * @brief Propage interest vie a green interface. Fail, if no green interfaces available
+   * @brief Propagate interest via a green interface. Fail, if no green interfaces available
    *
    * @param pitEntry      Reference to PIT entry (reference to corresponding FIB entry inside)
    * @param incomingFace  Incoming face
diff --git a/model/ccnx-interest-header.h b/model/ccnx-interest-header.h
index 979dfdd..dcfd983 100644
--- a/model/ccnx-interest-header.h
+++ b/model/ccnx-interest-header.h
@@ -114,7 +114,7 @@
  **/
 
 /**
-   NDN InterestHeader and routines to serialize/deserialize
+  * NDN InterestHeader and routines to serialize/deserialize
 
    Simplifications:
    - Name:  binary name components are not supported
@@ -129,7 +129,7 @@
 {
 public:
   /**
-   * Constructor
+   * \brief Constructor
    *
    * Creates a null header
    **/
@@ -139,22 +139,60 @@
    * \brief Set interest name
    *
    * Sets name of the interest. For example, SetName( CcnxNameComponents("prefix")("postfix") );
+   * @param[in] name const pointer to CcnxNameComponents object that contains an interest name
    **/
   void
   SetName (const Ptr<CcnxNameComponents> &name);
 
+
+  /**
+   * \brief Get interest name
+   *
+   * Gets name of the interest.
+   **/
   const CcnxNameComponents&
   GetName () const;
 
+  /**
+   * \brief Set interest MinSuffixComponents
+   *
+   * MinSuffixComponents refer to the number of name components beyond those in the prefix, 
+   * and counting the implicit digest, that may occur in the matching ContentObject.
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information.
+   * @param[in] value minimum length of suffix components
+   **/
   void
   SetMinSuffixComponents (int32_t value);
 
+  /**
+   * \brief Get interest MinSuffixComponents
+   *
+   * MinSuffixComponents refer to the number of name components beyond those in the prefix, 
+   * and counting the implicit digest, that may occur in the matching ContentObject.
+   * For more information, see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html
+   **/
   int32_t
   GetMinSuffixComponents () const;
 
+
+  /**
+   * \brief Set interest MaxSuffixComponents
+   *
+   * MaxSuffixComponents refer to the number of name components beyond those in the prefix, 
+   * and counting the implicit digest, that may occur in the matching ContentObject.
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information.
+   * @param[in] value maximum length of suffix components
+   **/
   void
   SetMaxSuffixComponents (int32_t value);
 
+  /**
+   * \brief Get interest MaxSuffixComponents
+   *
+   * MaxSuffixComponents refer to the number of name components beyond those in the prefix, 
+   * and counting the implicit digest, that may occur in the matching ContentObject.
+   * For more information, see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html
+   **/
   int32_t
   GetMaxSuffixComponents () const;
 
@@ -162,46 +200,122 @@
    * \brief Set exclude filer
    *
    * For example, SetExclude (CcnxNameComponents("exclude1")("exclude2")("exclude3"))
+   * @param[in] exclude const pointer to CcnxNameComponents to be excluded 
    **/
   void
   SetExclude (const Ptr<CcnxNameComponents> &exclude);
 
+  /**
+   * \brief Check if interest conatins exclude filter
+   *
+   */ 
   bool
   IsEnabledExclude () const;
   
+  /**
+   * \brief Get exclude filter 
+   */
   const CcnxNameComponents&
   GetExclude () const;
 
+  /**
+   * \brief Set ChildSelector
+   * Often a given interest will match more than one ContentObject within a given content store. 
+   * The ChildSelector provides a way of expressing a preference for which of these should be returned. 
+   * If the value is false, the leftmost child is preferred. If true, the rightmost child is preferred.
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information. 
+   * @param[in] value boolean ChildSelector value
+   */
   void
   SetChildSelector (bool value);
 
+  /**
+   * \brief Return ChildSelector value
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information.
+   *
+   */
   bool
   IsEnabledChildSelector () const;
 
+  /**
+   * \brief Set AnswerOriginKind
+   * Default value for AnswerOriginKind is false.
+   * @param[in] value boolean AnswerOriginKind value
+   */
   void
   SetAnswerOriginKind (bool value);
 
+  /**
+   * \brief Check the value of AnswerOriginKind
+   *
+   */
   bool
   IsEnabledAnswerOriginKind () const;
 
+  /**
+   * \brief Set Scope
+   * Scope limits where the Interest may propagate. 
+   * Scope 0 prevents propagation beyond the local ccnd (even to other applications on the same host).
+   * Scope 1 limits propagation to the applications on the originating host. 
+   * Scope 2 limits propagation to no further than the next host. 
+   * Other values are not defined, and will cause the Interest message to be dropped.
+   * Note that this is not a hop count - the value is not decremented as the interest is forwarded.
+   * @param[in] scope interest scope
+   */
   void
   SetScope (int8_t scope);
 
+  /**
+   * \brief Get Scope value
+   * Scope limits where the Interest may propagate. 
+   * Scope 0 prevents propagation beyond the local ccnd (even to other applications on the same host).
+   * Scope 1 limits propagation to the applications on the originating host. 
+   * Scope 2 limits propagation to no further than the next host. 
+   * Other values are not defined, and will cause the Interest message to be dropped.
+   * Note that this is not a hop count - the value is not decremented as the interest is forwarded.
+   */
   int8_t
   GetScope () const;
 
+  /**
+   * \brief Set InterestLifetime
+   * InterestLifetime indicates the (approximate) time remaining before the interest times out.
+   * The timeout is relative to the arrival time of the interest at the current node.
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information.
+   * @param[in] time interest lifetime  
+   */ 
   void
   SetInterestLifetime (Time time);
 
+  /**
+   * \brief Get InterestLifetime value
+   * InterestLifetime indicates the (approximate) time remaining before the interest times out.
+   * The timeout is relative to the arrival time of the interest at the current node.
+   * \see http://www.ccnx.org/releases/latest/doc/technical/InterestMessage.html for more information.
+   */ 
   Time
   GetInterestLifetime () const;
 
+  /**
+   * \brief Set Nonce
+   * Nonce carries a randomly-genenerated bytestring that is used to detect and discard duplicate Interest messages.
+   * @param[in] nonce Unique packet identification number
+   */
   void
   SetNonce (uint32_t nonce);
 
+  /**
+   * \brief Get Nonce value
+   * Nonce carries a randomly-genenerated bytestring that is used to detect and discard duplicate Interest messages.
+   *
+   */
   uint32_t
   GetNonce () const;
-    
+  
+  /**
+   * \enum NACK Type
+   * \brief Specifies the type of Interest packet
+   */
   enum
     {
       NORMAL_INTEREST = 0,
@@ -210,9 +324,22 @@
       NACK_GIVEUP_PIT = 12,
     };
 
+  /**
+   * \brief Mark the Interest as a Negative Acknowledgement
+   * Three types of NACKs are supported
+   * 1. NACK_LOOP 
+   * 2. NACK_CONGESTION
+   * 3. NACK_GIVEUP_PIT
+   * @param[in] nackType  NACK_LOOP or NACK_CONGESTION or NACK_GIVEUP_PIT or NORMAL_INTEREST
+   */
   void
   SetNack (uint32_t nackType);
     
+  /**
+  * \brief Get NACK type
+  * Returns NACK_LOOP, NACK_CONGESTION or NACK_GIVEUP_PIT. 
+  * Otherwise, in case of normal interest packet, returns NORMAL_INTEREST (equals 0).
+  */
   uint32_t
   GetNack () const;
 
@@ -220,24 +347,48 @@
   
   static TypeId GetTypeId (void);
   virtual TypeId GetInstanceTypeId (void) const;
+  
+  /**
+   * \brief Print Interest packet 
+   */
   virtual void Print (std::ostream &os) const;
+  
+  /**
+   * \brief Get the size of Interest packet
+   * Returns the Interest packet size after serialization
+   */
   virtual uint32_t GetSerializedSize (void) const;
+  
+  /**
+   * \brief Serialize Interest packet
+   * Serializes Interest packet into Buffer::Iterator
+   * @param[in] start buffer to contain serialized Interest packet
+   */
   virtual void Serialize (Buffer::Iterator start) const;
+  
+  /**
+   * \brief Deserialize Interest packet
+   * Deserializes Buffer::Iterator into Interest packet
+   * @param[in] start buffer that contains serialized Interest packet
+   */ 
   virtual uint32_t Deserialize (Buffer::Iterator start);
 
 private:
-  Ptr<CcnxNameComponents> m_name;
-  int32_t m_minSuffixComponents; ///< minimum suffix components. not used if negative
-  int32_t m_maxSuffixComponents; ///< maximum suffix components. not used if negative
-  Ptr<CcnxNameComponents> m_exclude; ///< exclude filter
-  bool m_childSelector;    
-  bool m_answerOriginKind; 
-  int8_t m_scope;            ///< -1 not set, 0 local scope, 1 this host, 2 immediate neighborhood
-  Time  m_interestLifetime;
-  uint32_t m_nonce; ///< Nonce. not used if zero
-  uint32_t m_nackType; 
+  Ptr<CcnxNameComponents> m_name;     ///< Interest name
+  int32_t m_minSuffixComponents;      ///< Minimum suffix components. not used if negative
+  int32_t m_maxSuffixComponents;      ///< Maximum suffix components. not used if negative
+  Ptr<CcnxNameComponents> m_exclude;  ///< Exclude filter
+  bool m_childSelector;               ///< Default value for ChildSelector is false
+  bool m_answerOriginKind;            ///< Default value for AnswerOriginKind is false
+  int8_t m_scope;                     ///< -1 not set, 0 local scope, 1 this host, 2 immediate neighborhood
+  Time  m_interestLifetime;           ///< InterestLifetime
+  uint32_t m_nonce;                   ///< Nonce. not used if zero
+  uint32_t m_nackType;                ///< Negative Acknowledgement type
 };
 
+/**
+ * \brief Exception class for CcnxInterestHeader
+ */
 class CcnxInterestHeaderException {};
 
 } // namespace ns3
diff --git a/model/ccnx-local-face.cc b/model/ccnx-local-face.cc
index a3267bd..7b4413c 100644
--- a/model/ccnx-local-face.cc
+++ b/model/ccnx-local-face.cc
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx-local-face.h b/model/ccnx-local-face.h
index 8855b75..63458f2 100644
--- a/model/ccnx-local-face.h
+++ b/model/ccnx-local-face.h
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx-name-components.cc b/model/ccnx-name-components.cc
index 77ac75c..893f7bb 100644
--- a/model/ccnx-name-components.cc
+++ b/model/ccnx-name-components.cc
@@ -36,11 +36,6 @@
 {
 }
 
-// CcnxNameComponents::CcnxNameComponents (const string &s)
-// {
-//   m_prefix.push_back (s);
-// }
-
 CcnxNameComponents::CcnxNameComponents (const std::list<boost::reference_wrapper<const std::string> > &components)
 {
   BOOST_FOREACH (const boost::reference_wrapper<const std::string> &component, components)
diff --git a/model/ccnx-name-components.h b/model/ccnx-name-components.h
index 58ca927..7f629dc 100644
--- a/model/ccnx-name-components.h
+++ b/model/ccnx-name-components.h
@@ -34,24 +34,52 @@
 
 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;
 
@@ -60,35 +88,39 @@
 
   /**
    * \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;
 };
 
@@ -100,20 +132,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)
@@ -122,13 +158,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)
@@ -138,6 +172,9 @@
   m_prefix.push_back (os.str ());
 }
 
+/**
+ * \brief Equality operator for CcnxNameComponents
+ */
 bool
 CcnxNameComponents::operator== (const CcnxNameComponents &prefix) const
 {
@@ -147,6 +184,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
 {
diff --git a/model/ccnx-net-device-face.cc b/model/ccnx-net-device-face.cc
index d4af70f..3d3275e 100644
--- a/model/ccnx-net-device-face.cc
+++ b/model/ccnx-net-device-face.cc
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx-net-device-face.h b/model/ccnx-net-device-face.h
index 148da39..a83ed70 100644
--- a/model/ccnx-net-device-face.h
+++ b/model/ccnx-net-device-face.h
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2005,2006,2007 INRIA
+ * 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
diff --git a/model/ccnx.cc b/model/ccnx.cc
index 30b290e..2e30e7f 100644
--- a/model/ccnx.cc
+++ b/model/ccnx.cc
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil -*- */
 /*
- * Copyright (c) 2007 INRIA
+ * 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
diff --git a/model/hash-helper.h b/model/hash-helper.h
index c14b567..779f7f1 100644
--- a/model/hash-helper.h
+++ b/model/hash-helper.h
@@ -55,13 +55,6 @@
     return hash;
   }
 };
-  
-// // A collision-chaining hash table mapping strings to ints.
-// template<typename Value>
-// class string_key_hash_t : public boost::unordered_map<std::string,Value, string_hash, std::equal_to<std::string>,std::allocator<std::string> >
-// {
-// };
-
 } // namespace ns3
 
 #endif // CCNX_HASH_HELPER_H