diff --git a/test/basic-regression-test.cc b/test/basic-regression-test.cc
index b4625bb..2edac36 100644
--- a/test/basic-regression-test.cc
+++ b/test/basic-regression-test.cc
@@ -86,59 +86,59 @@
     // -- Read topology data.
     // --------------------------------------------
     
-    string input = NS_TEST_SOURCEDIR;
-    input += "/testtopology.txt";
+    // string input = NS_TEST_SOURCEDIR;
+    // input += "/testtopology.txt";
     
-    Ptr<AnnotatedTopologyReader> reader = CreateObject<AnnotatedTopologyReader> ();
-    reader->SetFileName (input);
+    // Ptr<AnnotatedTopologyReader> reader = CreateObject<AnnotatedTopologyReader> ();
+    // reader->SetFileName (input);
     
-    NodeContainer nodes;
-    if (reader != 0)
-    {
-        nodes = reader->Read ();
-    }
-    else
-    {
-        NS_TEST_ASSERT_MSG_EQ (true, false, "file not found");
-    }
+    // NodeContainer nodes;
+    // if (reader != 0)
+    // {
+    //     nodes = reader->Read ();
+    // }
+    // else
+    // {
+    //     NS_TEST_ASSERT_MSG_EQ (true, false, "file not found");
+    // }
     
-    NS_TEST_ASSERT_MSG_EQ (7, reader->LinksSize (), "link count is wrong");
+    // NS_TEST_ASSERT_MSG_EQ (7, reader->LinksSize (), "link count is wrong");
     
     
-    // ------------------------------------------------------------
-    // -- Create nodes and network stacks
-    // --------------------------------------------
-    NS_LOG_INFO ("creating internet stack");
-    InternetStackHelper stack;
+    // // ------------------------------------------------------------
+    // // -- Create nodes and network stacks
+    // // --------------------------------------------
+    // NS_LOG_INFO ("creating internet stack");
+    // InternetStackHelper stack;
     
     
-    //routing
-    /*Ipv4StaticRoutingHelper staticRouting;
-    Ipv4ListRoutingHelper listRH;
-    listRH.Add (staticRouting, 0);
-    stack.SetRoutingHelper (listRH);  // has effect on the next Install ()
-    stack.Install (nodes);
+    // //routing
+    // /*Ipv4StaticRoutingHelper staticRouting;
+    // Ipv4ListRoutingHelper listRH;
+    // listRH.Add (staticRouting, 0);
+    // stack.SetRoutingHelper (listRH);  // has effect on the next Install ()
+    // stack.Install (nodes);
     
-    NS_LOG_INFO ("creating ip4 addresses");
-    Ipv4AddressHelper address;
-    address.SetBase ("10.0.0.0", "255.255.255.252");*/
+    // NS_LOG_INFO ("creating ip4 addresses");
+    // Ipv4AddressHelper address;
+    // address.SetBase ("10.0.0.0", "255.255.255.252");*/
     
-    int totlinks = reader->LinksSize ();
+    // int totlinks = reader->LinksSize ();
     
     
-    /// applying settings
-    NS_LOG_INFO ("creating node containers");
-    NodeContainer* nc = new NodeContainer[totlinks];
-    TopologyReader::ConstLinksIterator iter;
-    int i = 0;
-    for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
-    {
-        nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
-    }
+    // /// applying settings
+    // NS_LOG_INFO ("creating node containers");
+    // NodeContainer* nc = new NodeContainer[totlinks];
+    // TopologyReader::ConstLinksIterator iter;
+    // int i = 0;
+    // for ( iter = reader->LinksBegin (); iter != reader->LinksEnd (); iter++, i++ )
+    // {
+    //     nc[i] = NodeContainer (iter->GetFromNode (), iter->GetToNode ());
+    // }
     
-    NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
-    reader->ApplySettings(ndc,nc);
-    /// settings applied
+    // NetDeviceContainer* ndc = new NetDeviceContainer[totlinks];
+    // reader->ApplySettings(ndc,nc);
+    // /// settings applied
     
     
     
diff --git a/test/content-object-example.cc b/test/content-object-example.cc
deleted file mode 100644
index 8272e86..0000000
--- a/test/content-object-example.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "ns3/test.h"
-#include "ns3/annotated-topology-reader.h"
-#include "ns3/ccnx-content-object-header.h"
-#include "ns3/uinteger.h"
-#include "ns3/random-variable.h"
-#include <limits> 
-#include "ns3/ccnx-header-helper.h"
-#include "ns3/header.h"
-#include "ns3/ccnx-name-components.h"
-#include "ns3/nstime.h"
-#include "ns3/buffer.h"
-#include "ns3/log.h"
-
-using namespace ns3;
-#include <fstream>
-
-NS_LOG_COMPONENT_DEFINE ("ContentObjectHeaderExample");
-
-int
-main (int argc, char *argv[])
-{
-  LogComponentEnable ("ContentObjectHeaderExample", LOG_ALL);
-  LogComponentEnable ("Packet", LOG_ALL);
-	
-  NS_LOG_INFO ("Test started");
-
-  Packet::EnablePrinting ();
-  Packet::EnableChecking (); 
-  Packet packet (10);
-	
-  CcnxContentObjectHeader header;
-  CcnxContentObjectTail   trailer;
-	
-  Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
-  (*testname) ("1");
-  header.SetName(testname);
-
-  NS_LOG_INFO ("Source: \n" << header << trailer);
-
-  packet.AddHeader (header);
-  packet.AddTrailer (trailer);
-
-  // NS_LOG_INFO ("Deserialized packet: \n" << packet);
-
-  NS_LOG_INFO ("Removing and deserializing individual headers");
-	
-  CcnxContentObjectHeader dst_header;
-  CcnxContentObjectTail   dst_trailer;
-
-  packet.RemoveHeader (dst_header);
-  packet.RemoveTrailer (dst_trailer);
-	
-  NS_LOG_INFO ("Target: \n" << dst_header << dst_trailer);
-
-  return 0;
-}
diff --git a/test/content-object-test.cc b/test/content-object-test.cc
index eff1304..cbb5811 100644
--- a/test/content-object-test.cc
+++ b/test/content-object-test.cc
@@ -23,6 +23,7 @@
 #include "ns3/ccnx-interest-header.h"
 #include "ns3/uinteger.h"
 #include "ns3/random-variable.h"
+#include "ns3/packet.h"
 #include <limits> 
 #include "ns3/ccnx-header-helper.h"
 #include "ns3/header.h"
diff --git a/test/interest-header-example.cc b/test/interest-header-example.cc
deleted file mode 100644
index e068feb..0000000
--- a/test/interest-header-example.cc
+++ /dev/null
@@ -1,90 +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
- *
- */
-#include "ns3/test.h"
-#include "ns3/annotated-topology-reader.h"
-#include "ns3/ccnx-interest-header.h"
-#include "ns3/uinteger.h"
-#include "ns3/random-variable.h"
-#include <limits> 
-#include "ns3/ccnx-header-helper.h"
-#include "ns3/header.h"
-#include "ns3/ccnx-name-components.h"
-#include "ns3/nstime.h"
-#include "ns3/buffer.h"
-#include "ns3/log.h"
-#include "ns3/packet.h"
-
-using namespace ns3;
-#include <fstream>
-
-NS_LOG_COMPONENT_DEFINE ("InterestHeaderExample");
-
-int
-main (int argc, char *argv[])
-{
-  // LogComponentEnable ("InterestHeaderExample", LOG_ALL);
-  // LogComponentEnable ("Packet", LOG_ALL);
-	
-  NS_LOG_INFO ("Test started");
-
-  Packet::EnablePrinting ();
-  Packet::EnableChecking (); 
-  Packet packet (0);
-
-  CcnxInterestHeader interestHeader;
-	
-  Ptr<CcnxNameComponents> testname = Create<CcnxNameComponents> ();
-  (*testname) ("first") ("second");
-  interestHeader.SetName(testname);
-	
-  uint32_t minSuffixComponents = 20;
-  interestHeader.SetMinSuffixComponents(minSuffixComponents);
-	
-  uint32_t maxSuffixComponents = 40;
-  interestHeader.SetMaxSuffixComponents(maxSuffixComponents);
-	
-  Time lifetime = Seconds(661777) + MicroSeconds(1234);
-  interestHeader.SetInterestLifetime(lifetime);
-
-  bool child = true;
-  interestHeader.SetChildSelector(child);
-
-  Ptr<CcnxNameComponents> exclude = Create<CcnxNameComponents> ();
-  (*exclude) ("exclude1") ("exclude2");
-  interestHeader.SetExclude(exclude);
-
-  UniformVariable random(1, std::numeric_limits<uint32_t>::max ());
-  uint32_t randomNonce = static_cast<uint32_t> (random.GetValue());
-  interestHeader.SetNonce(randomNonce);
-    
-  interestHeader.SetNack(CcnxInterestHeader::NACK_CONGESTION);
-  NS_LOG_INFO ("Source: \n" << interestHeader);
-    
-  packet.AddHeader (interestHeader);
-  NS_LOG_INFO ("Deserialized packet: " << packet);
-
-  NS_LOG_INFO ("Removing and deserializing individual headers");
-	
-  CcnxInterestHeader target;
-  packet.RemoveHeader (target);
-
-  // NS_LOG_INFO ("Target: \n" << target);
-
-  return 0;
-}
diff --git a/test/interest-header-serialization-test.cc b/test/interest-header-serialization-test.cc
index 62d83a4..5c73bfc 100644
--- a/test/interest-header-serialization-test.cc
+++ b/test/interest-header-serialization-test.cc
@@ -30,6 +30,7 @@
 #include "ns3/nstime.h"
 #include "ns3/buffer.h"
 #include "ns3/log.h"
+#include "ns3/packet.h"
 
 #include <iostream>
 #include <fstream>
