Checkpoint
diff --git a/utils/ndn-pit-queue.h b/utils/ndn-pit-queue.h
index e986852..de30713 100644
--- a/utils/ndn-pit-queue.h
+++ b/utils/ndn-pit-queue.h
@@ -22,7 +22,7 @@
 #define NDN_PIT_QUEUE_H
 
 #include <map>
-#include <set>
+#include <list>
 
 #include "ns3/ptr.h"
 
@@ -35,6 +35,14 @@
 class PitQueue
 {
 public:
+  PitQueue ();
+  
+  void
+  SetMaxQueueSize (uint32_t size);
+
+  uint32_t
+  GetMaxQueueSize () const;
+
   bool
   Enqueue (Ptr<Face> inFace,
            Ptr<pit::Entry> pitEntry);
@@ -49,38 +57,16 @@
   void
   Remove (Ptr<pit::Entry> entry);
 
-private:
-  void
-  DecreasePerFaceCount (Ptr<Face> inFace);
-
-  void
-  UpdateLastVirtTime (Ptr<Face> inFace);
   
 private:
-  // all maps here consider incoming face (the whole Queue structure is per outgoing face)
+  typedef std::list< Ptr<pit::Entry> > Queue;
+  typedef std::map< Ptr<Face>, Queue > PerInFaceQueue;
+
+  uint32_t m_maxQueueSize;
+
+  PerInFaceQueue::iterator m_lastQueue; // last queue from which interest was taken
   
-  double m_lastProcessedVirtualTime;
-
-  typedef std::map< Ptr<Face>, uint32_t > PerInFaceMapOfNumberOfIncomingInterests;
-  PerInFaceMapOfNumberOfIncomingInterests m_numberEnqueuedInterests;
-
-  typedef std::map< Ptr<Face>, double > PerInFaceMapOfLastVirtualTimes;
-  PerInFaceMapOfLastVirtualTimes m_lastVirtualTime;
-
-  struct Entry
-  {
-    Entry (Ptr<Face> inFace, Ptr<pit::Entry> pitEntry, double virtualTime);
-
-    bool
-    operator < (const Entry &otherEntry) const;
-
-    Ptr<Face> m_inFace;
-    Ptr<pit::Entry> m_pitEntry;
-    double m_virtualTime;
-  };
-
-  typedef std::multiset< Entry > PendingInterestsQueue;
-  PendingInterestsQueue m_queue;
+  PerInFaceQueue m_queues;
 };
 
 } // namespace ndn