model: Remove deprecated "old" content store policies

Use policies and policy interface provided by NFD

Change-Id: I6d4b06225114d1680c9ff3c17b2616298959b0dc
diff --git a/model/cs/content-store-impl.cpp b/model/cs/content-store-impl.cpp
deleted file mode 100644
index b5b00f2..0000000
--- a/model/cs/content-store-impl.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "content-store-impl.hpp"
-
-#include "../../utils/trie/random-policy.hpp"
-#include "../../utils/trie/lru-policy.hpp"
-#include "../../utils/trie/fifo-policy.hpp"
-#include "../../utils/trie/lfu-policy.hpp"
-#include "../../utils/trie/multi-policy.hpp"
-#include "../../utils/trie/aggregate-stats-policy.hpp"
-
-#define NS_OBJECT_ENSURE_REGISTERED_TEMPL(type, templ)                                             \
-  static struct X##type##templ##RegistrationClass {                                                \
-    X##type##templ##RegistrationClass()                                                            \
-    {                                                                                              \
-      ns3::TypeId tid = type<templ>::GetTypeId();                                                  \
-      tid.GetParent();                                                                             \
-    }                                                                                              \
-  } x_##type##templ##RegistrationVariable
-
-namespace ns3 {
-namespace ndn {
-
-using namespace ndnSIM;
-
-namespace cs {
-
-// explicit instantiation and registering
-/**
- * @brief ContentStore with LRU cache replacement policy
- **/
-template class ContentStoreImpl<lru_policy_traits>;
-
-/**
- * @brief ContentStore with random cache replacement policy
- **/
-template class ContentStoreImpl<random_policy_traits>;
-
-/**
- * @brief ContentStore with FIFO cache replacement policy
- **/
-template class ContentStoreImpl<fifo_policy_traits>;
-
-/**
- * @brief ContentStore with Least Frequently Used (LFU) cache replacement policy
- **/
-template class ContentStoreImpl<lfu_policy_traits>;
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, lru_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, random_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, fifo_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, lfu_policy_traits);
-
-typedef multi_policy_traits<boost::mpl::vector2<lru_policy_traits, aggregate_stats_policy_traits>>
-  LruWithCountsTraits;
-typedef multi_policy_traits<boost::mpl::vector2<random_policy_traits,
-                                                aggregate_stats_policy_traits>>
-  RandomWithCountsTraits;
-typedef multi_policy_traits<boost::mpl::vector2<fifo_policy_traits, aggregate_stats_policy_traits>>
-  FifoWithCountsTraits;
-typedef multi_policy_traits<boost::mpl::vector2<lfu_policy_traits, aggregate_stats_policy_traits>>
-  LfuWithCountsTraits;
-
-template class ContentStoreImpl<LruWithCountsTraits>;
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, LruWithCountsTraits);
-
-template class ContentStoreImpl<RandomWithCountsTraits>;
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, RandomWithCountsTraits);
-
-template class ContentStoreImpl<FifoWithCountsTraits>;
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, FifoWithCountsTraits);
-
-template class ContentStoreImpl<LfuWithCountsTraits>;
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreImpl, LfuWithCountsTraits);
-
-#ifdef DOXYGEN
-// /**
-//  * \brief Content Store implementing LRU cache replacement policy
-//  */
-class Lru : public ContentStoreImpl<lru_policy_traits> {
-};
-
-/**
- * \brief Content Store implementing FIFO cache replacement policy
- */
-class Fifo : public ContentStoreImpl<fifo_policy_traits> {
-};
-
-/**
- * \brief Content Store implementing Random cache replacement policy
- */
-class Random : public ContentStoreImpl<random_policy_traits> {
-};
-
-/**
- * \brief Content Store implementing Least Frequently Used cache replacement policy
- */
-class Lfu : public ContentStoreImpl<lfu_policy_traits> {
-};
-#endif
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/content-store-impl.hpp b/model/cs/content-store-impl.hpp
deleted file mode 100644
index 5765120..0000000
--- a/model/cs/content-store-impl.hpp
+++ /dev/null
@@ -1,338 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_IMPL_H_
-#define NDN_CONTENT_STORE_IMPL_H_
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "ndn-content-store.hpp"
-
-#include "ns3/packet.h"
-#include <boost/foreach.hpp>
-
-#include "ns3/log.h"
-#include "ns3/uinteger.h"
-#include "ns3/string.h"
-
-#include "../../utils/trie/trie-with-policy.hpp"
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief Cache entry implementation with additional references to the base container
- */
-template<class CS>
-class EntryImpl : public Entry {
-public:
-  typedef Entry base_type;
-
-public:
-  EntryImpl(Ptr<ContentStore> cs, shared_ptr<const Data> data)
-    : Entry(cs, data)
-    , item_(0)
-  {
-  }
-
-  void
-  SetTrie(typename CS::super::iterator item)
-  {
-    item_ = item;
-  }
-
-  typename CS::super::iterator
-  to_iterator()
-  {
-    return item_;
-  }
-  typename CS::super::const_iterator
-  to_iterator() const
-  {
-    return item_;
-  }
-
-private:
-  typename CS::super::iterator item_;
-};
-
-/**
- * @ingroup ndn-cs
- * @brief Base implementation of NDN content store
- */
-template<class Policy>
-class ContentStoreImpl
-  : public ContentStore,
-    protected ndnSIM::
-      trie_with_policy<Name,
-                       ndnSIM::smart_pointer_payload_traits<EntryImpl<ContentStoreImpl<Policy>>,
-                                                            Entry>,
-                       Policy> {
-public:
-  typedef ndnSIM::
-    trie_with_policy<Name, ndnSIM::smart_pointer_payload_traits<EntryImpl<ContentStoreImpl<Policy>>,
-                                                                Entry>,
-                     Policy> super;
-
-  typedef EntryImpl<ContentStoreImpl<Policy>> entry;
-
-  static TypeId
-  GetTypeId();
-
-  ContentStoreImpl(){};
-  virtual ~ContentStoreImpl(){};
-
-  // from ContentStore
-
-  virtual inline shared_ptr<Data>
-  Lookup(shared_ptr<const Interest> interest);
-
-  virtual inline bool
-  Add(shared_ptr<const Data> data);
-
-  // virtual bool
-  // Remove (shared_ptr<Interest> header);
-
-  virtual inline void
-  Print(std::ostream& os) const;
-
-  virtual uint32_t
-  GetSize() const;
-
-  virtual Ptr<Entry>
-  Begin();
-
-  virtual Ptr<Entry>
-  End();
-
-  virtual Ptr<Entry> Next(Ptr<Entry>);
-
-  const typename super::policy_container&
-  GetPolicy() const
-  {
-    return super::getPolicy();
-  }
-
-  typename super::policy_container&
-  GetPolicy()
-  {
-    return super::getPolicy();
-  }
-
-public:
-  typedef void (*CsEntryCallback)(Ptr<const Entry>);
-
-private:
-  void
-  SetMaxSize(uint32_t maxSize);
-
-  uint32_t
-  GetMaxSize() const;
-
-private:
-  static LogComponent g_log; ///< @brief Logging variable
-
-  /// @brief trace of for entry additions (fired every time entry is successfully added to the
-  /// cache): first parameter is pointer to the CS entry
-  TracedCallback<Ptr<const Entry>> m_didAddEntry;
-};
-
-//////////////////////////////////////////
-////////// Implementation ////////////////
-//////////////////////////////////////////
-
-template<class Policy>
-LogComponent ContentStoreImpl<Policy>::g_log = LogComponent(("ndn.cs." + Policy::GetName()).c_str(), __FILE__);
-
-template<class Policy>
-TypeId
-ContentStoreImpl<Policy>::GetTypeId()
-{
-  static TypeId tid =
-    TypeId(("ns3::ndn::cs::" + Policy::GetName()).c_str())
-      .SetGroupName("Ndn")
-      .SetParent<ContentStore>()
-      .AddConstructor<ContentStoreImpl<Policy>>()
-      .AddAttribute("MaxSize",
-                    "Set maximum number of entries in ContentStore. If 0, limit is not enforced",
-                    StringValue("100"), MakeUintegerAccessor(&ContentStoreImpl<Policy>::GetMaxSize,
-                                                             &ContentStoreImpl<Policy>::SetMaxSize),
-                    MakeUintegerChecker<uint32_t>())
-
-      .AddTraceSource("DidAddEntry",
-                      "Trace fired every time entry is successfully added to the cache",
-                      MakeTraceSourceAccessor(&ContentStoreImpl<Policy>::m_didAddEntry),
-                      "ns3::ndn::cs::ContentStoreImpl::CsEntryCallback");
-
-  return tid;
-}
-
-struct isNotExcluded {
-  inline isNotExcluded(const Exclude& exclude)
-    : m_exclude(exclude)
-  {
-  }
-
-  bool
-  operator()(const name::Component& comp) const
-  {
-    return !m_exclude.isExcluded(comp);
-  }
-
-private:
-  const Exclude& m_exclude;
-};
-
-template<class Policy>
-shared_ptr<Data>
-ContentStoreImpl<Policy>::Lookup(shared_ptr<const Interest> interest)
-{
-  NS_LOG_FUNCTION(this << interest->getName());
-
-  typename super::const_iterator node;
-  if (interest->getExclude().empty()) {
-    node = this->deepest_prefix_match(interest->getName());
-  }
-  else {
-    node = this->deepest_prefix_match_if_next_level(interest->getName(),
-                                                    isNotExcluded(interest->getExclude()));
-  }
-
-  if (node != this->end()) {
-    this->m_cacheHitsTrace(interest, node->payload()->GetData());
-
-    shared_ptr<Data> copy = make_shared<Data>(*node->payload()->GetData());
-    return copy;
-  }
-  else {
-    this->m_cacheMissesTrace(interest);
-    return 0;
-  }
-}
-
-template<class Policy>
-bool
-ContentStoreImpl<Policy>::Add(shared_ptr<const Data> data)
-{
-  NS_LOG_FUNCTION(this << data->getName());
-
-  Ptr<entry> newEntry = Create<entry>(this, data);
-  std::pair<typename super::iterator, bool> result = super::insert(data->getName(), newEntry);
-
-  if (result.first != super::end()) {
-    if (result.second) {
-      newEntry->SetTrie(result.first);
-
-      m_didAddEntry(newEntry);
-      return true;
-    }
-    else {
-      // should we do anything?
-      // update payload? add new payload?
-      return false;
-    }
-  }
-  else
-    return false; // cannot insert entry
-}
-
-template<class Policy>
-void
-ContentStoreImpl<Policy>::Print(std::ostream& os) const
-{
-  for (typename super::policy_container::const_iterator item = this->getPolicy().begin();
-       item != this->getPolicy().end(); item++) {
-    os << item->payload ()->GetName () << std::endl;
-  }
-}
-
-template<class Policy>
-void
-ContentStoreImpl<Policy>::SetMaxSize(uint32_t maxSize)
-{
-  this->getPolicy().set_max_size(maxSize);
-}
-
-template<class Policy>
-uint32_t
-ContentStoreImpl<Policy>::GetMaxSize() const
-{
-  return this->getPolicy().get_max_size();
-}
-
-template<class Policy>
-uint32_t
-ContentStoreImpl<Policy>::GetSize() const
-{
-  return this->getPolicy().size();
-}
-
-template<class Policy>
-Ptr<Entry>
-ContentStoreImpl<Policy>::Begin()
-{
-  typename super::parent_trie::recursive_iterator item(super::getTrie()), end(0);
-  for (; item != end; item++) {
-    if (item->payload() == 0)
-      continue;
-    break;
-  }
-
-  if (item == end)
-    return End();
-  else
-    return item->payload();
-}
-
-template<class Policy>
-Ptr<Entry>
-ContentStoreImpl<Policy>::End()
-{
-  return 0;
-}
-
-template<class Policy>
-Ptr<Entry>
-ContentStoreImpl<Policy>::Next(Ptr<Entry> from)
-{
-  if (from == 0)
-    return 0;
-
-  typename super::parent_trie::recursive_iterator item(*StaticCast<entry>(from)->to_iterator()),
-    end(0);
-
-  for (item++; item != end; item++) {
-    if (item->payload() == 0)
-      continue;
-    break;
-  }
-
-  if (item == end)
-    return End();
-  else
-    return item->payload();
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
-
-#endif // NDN_CONTENT_STORE_IMPL_H_
diff --git a/model/cs/content-store-nocache.cpp b/model/cs/content-store-nocache.cpp
deleted file mode 100644
index 6b10df1..0000000
--- a/model/cs/content-store-nocache.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "content-store-nocache.hpp"
-
-#include "ns3/log.h"
-#include "ns3/packet.h"
-
-NS_LOG_COMPONENT_DEFINE("ndn.cs.Nocache");
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-NS_OBJECT_ENSURE_REGISTERED(Nocache);
-
-TypeId
-Nocache::GetTypeId(void)
-{
-  static TypeId tid = TypeId("ns3::ndn::cs::Nocache")
-                        .SetGroupName("Ndn")
-                        .SetParent<ContentStore>()
-                        .AddConstructor<Nocache>();
-
-  return tid;
-}
-
-Nocache::Nocache()
-{
-}
-
-Nocache::~Nocache()
-{
-}
-
-shared_ptr<Data>
-Nocache::Lookup(shared_ptr<const Interest> interest)
-{
-  this->m_cacheMissesTrace(interest);
-  return 0;
-}
-
-bool
-Nocache::Add(shared_ptr<const Data> data)
-{
-  return false;
-}
-
-void
-Nocache::Print(std::ostream& os) const
-{
-}
-
-uint32_t
-Nocache::GetSize() const
-{
-  return 0;
-}
-
-Ptr<cs::Entry>
-Nocache::Begin()
-{
-  return 0;
-}
-
-Ptr<cs::Entry>
-Nocache::End()
-{
-  return 0;
-}
-
-Ptr<cs::Entry> Nocache::Next(Ptr<cs::Entry>)
-{
-  return 0;
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/content-store-nocache.hpp b/model/cs/content-store-nocache.hpp
deleted file mode 100644
index 019926b..0000000
--- a/model/cs/content-store-nocache.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_NOCACHE_H
-#define NDN_CONTENT_STORE_NOCACHE_H
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "ns3/ndnSIM/model/cs/ndn-content-store.hpp"
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief Implementation of ContentStore that completely disables caching
- */
-class Nocache : public ContentStore {
-public:
-  /**
-   * \brief Interface ID
-   *
-   * \return interface ID
-   */
-  static TypeId
-  GetTypeId();
-
-  /**
-   * @brief Default constructor
-   */
-  Nocache();
-
-  /**
-   * @brief Virtual destructor
-   */
-  virtual ~Nocache();
-
-  virtual shared_ptr<Data>
-  Lookup(shared_ptr<const Interest> interest);
-
-  virtual bool
-  Add(shared_ptr<const Data> data);
-
-  virtual void
-  Print(std::ostream& os) const;
-
-  virtual uint32_t
-  GetSize() const;
-
-  virtual Ptr<cs::Entry>
-  Begin();
-
-  virtual Ptr<cs::Entry>
-  End();
-
-  virtual Ptr<cs::Entry> Next(Ptr<cs::Entry>);
-};
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
-
-#endif // NDN_CONTENT_STORE_NOCACHE_H
diff --git a/model/cs/content-store-with-freshness.cpp b/model/cs/content-store-with-freshness.cpp
deleted file mode 100644
index c60236b..0000000
--- a/model/cs/content-store-with-freshness.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "content-store-with-freshness.hpp"
-
-#include "../../utils/trie/random-policy.hpp"
-#include "../../utils/trie/lru-policy.hpp"
-#include "../../utils/trie/fifo-policy.hpp"
-#include "../../utils/trie/lfu-policy.hpp"
-
-#define NS_OBJECT_ENSURE_REGISTERED_TEMPL(type, templ)                                             \
-  static struct X##type##templ##RegistrationClass {                                                \
-    X##type##templ##RegistrationClass()                                                            \
-    {                                                                                              \
-      ns3::TypeId tid = type<templ>::GetTypeId();                                                  \
-      tid.GetParent();                                                                             \
-    }                                                                                              \
-  } x_##type##templ##RegistrationVariable
-
-namespace ns3 {
-namespace ndn {
-
-using namespace ndnSIM;
-
-namespace cs {
-
-// explicit instantiation and registering
-/**
- * @brief ContentStore with freshness and LRU cache replacement policy
- **/
-template class ContentStoreWithFreshness<lru_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and random cache replacement policy
- **/
-template class ContentStoreWithFreshness<random_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and FIFO cache replacement policy
- **/
-template class ContentStoreWithFreshness<fifo_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and Least Frequently Used (LFU) cache replacement policy
- **/
-template class ContentStoreWithFreshness<lfu_policy_traits>;
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithFreshness, lru_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithFreshness, random_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithFreshness, fifo_policy_traits);
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithFreshness, lfu_policy_traits);
-
-#ifdef DOXYGEN
-// /**
-//  * \brief Content Store with freshness implementing LRU cache replacement policy
-//  */
-class Freshness::Lru : public ContentStoreWithFreshness<lru_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing FIFO cache replacement policy
- */
-class Freshness::Fifo : public ContentStoreWithFreshness<fifo_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing Random cache replacement policy
- */
-class Freshness::Random : public ContentStoreWithFreshness<random_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing Least Frequently Used cache replacement policy
- */
-class Freshness::Lfu : public ContentStoreWithFreshness<lfu_policy_traits> {
-};
-
-#endif
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/content-store-with-freshness.hpp b/model/cs/content-store-with-freshness.hpp
deleted file mode 100644
index 4cfa700..0000000
--- a/model/cs/content-store-with-freshness.hpp
+++ /dev/null
@@ -1,189 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_WITH_FRESHNESS_H_
-#define NDN_CONTENT_STORE_WITH_FRESHNESS_H_
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "content-store-impl.hpp"
-
-#include "../../utils/trie/multi-policy.hpp"
-#include "custom-policies/freshness-policy.hpp"
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief Special content store realization that honors Freshness parameter in Data packets
- */
-template<class Policy>
-class ContentStoreWithFreshness
-  : public ContentStoreImpl<ndnSIM::
-                              multi_policy_traits<boost::mpl::
-                                                    vector2<Policy,
-                                                            ndnSIM::freshness_policy_traits>>> {
-public:
-  typedef ContentStoreImpl<ndnSIM::multi_policy_traits<boost::mpl::
-                                                         vector2<Policy,
-                                                                 ndnSIM::freshness_policy_traits>>>
-    super;
-
-  typedef typename super::policy_container::template index<1>::type freshness_policy_container;
-
-  static TypeId
-  GetTypeId();
-
-  virtual inline void
-  Print(std::ostream& os) const;
-
-  virtual inline bool
-  Add(shared_ptr<const Data> data);
-
-private:
-  inline void
-  CleanExpired();
-
-  inline void
-  RescheduleCleaning();
-
-private:
-  static LogComponent g_log; ///< @brief Logging variable
-
-  EventId m_cleanEvent;
-  Time m_scheduledCleaningTime;
-};
-
-//////////////////////////////////////////
-////////// Implementation ////////////////
-//////////////////////////////////////////
-
-template<class Policy>
-LogComponent ContentStoreWithFreshness<Policy>::g_log = LogComponent(("ndn.cs.Freshness."
-                                                                      + Policy::GetName()).c_str(), __FILE__);
-
-template<class Policy>
-TypeId
-ContentStoreWithFreshness<Policy>::GetTypeId()
-{
-  static TypeId tid = TypeId(("ns3::ndn::cs::Freshness::" + Policy::GetName()).c_str())
-                        .SetGroupName("Ndn")
-                        .SetParent<super>()
-                        .template AddConstructor<ContentStoreWithFreshness<Policy>>()
-
-    // trace stuff here
-    ;
-
-  return tid;
-}
-
-template<class Policy>
-inline bool
-ContentStoreWithFreshness<Policy>::Add(shared_ptr<const Data> data)
-{
-  bool ok = super::Add(data);
-  if (!ok)
-    return false;
-
-  NS_LOG_DEBUG(data->getName() << " added to cache");
-  RescheduleCleaning();
-  return true;
-}
-
-template<class Policy>
-inline void
-ContentStoreWithFreshness<Policy>::RescheduleCleaning()
-{
-  const freshness_policy_container& freshness =
-    this->getPolicy().template get<freshness_policy_container>();
-
-  if (freshness.size() > 0) {
-    Time nextStateTime =
-      freshness_policy_container::policy_base::get_freshness(&(*freshness.begin()));
-
-    if (m_scheduledCleaningTime.IsZero() ||      // if not yet scheduled
-        m_scheduledCleaningTime > nextStateTime) // if new item expire sooner than already scheduled
-    {
-      if (m_cleanEvent.IsRunning()) {
-        Simulator::Remove(m_cleanEvent); // just canceling would not clean up list of events
-      }
-
-      // NS_LOG_DEBUG ("Next event in: " << (nextStateTime - Now ()).ToDouble (Time::S) << "s");
-      m_cleanEvent = Simulator::Schedule(nextStateTime - Now(),
-                                         &ContentStoreWithFreshness<Policy>::CleanExpired, this);
-      m_scheduledCleaningTime = nextStateTime;
-    }
-  }
-  else {
-    if (m_cleanEvent.IsRunning()) {
-      Simulator::Remove(m_cleanEvent); // just canceling would not clean up list of events
-    }
-  }
-}
-
-template<class Policy>
-inline void
-ContentStoreWithFreshness<Policy>::CleanExpired()
-{
-  freshness_policy_container& freshness =
-    this->getPolicy().template get<freshness_policy_container>();
-
-  // NS_LOG_LOGIC (">> Cleaning: Total number of items:" << this->getPolicy ().size () << ", items
-  // with freshness: " << freshness.size ());
-  Time now = Simulator::Now();
-
-  while (!freshness.empty()) {
-    typename freshness_policy_container::iterator entry = freshness.begin();
-
-    if (freshness_policy_container::policy_base::get_freshness(&(*entry))
-        <= now) // is the record stale?
-    {
-      super::erase(&(*entry));
-    }
-    else
-      break; // nothing else to do. All later records will not be stale
-  }
-  // NS_LOG_LOGIC ("<< Cleaning: Total number of items:" << this->getPolicy ().size () << ", items
-  // with freshness: " << freshness.size ());
-
-  m_scheduledCleaningTime = Time();
-  RescheduleCleaning();
-}
-
-template<class Policy>
-void
-ContentStoreWithFreshness<Policy>::Print(std::ostream& os) const
-{
-  // const freshness_policy_container &freshness = this->getPolicy ().template
-  // get<freshness_policy_container> ();
-
-  for (typename super::policy_container::const_iterator item = this->getPolicy().begin();
-       item != this->getPolicy().end(); item++) {
-    Time ttl = freshness_policy_container::policy_base::get_freshness(&(*item)) - Simulator::Now();
-    os << item->payload()->GetName() << "(left: " << ttl.ToDouble(Time::S) << "s)" << std::endl;
-  }
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
-
-#endif // NDN_CONTENT_STORE_WITH_FRESHNESS_H_
diff --git a/model/cs/content-store-with-probability.cpp b/model/cs/content-store-with-probability.cpp
deleted file mode 100644
index 5f28c0a..0000000
--- a/model/cs/content-store-with-probability.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "content-store-with-probability.hpp"
-
-#include "../../utils/trie/random-policy.hpp"
-#include "../../utils/trie/lru-policy.hpp"
-#include "../../utils/trie/fifo-policy.hpp"
-#include "../../utils/trie/lfu-policy.hpp"
-
-#define NS_OBJECT_ENSURE_REGISTERED_TEMPL(type, templ)                                             \
-  static struct X##type##templ##RegistrationClass {                                                \
-    X##type##templ##RegistrationClass()                                                            \
-    {                                                                                              \
-      ns3::TypeId tid = type<templ>::GetTypeId();                                                  \
-      tid.GetParent();                                                                             \
-    }                                                                                              \
-  } x_##type##templ##RegistrationVariable
-
-namespace ns3 {
-namespace ndn {
-
-using namespace ndnSIM;
-
-namespace cs {
-
-// explicit instantiation and registering
-/**
- * @brief ContentStore with freshness and LRU cache replacement policy
- **/
-template class ContentStoreWithProbability<lru_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and random cache replacement policy
- **/
-template class ContentStoreWithProbability<random_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and FIFO cache replacement policy
- **/
-template class ContentStoreWithProbability<fifo_policy_traits>;
-
-/**
- * @brief ContentStore with freshness and Least Frequently Used (LFU) cache replacement policy
- **/
-template class ContentStoreWithProbability<lfu_policy_traits>;
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithProbability, lru_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithProbability, random_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithProbability, fifo_policy_traits);
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithProbability, lfu_policy_traits);
-
-#ifdef DOXYGEN
-// /**
-//  * \brief Content Store with freshness implementing LRU cache replacement policy
-//  */
-class Probability::Lru : public ContentStoreWithProbability<lru_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing FIFO cache replacement policy
- */
-class Probability::Fifo : public ContentStoreWithProbability<fifo_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing Random cache replacement policy
- */
-class Probability::Random : public ContentStoreWithProbability<random_policy_traits> {
-};
-
-/**
- * \brief Content Store with freshness implementing Least Frequently Used cache replacement policy
- */
-class Probability::Lfu : public ContentStoreWithProbability<lfu_policy_traits> {
-};
-
-#endif
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/content-store-with-probability.hpp b/model/cs/content-store-with-probability.hpp
deleted file mode 100644
index 5ba9b58..0000000
--- a/model/cs/content-store-with-probability.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_WITH_PROBABILITY_H_
-#define NDN_CONTENT_STORE_WITH_PROBABILITY_H_
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "content-store-impl.hpp"
-
-#include "../../utils/trie/multi-policy.hpp"
-#include "custom-policies/probability-policy.hpp"
-#include "ns3/double.h"
-#include "ns3/type-id.h"
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief Special content store realization that probabilistically accepts data packet
- *        into CS (placement policy)
- */
-template<class Policy>
-class ContentStoreWithProbability
-  : public ContentStoreImpl<ndnSIM::multi_policy_traits<boost::mpl::
-                                                          vector2<ndnSIM::probability_policy_traits,
-                                                                  Policy>>> {
-public:
-  typedef ContentStoreImpl<ndnSIM::multi_policy_traits<boost::mpl::
-                                                         vector2<ndnSIM::probability_policy_traits,
-                                                                 Policy>>> super;
-
-  typedef typename super::policy_container::template index<0>::type probability_policy_container;
-
-  ContentStoreWithProbability(){};
-
-  static TypeId
-  GetTypeId();
-
-private:
-  void
-  SetCacheProbability(double probability)
-  {
-    this->getPolicy().template get<probability_policy_container>().set_probability(probability);
-  }
-
-  double
-  GetCacheProbability() const
-  {
-    return this->getPolicy().template get<probability_policy_container>().get_probability();
-  }
-};
-
-//////////////////////////////////////////
-////////// Implementation ////////////////
-//////////////////////////////////////////
-
-template<class Policy>
-TypeId
-ContentStoreWithProbability<Policy>::GetTypeId()
-{
-  static TypeId tid =
-    TypeId(("ns3::ndn::cs::Probability::" + Policy::GetName()).c_str())
-      .SetGroupName("Ndn")
-      .SetParent<super>()
-      .template AddConstructor<ContentStoreWithProbability<Policy>>()
-
-      .AddAttribute("CacheProbability",
-                    "Set probability of caching in ContentStore. "
-                    "If 1, every content is cached. If 0, no content is cached.",
-                    DoubleValue(1.0), //(+)
-                    MakeDoubleAccessor(&ContentStoreWithProbability<Policy>::GetCacheProbability,
-                                       &ContentStoreWithProbability<Policy>::SetCacheProbability),
-                    MakeDoubleChecker<double>());
-
-  return tid;
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
-
-#endif // NDN_CONTENT_STORE_WITH_PROBABILITY_H_
diff --git a/model/cs/content-store-with-stats.cpp b/model/cs/content-store-with-stats.cpp
deleted file mode 100644
index bcdf098..0000000
--- a/model/cs/content-store-with-stats.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "content-store-with-stats.hpp"
-
-#include "../../utils/trie/random-policy.hpp"
-#include "../../utils/trie/lru-policy.hpp"
-#include "../../utils/trie/fifo-policy.hpp"
-#include "../../utils/trie/lfu-policy.hpp"
-
-#define NS_OBJECT_ENSURE_REGISTERED_TEMPL(type, templ)                                             \
-  static struct X##type##templ##RegistrationClass {                                                \
-    X##type##templ##RegistrationClass()                                                            \
-    {                                                                                              \
-      ns3::TypeId tid = type<templ>::GetTypeId();                                                  \
-      tid.GetParent();                                                                             \
-    }                                                                                              \
-  } x_##type##templ##RegistrationVariable
-
-namespace ns3 {
-namespace ndn {
-
-using namespace ndnSIM;
-
-namespace cs {
-
-// explicit instantiation and registering
-/**
- * @brief ContentStore with stats and LRU cache replacement policy
- **/
-template class ContentStoreWithStats<lru_policy_traits>;
-
-/**
- * @brief ContentStore with stats and random cache replacement policy
- **/
-template class ContentStoreWithStats<random_policy_traits>;
-
-/**
- * @brief ContentStore with stats and FIFO cache replacement policy
- **/
-template class ContentStoreWithStats<fifo_policy_traits>;
-
-/**
- * @brief ContentStore with stats and Least Frequently Used (LFU) cache replacement policy
- **/
-template class ContentStoreWithStats<lfu_policy_traits>;
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithStats, lru_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithStats, random_policy_traits);
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithStats, fifo_policy_traits);
-
-NS_OBJECT_ENSURE_REGISTERED_TEMPL(ContentStoreWithStats, lfu_policy_traits);
-
-#ifdef DOXYGEN
-// /**
-//  * \brief Content Store with stats implementing LRU cache replacement policy
-//  */
-class Stats::Lru : public ContentStoreWithStats<lru_policy_traits> {
-};
-
-/**
- * \brief Content Store with stats implementing FIFO cache replacement policy
- */
-class Stats::Fifo : public ContentStoreWithStats<fifo_policy_traits> {
-};
-
-/**
- * \brief Content Store with stats implementing Random cache replacement policy
- */
-class Stats::Random : public ContentStoreWithStats<random_policy_traits> {
-};
-
-/**
- * \brief Content Store with stats implementing Least Frequently Used cache replacement policy
- */
-class Stats::Lfu : public ContentStoreWithStats<lfu_policy_traits> {
-};
-
-#endif
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/content-store-with-stats.hpp b/model/cs/content-store-with-stats.hpp
deleted file mode 100644
index 3b84ac2..0000000
--- a/model/cs/content-store-with-stats.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_WITH_STATS_H_
-#define NDN_CONTENT_STORE_WITH_STATS_H_
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "content-store-impl.hpp"
-
-#include "../../utils/trie/multi-policy.hpp"
-#include "custom-policies/lifetime-stats-policy.hpp"
-
-namespace ns3 {
-namespace ndn {
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief Special content store realization that provides ability to track stats of CS operations
- */
-template<class Policy>
-class ContentStoreWithStats
-  : public ContentStoreImpl<ndnSIM::
-                              multi_policy_traits<boost::mpl::
-                                                    vector2<Policy,
-                                                            ndnSIM::
-                                                              lifetime_stats_policy_traits>>> {
-public:
-  typedef ContentStoreImpl<ndnSIM::
-                             multi_policy_traits<boost::mpl::
-                                                   vector2<Policy,
-                                                           ndnSIM::lifetime_stats_policy_traits>>>
-    super;
-
-  typedef typename super::policy_container::template index<1>::type lifetime_stats_container;
-
-  ContentStoreWithStats()
-  {
-    // connect traceback to the policy
-    super::getPolicy().template get<1>().set_traced_callback(&m_willRemoveEntry);
-  }
-
-  static TypeId
-  GetTypeId();
-
-  virtual inline void
-  Print(std::ostream& os) const;
-
-public:
-  typedef void (*RemoveCsEntryCallback)(Ptr<const Entry>, Time);
-
-private:
-  static LogComponent g_log; ///< @brief Logging variable
-
-  /// @brief trace of for entry removal: first parameter is pointer to the CS entry, second is how
-  /// long entry was in the cache
-  TracedCallback<Ptr<const Entry>, Time> m_willRemoveEntry;
-};
-
-//////////////////////////////////////////
-////////// Implementation ////////////////
-//////////////////////////////////////////
-
-template<class Policy>
-LogComponent ContentStoreWithStats<Policy>::g_log = LogComponent(("ndn.cs.Stats."
-                                                                  + Policy::GetName()).c_str(), __FILE__);
-
-template<class Policy>
-TypeId
-ContentStoreWithStats<Policy>::GetTypeId()
-{
-  static TypeId tid =
-    TypeId(("ns3::ndn::cs::Stats::" + Policy::GetName()).c_str())
-      .SetGroupName("Ndn")
-      .SetParent<super>()
-      .template AddConstructor<ContentStoreWithStats<Policy>>()
-
-      .AddTraceSource("WillRemoveEntry",
-                      "Trace called just before content store entry will be removed",
-                      MakeTraceSourceAccessor(&ContentStoreWithStats<Policy>::m_willRemoveEntry),
-                      "ns3::ndn::cs::ContentStoreWithStats::RemoveCsEntryCallback")
-
-    // trace stuff here
-    ;
-
-  return tid;
-}
-
-template<class Policy>
-void
-ContentStoreWithStats<Policy>::Print(std::ostream& os) const
-{
-  // const freshness_policy_container &freshness = this->getPolicy ().template
-  // get<freshness_policy_container> ();
-
-  for (typename super::policy_container::const_iterator item = this->getPolicy().begin();
-       item != this->getPolicy().end(); item++) {
-    Time alive = lifetime_stats_container::policy_base::get_time(&(*item)) - Simulator::Now();
-    os << item->payload()->GetName() << "(alive: " << alive.ToDouble(Time::S) << "s)" << std::endl;
-  }
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
-
-#endif // NDN_CONTENT_STORE_IMPL_H_
diff --git a/model/cs/custom-policies/freshness-policy.hpp b/model/cs/custom-policies/freshness-policy.hpp
deleted file mode 100644
index 415ab0b..0000000
--- a/model/cs/custom-policies/freshness-policy.hpp
+++ /dev/null
@@ -1,173 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef FRESHNESS_POLICY_H_
-#define FRESHNESS_POLICY_H_
-
-/// @cond include_hidden
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include <boost/intrusive/options.hpp>
-#include <boost/intrusive/list.hpp>
-
-#include <ns3/nstime.h>
-#include <ns3/simulator.h>
-#include <ns3/traced-callback.h>
-
-namespace ns3 {
-namespace ndn {
-namespace ndnSIM {
-
-/**
- * @brief Traits for freshness policy
- */
-struct freshness_policy_traits {
-  /// @brief Name that can be used to identify the policy (for NS-3 object model and logging)
-  static std::string
-  GetName()
-  {
-    return "Freshness";
-  }
-
-  struct policy_hook_type : public boost::intrusive::set_member_hook<> {
-    Time timeWhenShouldExpire;
-  };
-
-  template<class Container>
-  struct container_hook {
-    typedef boost::intrusive::member_hook<Container, policy_hook_type, &Container::policy_hook_>
-      type;
-  };
-
-  template<class Base, class Container, class Hook>
-  struct policy {
-    static Time&
-    get_freshness(typename Container::iterator item)
-    {
-      return static_cast<typename policy_container::value_traits::hook_type*>(
-               policy_container::value_traits::to_node_ptr(*item))->timeWhenShouldExpire;
-    }
-
-    static const Time&
-    get_freshness(typename Container::const_iterator item)
-    {
-      return static_cast<const typename policy_container::value_traits::hook_type*>(
-               policy_container::value_traits::to_node_ptr(*item))->timeWhenShouldExpire;
-    }
-
-    template<class Key>
-    struct MemberHookLess {
-      bool
-      operator()(const Key& a, const Key& b) const
-      {
-        return get_freshness(&a) < get_freshness(&b);
-      }
-    };
-
-    typedef boost::intrusive::multiset<Container,
-                                       boost::intrusive::compare<MemberHookLess<Container>>,
-                                       Hook> policy_container;
-
-    class type : public policy_container {
-    public:
-      typedef policy policy_base; // to get access to get_freshness methods from outside
-      typedef Container parent_trie;
-
-      type(Base& base)
-        : base_(base)
-        , max_size_(100)
-      {
-      }
-
-      inline void
-      update(typename parent_trie::iterator item)
-      {
-        // do nothing
-      }
-
-      inline bool
-      insert(typename parent_trie::iterator item)
-      {
-        time::milliseconds freshness = item->payload()->GetData()->getFreshnessPeriod();
-        if (freshness > time::milliseconds::zero()) {
-          get_freshness(item) = Simulator::Now() + MilliSeconds(freshness.count());
-
-          // push item only if freshness is non zero. otherwise, this payload is not
-          // controlled by the policy.
-          // Note that .size() on this policy would return only the number of items with
-          // non-infinite freshness policy
-          policy_container::insert(*item);
-        }
-
-        return true;
-      }
-
-      inline void
-      lookup(typename parent_trie::iterator item)
-      {
-        // do nothing. it's random policy
-      }
-
-      inline void
-      erase(typename parent_trie::iterator item)
-      {
-        time::milliseconds freshness = item->payload()->GetData()->getFreshnessPeriod();
-        if (freshness > time::milliseconds::zero()) {
-          // erase only if freshness is positive (otherwise an item is not in the policy)
-          policy_container::erase(policy_container::s_iterator_to(*item));
-        }
-      }
-
-      inline void
-      clear()
-      {
-        policy_container::clear();
-      }
-
-      inline void
-      set_max_size(size_t max_size)
-      {
-        max_size_ = max_size;
-      }
-
-      inline size_t
-      get_max_size() const
-      {
-        return max_size_;
-      }
-
-    private:
-      type()
-        : base_(*((Base*)0)){};
-
-    private:
-      Base& base_;
-      size_t max_size_;
-    };
-  };
-};
-
-} // ndnSIM
-} // ndn
-} // ns3
-
-/// @endcond
-
-#endif // LIFETIME_STATS_POLICY_H
diff --git a/model/cs/custom-policies/lifetime-stats-policy.hpp b/model/cs/custom-policies/lifetime-stats-policy.hpp
deleted file mode 100644
index 6e81618..0000000
--- a/model/cs/custom-policies/lifetime-stats-policy.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef LIFETIME_STATS_POLICY_H_
-#define LIFETIME_STATS_POLICY_H_
-
-/// @cond include_hidden
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include <boost/intrusive/options.hpp>
-#include <boost/intrusive/list.hpp>
-
-#include <ns3/nstime.h>
-#include <ns3/simulator.h>
-#include <ns3/traced-callback.h>
-
-namespace ns3 {
-namespace ndn {
-namespace ndnSIM {
-
-/**
- * @brief Traits for lifetime stats policy
- */
-struct lifetime_stats_policy_traits {
-  /// @brief Name that can be used to identify the policy (for NS-3 object model and logging)
-  static std::string
-  GetName()
-  {
-    return "LifetimeStats";
-  }
-
-  struct policy_hook_type : public boost::intrusive::list_member_hook<> {
-    Time timeWhenAdded;
-  };
-
-  template<class Container>
-  struct container_hook {
-    typedef boost::intrusive::member_hook<Container, policy_hook_type, &Container::policy_hook_>
-      type;
-  };
-
-  template<class Base, class Container, class Hook>
-  struct policy {
-    typedef typename boost::intrusive::list<Container, Hook> policy_container;
-
-    static Time&
-    get_time(typename Container::iterator item)
-    {
-      return static_cast<typename policy_container::value_traits::hook_type*>(
-               policy_container::value_traits::to_node_ptr(*item))->timeWhenAdded;
-    }
-
-    static const Time&
-    get_time(typename Container::const_iterator item)
-    {
-      return static_cast<const typename policy_container::value_traits::hook_type*>(
-               policy_container::value_traits::to_node_ptr(*item))->timeWhenAdded;
-    }
-
-    class type : public policy_container {
-    public:
-      typedef policy policy_base; // to get access to get_time methods from outside
-      typedef Container parent_trie;
-
-      type(Base& base)
-        : base_(base)
-        , max_size_(100)
-        , m_willRemoveEntry(0)
-      {
-      }
-
-      inline void
-      update(typename parent_trie::iterator item)
-      {
-        // do nothing. it's random policy
-      }
-
-      inline bool
-      insert(typename parent_trie::iterator item)
-      {
-        get_time(item) = Simulator::Now();
-
-        policy_container::push_back(*item);
-        return true;
-      }
-
-      inline void
-      lookup(typename parent_trie::iterator item)
-      {
-        // do nothing. it's random policy
-      }
-
-      inline void
-      erase(typename parent_trie::iterator item)
-      {
-        Time lifetime = Simulator::Now() - get_time(item);
-
-        if (m_willRemoveEntry != 0) {
-          (*m_willRemoveEntry)(item->payload(), lifetime);
-        }
-
-        policy_container::erase(policy_container::s_iterator_to(*item));
-      }
-
-      inline void
-      clear()
-      {
-        policy_container::clear();
-      }
-
-      inline void
-      set_max_size(size_t max_size)
-      {
-        max_size_ = max_size;
-      }
-
-      inline size_t
-      get_max_size() const
-      {
-        return max_size_;
-      }
-
-      void
-      set_traced_callback(
-        TracedCallback<typename parent_trie::payload_traits::const_base_type, Time>* callback)
-      {
-        m_willRemoveEntry = callback;
-      }
-
-    private:
-      type()
-        : base_(*((Base*)0)){};
-
-    private:
-      Base& base_;
-      size_t max_size_;
-
-      TracedCallback<typename parent_trie::payload_traits::const_base_type, Time>*
-        m_willRemoveEntry;
-    };
-  };
-};
-
-} // ndnSIM
-} // ndn
-} // ns3
-
-/// @endcond
-
-#endif // LIFETIME_STATS_POLICY_H
diff --git a/model/cs/custom-policies/probability-policy.hpp b/model/cs/custom-policies/probability-policy.hpp
deleted file mode 100644
index 8bfb1c6..0000000
--- a/model/cs/custom-policies/probability-policy.hpp
+++ /dev/null
@@ -1,153 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef PROBABILITY_POLICY_H_
-#define PROBABILITY_POLICY_H_
-
-/// @cond include_hidden
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include <boost/intrusive/options.hpp>
-#include <boost/intrusive/list.hpp>
-
-#include <ns3/random-variable-stream.h>
-
-namespace ns3 {
-namespace ndn {
-namespace ndnSIM {
-
-/**
- * @brief Traits for freshness policy
- */
-struct probability_policy_traits {
-  static std::string
-  GetName()
-  {
-    return "ProbabilityImpl";
-  }
-
-  struct policy_hook_type : public boost::intrusive::list_member_hook<> {
-  };
-
-  template<class Container>
-  struct container_hook {
-    typedef boost::intrusive::member_hook<Container, policy_hook_type, &Container::policy_hook_>
-      type;
-  };
-
-  template<class Base, class Container, class Hook>
-  struct policy {
-    typedef typename boost::intrusive::list<Container, Hook> policy_container;
-
-    class type : public policy_container {
-    public:
-      typedef policy policy_base; // to get access to get_freshness methods from outside
-      typedef Container parent_trie;
-
-      type(Base& base)
-        : base_(base)
-        , max_size_(100)
-        , probability_(1.0)
-        , ns3_rand_(CreateObject<UniformRandomVariable>())
-      {
-      }
-
-      inline void
-      update(typename parent_trie::iterator item)
-      {
-      }
-
-      inline bool
-      insert(typename parent_trie::iterator item)
-      {
-        if (ns3_rand_->GetValue() < probability_) {
-          policy_container::push_back(*item);
-
-          // allow caching
-          return true;
-        }
-        else {
-          // don't allow caching
-          return false;
-        }
-      }
-
-      inline void
-      lookup(typename parent_trie::iterator item)
-      {
-        // do nothing. it's random policy
-      }
-
-      inline void
-      erase(typename parent_trie::iterator item)
-      {
-        policy_container::erase(policy_container::s_iterator_to(*item));
-      }
-
-      inline void
-      clear()
-      {
-        policy_container::clear();
-      }
-
-      inline void
-      set_max_size(size_t max_size)
-      {
-        max_size_ = max_size;
-      }
-
-      inline size_t
-      get_max_size() const
-      {
-        return max_size_;
-      }
-
-      inline void
-      set_probability(double probability)
-      {
-        probability_ = probability;
-      }
-
-      inline double
-      get_probability() const
-      {
-        return probability_;
-      }
-
-    private:
-      type()
-        : base_(*((Base*)0)){};
-
-    private:
-      Base& base_;
-      size_t max_size_;
-      double probability_;
-      Ptr<UniformRandomVariable> ns3_rand_;
-    };
-  };
-};
-
-} // ndnSIM
-} // ndn
-} // ns3
-
-/// @endcond
-
-#endif // PROBABILITY_POLICY_H
diff --git a/model/cs/ndn-content-store.cpp b/model/cs/ndn-content-store.cpp
deleted file mode 100644
index 416bde3..0000000
--- a/model/cs/ndn-content-store.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#include "ndn-content-store.hpp"
-
-#include "ns3/log.h"
-#include "ns3/packet.h"
-
-NS_LOG_COMPONENT_DEFINE("ndn.cs.ContentStore");
-
-namespace ns3 {
-namespace ndn {
-
-NS_OBJECT_ENSURE_REGISTERED(ContentStore);
-
-TypeId
-ContentStore::GetTypeId(void)
-{
-  static TypeId tid =
-    TypeId("ns3::ndn::ContentStore")
-      .SetGroupName("Ndn")
-      .SetParent<Object>()
-
-      .AddTraceSource("CacheHits", "Trace called every time there is a cache hit",
-                      MakeTraceSourceAccessor(&ContentStore::m_cacheHitsTrace),
-                      "ns3::ndn::ContentStore::CacheHitsCallback")
-
-      .AddTraceSource("CacheMisses", "Trace called every time there is a cache miss",
-                      MakeTraceSourceAccessor(&ContentStore::m_cacheMissesTrace),
-                      "ns3::ndn::ContentStrore::CacheMissesCallback");
-
-  return tid;
-}
-
-ContentStore::~ContentStore()
-{
-}
-
-namespace cs {
-
-//////////////////////////////////////////////////////////////////////
-
-Entry::Entry(Ptr<ContentStore> cs, shared_ptr<const Data> data)
-  : m_cs(cs)
-  , m_data(data)
-{
-}
-
-const Name&
-Entry::GetName() const
-{
-  return m_data->getName();
-}
-
-shared_ptr<const Data>
-Entry::GetData() const
-{
-  return m_data;
-}
-
-Ptr<ContentStore>
-Entry::GetContentStore()
-{
-  return m_cs;
-}
-
-} // namespace cs
-} // namespace ndn
-} // namespace ns3
diff --git a/model/cs/ndn-content-store.hpp b/model/cs/ndn-content-store.hpp
deleted file mode 100644
index 54c177b..0000000
--- a/model/cs/ndn-content-store.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/**
- * Copyright (c) 2011-2015  Regents of the University of California.
- *
- * This file is part of ndnSIM. See AUTHORS for complete list of ndnSIM authors and
- * contributors.
- *
- * ndnSIM is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * ndnSIM 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
- * ndnSIM, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NDN_CONTENT_STORE_H
-#define NDN_CONTENT_STORE_H
-
-#include "ns3/ndnSIM/model/ndn-common.hpp"
-
-#include "ns3/object.h"
-#include "ns3/ptr.h"
-#include "ns3/traced-callback.h"
-
-#include <tuple>
-
-namespace ns3 {
-
-class Packet;
-
-namespace ndn {
-
-class ContentStore;
-
-/**
- * @ingroup ndn
- * @defgroup ndn-cs Content Store
- */
-
-/**
- * @ingroup ndn-cs
- * @brief Namespace for ContentStore operations
- */
-namespace cs {
-
-/**
- * @ingroup ndn-cs
- * @brief NDN content store entry
- */
-class Entry : public SimpleRefCount<Entry> {
-public:
-  /**
-   * \brief Construct content store entry
-   *
-   * \param header Parsed Data header
-   * \param packet Original Ndn packet
-   *
-   * The constructor will make a copy of the supplied packet and calls
-   * RemoveHeader and RemoveTail on the copy.
-   */
-  Entry(Ptr<ContentStore> cs, shared_ptr<const Data> data);
-
-  /**
-   * \brief Get prefix of the stored entry
-   * \returns prefix of the stored entry
-   */
-  const Name&
-  GetName() const;
-
-  /**
-   * \brief Get Data of the stored entry
-   * \returns Data of the stored entry
-   */
-  shared_ptr<const Data>
-  GetData() const;
-
-  /**
-   * @brief Get pointer to access store, to which this entry is added
-   */
-  Ptr<ContentStore>
-  GetContentStore();
-
-private:
-  Ptr<ContentStore> m_cs;        ///< \brief content store to which entry is added
-  shared_ptr<const Data> m_data; ///< \brief non-modifiable Data
-};
-
-} // namespace cs
-
-/**
- * @ingroup ndn-cs
- * \brief Base class for NDN content store
- *
- * Particular implementations should implement Lookup, Add, and Print methods
- */
-class ContentStore : public Object {
-public:
-  /**
-   * \brief Interface ID
-   *
-   * \return interface ID
-   */
-  static TypeId
-  GetTypeId();
-
-  /**
-   * @brief Virtual destructor
-   */
-  virtual ~ContentStore();
-
-  /**
-   * \brief Find corresponding CS entry for the given interest
-   *
-   * \param interest Interest for which matching content store entry will be searched
-   *
-   * If an entry is found, it is promoted to the top of most recent
-   * used entries index, \see m_contentStore
-   */
-  virtual shared_ptr<Data>
-  Lookup(shared_ptr<const Interest> interest) = 0;
-
-  /**
-   * \brief Add a new content to the content store.
-   * \returns true if an existing entry was updated, false otherwise
-   */
-  virtual bool
-  Add(shared_ptr<const Data> data) = 0;
-
-  // /*
-  //  * \brief Add a new content to the content store.
-  //  *
-  //  * \param header Interest header for which an entry should be removed
-  //  * @returns true if an existing entry was removed, false otherwise
-  //  */
-  // virtual bool
-  // Remove (shared_ptr<Interest> header) = 0;
-
-  /**
-   * \brief Print out content store entries
-   */
-  virtual void
-  Print(std::ostream& os) const = 0;
-
-  /**
-   * @brief Get number of entries in content store
-   */
-  virtual uint32_t
-  GetSize() const = 0;
-
-  /**
-   * @brief Return first element of content store (no order guaranteed)
-   */
-  virtual Ptr<cs::Entry>
-  Begin() = 0;
-
-  /**
-   * @brief Return item next after last (no order guaranteed)
-   */
-  virtual Ptr<cs::Entry>
-  End() = 0;
-
-  /**
-   * @brief Advance the iterator
-   */
-  virtual Ptr<cs::Entry> Next(Ptr<cs::Entry>) = 0;
-
-  ////////////////////////////////////////////////////////////////////////////
-  ////////////////////////////////////////////////////////////////////////////
-  ////////////////////////////////////////////////////////////////////////////
-
-  /**
-   * @brief Static call to cheat python bindings
-   */
-  static inline Ptr<ContentStore>
-  GetContentStore(Ptr<Object> node);
-
-public:
-  typedef void (*CacheHitsCallback)(shared_ptr<const Interest>, shared_ptr<const Data>);
-  typedef void (*CacheMissesCallback)(shared_ptr<const Interest>);
-
-protected:
-  TracedCallback<shared_ptr<const Interest>,
-                 shared_ptr<const Data>> m_cacheHitsTrace; ///< @brief trace of cache hits
-
-  TracedCallback<shared_ptr<const Interest>> m_cacheMissesTrace; ///< @brief trace of cache misses
-};
-
-inline std::ostream&
-operator<<(std::ostream& os, const ContentStore& cs)
-{
-  cs.Print(os);
-  return os;
-}
-
-inline Ptr<ContentStore>
-ContentStore::GetContentStore(Ptr<Object> node)
-{
-  return node->GetObject<ContentStore>();
-}
-
-} // namespace ndn
-} // namespace ns3
-
-#include <boost/functional/hash.hpp>
-namespace boost {
-inline std::size_t
-hash_value(const ::ndn::name::Component component)
-{
-  return boost::hash_range(component.wireEncode().wire(),
-                           component.wireEncode().wire() + component.wireEncode().size());
-}
-}
-
-#endif // NDN_CONTENT_STORE_H
diff --git a/model/ndn-l3-protocol.cpp b/model/ndn-l3-protocol.cpp
index c5db46c..47ce00c 100644
--- a/model/ndn-l3-protocol.cpp
+++ b/model/ndn-l3-protocol.cpp
@@ -32,7 +32,6 @@
 #include "ndn-net-device-transport.hpp"
 
 #include "../helper/ndn-stack-helper.hpp"
-#include "cs/ndn-content-store.hpp"
 
 #include <boost/property_tree/info_parser.hpp>
 
@@ -192,7 +191,6 @@
 
   nfd::ConfigSection m_config;
 
-  Ptr<ContentStore> m_csFromNdnSim;
   PolicyCreationCallback m_policy;
 };
 
@@ -291,11 +289,7 @@
 
   ConfigFile config(&ConfigFile::ignoreUnknownSection);
 
-  // if we use NFD's CS, we have to specify a replacement policy
-  m_impl->m_csFromNdnSim = GetObject<ContentStore>();
-  if (m_impl->m_csFromNdnSim == nullptr) {
-    forwarder->getCs().setPolicy(m_impl->m_policy());
-  }
+  forwarder->getCs().setPolicy(m_impl->m_policy());
 
   TablesConfigSection tablesConfig(*forwarder);
   tablesConfig.setConfigFile(config);
@@ -371,12 +365,6 @@
     m_node = GetObject<Node>();
     if (m_node != nullptr) {
       initialize();
-
-      NS_ASSERT(m_impl->m_forwarder != nullptr);
-      m_impl->m_csFromNdnSim = GetObject<ContentStore>();
-      if (m_impl->m_csFromNdnSim != nullptr) {
-        m_impl->m_forwarder->setCsFromNdnSim(m_impl->m_csFromNdnSim);
-      }
     }
   }