diff --git a/utils/ndn-pit-queue.cc b/utils/ndn-pit-queue.cc
index 3486d6d..4d6c064 100644
--- a/utils/ndn-pit-queue.cc
+++ b/utils/ndn-pit-queue.cc
@@ -53,11 +53,19 @@
 PitQueue::Enqueue (Ptr<Face> inFace,
 		   Ptr<pit::Entry> pitEntry)
 {
-  Queue &queue = m_queues [inFace]; // either lookup or create
-  if (queue.size () >= m_maxQueueSize)
+  PerInFaceQueue::iterator queue = m_queues.find (inFace);
+  if (queue == m_queues.end ())
+    {
+      pair<PerInFaceQueue::iterator, bool> itemPair = m_queues.insert (make_pair (inFace, boost::make_shared<Queue> ()));
+      NS_ASSERT (itemPair.second == true);
+
+      queue = itemPair.first;
+    }
+  
+  if (queue->second->size () >= m_maxQueueSize)
       return false;
 
-  queue.push_back (pitEntry);
+  queue->second->push_back (pitEntry);
   return true;
 }
 
@@ -66,7 +74,7 @@
 {
   PerInFaceQueue::iterator queue = m_lastQueue;
 
-  while (queue != m_queues.end () && queue->second.size () == 0) // advance iterator
+  while (queue != m_queues.end () && queue->second->size () == 0) // advance iterator
     {
       queue ++;
     }
@@ -74,7 +82,7 @@
   if (queue == m_queues.end ())
     queue = m_queues.begin (); // circle to the beginning
 
-  while (queue != m_queues.end () && queue->second.size () == 0) // advance iterator
+  while (queue != m_queues.end () && queue->second->size () == 0) // advance iterator
     {
       queue ++;
     }
@@ -82,10 +90,10 @@
   if (queue == m_queues.end ()) // e.g., begin () == end ()
     return 0;
 
-  NS_ASSERT_MSG (queue->second.size () != 0, "Logic error");
+  NS_ASSERT_MSG (queue->second->size () != 0, "Logic error");
 
-  Ptr<pit::Entry> entry = *queue->second.begin ();
-  queue->second.pop_front ();
+  Ptr<pit::Entry> entry = *queue->second->begin ();
+  queue->second->pop_front ();
 
   m_lastQueue = queue;
   return entry;
diff --git a/utils/ndn-pit-queue.h b/utils/ndn-pit-queue.h
index de30713..34987db 100644
--- a/utils/ndn-pit-queue.h
+++ b/utils/ndn-pit-queue.h
@@ -25,6 +25,11 @@
 #include <list>
 
 #include "ns3/ptr.h"
+#include "ns3/ndn-fw-tag.h"
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/shared_ptr.hpp>
+#include <boost/make_shared.hpp>
 
 namespace ns3 {
 namespace ndn {
@@ -57,18 +62,31 @@
   void
   Remove (Ptr<pit::Entry> entry);
 
-  
-private:
+public:  
   typedef std::list< Ptr<pit::Entry> > Queue;
-  typedef std::map< Ptr<Face>, Queue > PerInFaceQueue;
+  typedef std::map< Ptr<Face>, boost::shared_ptr<Queue> > PerInFaceQueue;
 
-  uint32_t m_maxQueueSize;
-
-  PerInFaceQueue::iterator m_lastQueue; // last queue from which interest was taken
+private:
   
+  uint32_t m_maxQueueSize;
+  PerInFaceQueue::iterator m_lastQueue; // last queue from which interest was taken
   PerInFaceQueue m_queues;
 };
 
+namespace fw {
+
+class PitQueueTag :
+    public Tag
+{
+public:
+  virtual
+  ~PitQueueTag () { };
+
+  typedef boost::tuple< boost::shared_ptr<PitQueue::Queue>, PitQueue::Queue::iterator > Item;
+};
+
+} // namespace fw
+
 } // namespace ndn
 } // namespace ns3
 
