diff --git a/model/pit/ndn-pit-entry-outgoing-face.cc b/model/pit/ndn-pit-entry-outgoing-face.cc
index 265529c..1ddf1d6 100644
--- a/model/pit/ndn-pit-entry-outgoing-face.cc
+++ b/model/pit/ndn-pit-entry-outgoing-face.cc
@@ -34,6 +34,26 @@
 {
 }
 
+OutgoingFace::OutgoingFace ()
+  : m_face (0)
+  , m_sendTime (0)
+  , m_retxCount (0)
+  , m_waitingInVain (false)
+{
+}
+
+OutgoingFace &
+OutgoingFace::operator = (const OutgoingFace &other)
+{
+  m_face = other.m_face;
+  m_sendTime = other.m_sendTime;
+  m_retxCount = other.m_retxCount;
+  m_waitingInVain = other.m_waitingInVain;
+
+  return *this;
+}
+
+
 void
 OutgoingFace::UpdateOnRetransmit ()
 {
diff --git a/model/pit/ndn-pit-entry-outgoing-face.h b/model/pit/ndn-pit-entry-outgoing-face.h
index 1a4d8b5..63c6378 100644
--- a/model/pit/ndn-pit-entry-outgoing-face.h
+++ b/model/pit/ndn-pit-entry-outgoing-face.h
@@ -51,6 +51,17 @@
   OutgoingFace (Ptr<Face> face);
 
   /**
+   * @brief Default constructor, necessary for Python bindings, but should not be used anywhere else.
+   */
+  OutgoingFace ();
+
+  /**
+   * @brie Copy operator
+   */
+  OutgoingFace &
+  operator = (const OutgoingFace &other);
+  
+  /**
    * @brief Update outgoing entry upon retransmission
    */
   void
diff --git a/model/pit/ndn-pit-entry.cc b/model/pit/ndn-pit-entry.cc
index b578c0e..765693f 100644
--- a/model/pit/ndn-pit-entry.cc
+++ b/model/pit/ndn-pit-entry.cc
@@ -90,8 +90,9 @@
 
   if (!ret.second)
     { // outgoing face already exists
-      m_outgoing.modify (ret.first,
-                         ll::bind (&OutgoingFace::UpdateOnRetransmit, ll::_1));
+      const_cast<OutgoingFace&>(*ret.first).UpdateOnRetransmit ();
+      // m_outgoing.modify (ret.first,
+      //                    ll::bind (&OutgoingFace::UpdateOnRetransmit, ll::_1));
     }
 
   return ret.first;
@@ -129,9 +130,10 @@
   out_iterator item = m_outgoing.find (face);
   if (item == m_outgoing.end ())
     return;
-  
-  m_outgoing.modify (item,
-                     (&ll::_1)->*&OutgoingFace::m_waitingInVain = true);
+
+  const_cast<OutgoingFace&>(*item).m_waitingInVain = true;
+  // m_outgoing.modify (item,
+  //                    (&ll::_1)->*&OutgoingFace::m_waitingInVain = true);
 }
 
 
diff --git a/model/pit/ndn-pit-entry.h b/model/pit/ndn-pit-entry.h
index 8dc5d24..55aa7de 100644
--- a/model/pit/ndn-pit-entry.h
+++ b/model/pit/ndn-pit-entry.h
@@ -57,25 +57,26 @@
  * Indexes:
  * - by face (may be it will be possible to replace with just the std::map)
  */
-struct OutgoingFaceContainer
-{
-  /// @cond include_hidden
-  typedef boost::multi_index::multi_index_container<
-    OutgoingFace,
-    boost::multi_index::indexed_by<
-      // For fast access to elements using NdnFace
-      boost::multi_index::ordered_unique<
-        boost::multi_index::tag<i_face>,
-        boost::multi_index::member<OutgoingFace, Ptr<Face>, &OutgoingFace::m_face>
-      >,
-      boost::multi_index::ordered_non_unique<
-        boost::multi_index::tag<i_retx>,
-        boost::multi_index::member<OutgoingFace, uint32_t, &OutgoingFace::m_retxCount>
-      >    
-    >
-   > type;
-  /// @endcond
-};
+// struct OutgoingFaceContainer
+// {
+//   /// @cond include_hidden
+//   typedef boost::multi_index::multi_index_container<
+//     OutgoingFace,
+//     boost::multi_index::indexed_by<
+//       // For fast access to elements using NdnFace
+//       boost::multi_index::ordered_unique<
+//         boost::multi_index::tag<i_face>,
+//         boost::multi_index::member<OutgoingFace, Ptr<Face>, &OutgoingFace::m_face>
+//       >
+//       // ,
+//       // boost::multi_index::ordered_non_unique<
+//       //   boost::multi_index::tag<i_retx>,
+//       //   boost::multi_index::member<OutgoingFace, uint32_t, &OutgoingFace::m_retxCount>
+//       // >    
+//     >
+//    > type;
+//   /// @endcond
+// };
 
 
 /**
@@ -90,7 +91,8 @@
   typedef std::set< IncomingFace > in_container; ///< @brief incoming faces container type
   typedef in_container::iterator in_iterator;                ///< @brief iterator to incoming faces
 
-  typedef OutgoingFaceContainer::type out_container; ///< @brief outgoing faces container type
+  // typedef OutgoingFaceContainer::type out_container; ///< @brief outgoing faces container type
+  typedef std::set< OutgoingFace > out_container; ///< @brief outgoing faces container type
   typedef out_container::iterator out_iterator;              ///< @brief iterator to outgoing faces
 
   typedef std::set< uint32_t > nonce_container;  ///< @brief nonce container type
