diff --git a/model/ccnx-flooding-strategy.cc b/model/ccnx-flooding-strategy.cc
index 5bb4647..83ddd7e 100644
--- a/model/ccnx-flooding-strategy.cc
+++ b/model/ccnx-flooding-strategy.cc
@@ -45,7 +45,9 @@
     
     
 bool
-CcnxFloodingStrategy::PropagateInterest  (const Ptr<CcnxFace> &incomingFace,
+CcnxFloodingStrategy::PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry, 
+                                          CcnxFibEntryContainer::type::iterator fibEntry,
+                                          const Ptr<CcnxFace> &incomingFace,
                                           Ptr<CcnxInterestHeader> &header,
                                           const Ptr<const Packet> &packet,
                                           SendCallback ucb)
@@ -53,19 +55,33 @@
     //CcnxFibEntryContainer::type::iterator fibEntryArray = GetFib()->LongestPrefixMatch(*header);
     NS_LOG_FUNCTION(this);
     
-    CcnxFibEntryContainer::type::iterator fibEntryArray = GetCcnx()->GetObject<CcnxFib>()->LongestPrefixMatch(*header);
-    NS_LOG_INFO(*fibEntryArray);
+    //CcnxFibEntryContainer::type::iterator fibEntryArray = GetCcnx()->GetObject<CcnxFib>()->LongestPrefixMatch(*header);
+    NS_LOG_INFO(*fibEntry);
     
     int count = 0;
-    for(CcnxFibFaceMetricContainer::type::iterator face = fibEntryArray->m_faces.begin ();
-        face != fibEntryArray->m_faces.end ();
+    for(CcnxFibFaceMetricContainer::type::iterator face = fibEntry->m_faces.begin ();
+        face != fibEntry->m_faces.end ();
         face++)
     {
         if(face->m_face == incomingFace)
             continue;
+        NS_LOG_INFO ("JUST before try add outgoing");
+        //Add new outgoing interest to pit entry
+		// If PIT entry cannot be created (limit reached or interest already sent), nothing will be forwarded
+		//if( _pit.add(VALUE(info.pe), PitOutgoingInterest( *iface, getSimTime(_node), pkt->nonce )) )
+		//{
+        //GetPit()->Add(*header,fibEntry,face->m_face);
+        //GetPit()->modify (GetPit()->end (), CcnxPitEntry::AddOutgoing(face->m_face));
+        bool tryResult = GetPit ()->TryAddOutgoing (pitEntry, face->m_face);
+        if ( tryResult == false )
+        {NS_LOG_INFO("false");
+            continue;
+        }
+        else
+            NS_LOG_INFO("true");
         
         NS_LOG_INFO("count="<<count);
-        ucb (face->m_face,  header, packet->Copy());
+        ucb (face->m_face, header, packet->Copy());
         count++;
     }
     
diff --git a/model/ccnx-flooding-strategy.h b/model/ccnx-flooding-strategy.h
index e79a604..5eb7a5d 100644
--- a/model/ccnx-flooding-strategy.h
+++ b/model/ccnx-flooding-strategy.h
@@ -49,7 +49,9 @@
         
     CcnxFloodingStrategy ();
           
-    bool PropagateInterest  (const Ptr<CcnxFace> &incomingFace,
+    bool PropagateInterest  (CcnxPitEntryContainer::type::iterator pitEntry,
+                             CcnxFibEntryContainer::type::iterator fibEntry,
+                             const Ptr<CcnxFace> &incomingFace,
                              Ptr<CcnxInterestHeader> &header,
                              const Ptr<const Packet> &packet,
                              SendCallback ucb);
