diff --git a/docs/source/intro.rst b/docs/source/intro.rst
index bcc3e3f..3453d47 100644
--- a/docs/source/intro.rst
+++ b/docs/source/intro.rst
@@ -116,7 +116,9 @@
 ndnSIM source code should be placed in ``src/ndnSIM`` folder under NS-3 simulator source tree.  For example::
 
 	cd ns-3-dev
-	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
+	git clone gitolite@git.irl.cs.ucla.edu:ndn/ndnSIM.git ns-3/src/ndnSIM
+
+.. git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
 
 After cloning, a number of patches need to be applied to the base NS-3 to make sure ndnSIM compiles and works::
 
@@ -130,7 +132,7 @@
 
 	mkdir ndnSIM
 	cd ndnSIM
-	git clone git://github.com/cawka/ns-3-dev-ndnSIM.git ns-3
+	git clone gitolite@git.irl.cs.ucla.edu:ndn/ndnSIM.git ns-3/src/ndnSIM
 	git clone git://github.com/cawka/pybindgen.git pybindgen
 	git clone git://github.com/NDN-Routing/ndnSIM.git ns-3/src/ndnSIM
 
diff --git a/helper/ccnx-stack-helper.cc b/helper/ccnx-stack-helper.cc
index 34010e4..85cef6c 100644
--- a/helper/ccnx-stack-helper.cc
+++ b/helper/ccnx-stack-helper.cc
@@ -136,7 +136,11 @@
   Ptr<CcnxL3Protocol> ccnx = CreateObject<CcnxL3Protocol> ();
   node->AggregateObject (ccnx);
 
+  // Create and set forwarding strategy
   ccnx->SetForwardingStrategy (m_strategyFactory.Create<CcnxForwardingStrategy> ());
+
+  // Create and set content store
+  node->AggregateObject (m_contentStoreFactory.Create ());
   
   for (uint32_t index=0; index < node->GetNDevices (); index++)
     {
diff --git a/model/ccnx-content-store-lru.cc b/model/ccnx-content-store-lru.cc
index bb35c1b..8c0d777 100644
--- a/model/ccnx-content-store-lru.cc
+++ b/model/ccnx-content-store-lru.cc
@@ -80,37 +80,6 @@
   type;
 };
 
-/**
- * \ingroup ccnx
- * \brief Typedef for MRU index of content store container
- */
-struct CcnxContentStoreByMru
-{
-  typedef
-  CcnxContentStoreLruContainer::type::index<i_mru>::type
-  type;
-};
-
-#ifdef _DEBUG
-#define DUMP_INDEX_TAG i_ordered
-#define DUMP_INDEX     CcnxContentStoreOrderedPrefix
-/**
- * \ingroup ccnx
- * \brief Typedef for ordered index of content store container
- */
-struct CcnxContentStoreOrderedPrefix
-{
-  typedef
-  CcnxContentStoreLruContainer::type::index<i_ordered>::type
-  type;
-};
-#else
-#define DUMP_INDEX_TAG i_mru
-#define DUMP_INDEX     CcnxContentStoreByMru
-#endif
-
-
-
 CcnxContentStoreLru::CcnxContentStoreLru ()
   : m_maxSize (100)
 { } // this value shouldn't matter, NS-3 should call SetSize with default value specified in AddAttribute earlier
@@ -130,9 +99,12 @@
       m_contentStore.get<i_mru> ().relocate (m_contentStore.get<i_mru> ().begin (),
                                            m_contentStore.project<i_mru> (it));
 
+      m_cacheHitsTrace (interest, it->GetHeader ());
+      
       // return fully formed CCNx packet
       return boost::make_tuple (it->GetFullyFormedCcnxPacket (), it->GetHeader (), it->GetPacket ());
     }
+  m_cacheMissesTrace (interest);
   return boost::tuple<Ptr<Packet>, Ptr<CcnxContentObjectHeader>, Ptr<Packet> > (0, 0, 0);
 }   
     
@@ -161,12 +133,9 @@
 void 
 CcnxContentStoreLru::Print() const
 {
-  for( DUMP_INDEX::type::iterator it=m_contentStore.get<DUMP_INDEX_TAG> ().begin ();
-       it != m_contentStore.get<DUMP_INDEX_TAG> ().end ();
-       it++
-       )
+  BOOST_FOREACH (const CcnxContentStoreEntry &entry, m_contentStore.get<i_mru> ())
     {
-      NS_LOG_INFO (it->GetName ());
+      NS_LOG_INFO (entry.GetName ());
     }
 }
 
diff --git a/model/ccnx-content-store-lru.h b/model/ccnx-content-store-lru.h
index 66a81a2..b510646 100644
--- a/model/ccnx-content-store-lru.h
+++ b/model/ccnx-content-store-lru.h
@@ -29,13 +29,9 @@
 #include <boost/multi_index/sequenced_index.hpp>
 #include <boost/multi_index/hashed_index.hpp>
 #include <boost/multi_index/mem_fun.hpp>
-#include <boost/tuple/tuple.hpp>
 
 #include "ccnx.h"
 #include "ccnx-name-components-hash-helper.h"
-// #include "ccnx-content-object-header.h"
-// #include "ccnx-interest-header.h"
-// #include "ccnx-name-components.h"
 
 namespace  ns3
 {
@@ -45,7 +41,6 @@
  *
  * - First index (tag<prefix>) is a unique hash index based on NDN prefix of the stored content.
  * - Second index (tag<mru>) is a sequential index used to maintain up to m_maxSize most recent used (MRU) entries in the content store
- * - Third index (tag<ordered>) is just a helper to provide stored prefixes in ordered way. Should be disabled in production build
  *
  * \see http://www.boost.org/doc/libs/1_46_1/libs/multi_index/doc/ for more information on Boost.MultiIndex library
  */
@@ -63,15 +58,6 @@
                                           &CcnxContentStoreEntry::GetName>,
         CcnxPrefixHash>,
       boost::multi_index::sequenced<boost::multi_index::tag<__ccnx_private::i_mru> >
-#ifdef _DEBUG
-      ,
-      boost::multi_index::ordered_unique<
-        boost::multi_index::tag<__ccnx_private::i_ordered>,
-        boost::multi_index::const_mem_fun<CcnxContentStoreEntry,
-                                          const CcnxNameComponents&,
-                                          &CcnxContentStoreEntry::GetName>
-          >
-#endif
       >
     > type;
   /// @endcond
diff --git a/model/ccnx-content-store.cc b/model/ccnx-content-store.cc
index 986405f..c5a66c9 100644
--- a/model/ccnx-content-store.cc
+++ b/model/ccnx-content-store.cc
@@ -40,6 +40,11 @@
   static TypeId tid = TypeId ("ns3::CcnxContentStore")
     .SetGroupName ("Ccnx")
     .SetParent<Object> ()
+
+    .AddTraceSource ("CacheHits", "Trace called every time there is a cache hit",
+                     MakeTraceSourceAccessor (&CcnxContentStore::m_cacheHitsTrace))
+    .AddTraceSource ("CacheMisses", "Trace called every time there is a cache miss",
+                     MakeTraceSourceAccessor (&CcnxContentStore::m_cacheMissesTrace))
     ;
 
   return tid;
diff --git a/model/ccnx-content-store.h b/model/ccnx-content-store.h
index dd56867..97615db 100644
--- a/model/ccnx-content-store.h
+++ b/model/ccnx-content-store.h
@@ -24,6 +24,8 @@
 
 #include "ns3/object.h"
 #include "ns3/ptr.h"
+#include "ns3/traced-callback.h"
+
 #include <boost/tuple/tuple.hpp>
 
 namespace  ns3
@@ -157,6 +159,12 @@
    */
   virtual void
   Print () const = 0;
+
+protected:
+  TracedCallback<Ptr<const CcnxInterestHeader>,
+                 Ptr<const CcnxContentObjectHeader> > m_cacheHitsTrace; ///< @brief trace of cache hits
+    
+  TracedCallback<Ptr<const CcnxInterestHeader> > m_cacheMissesTrace; ///< @brief trace of cache misses
 };
 
 inline std::ostream&
