diff --git a/daemon/table/pit-entry.hpp b/daemon/table/pit-entry.hpp
index c419f78..521671d 100644
--- a/daemon/table/pit-entry.hpp
+++ b/daemon/table/pit-entry.hpp
@@ -39,13 +39,11 @@
 
 namespace pit {
 
-/** \class InRecordCollection
- *  \brief represents an unordered collection of InRecords
+/** \brief represents an unordered collection of InRecords
  */
 typedef std::list< InRecord>  InRecordCollection;
 
-/** \class OutRecordCollection
- *  \brief represents an unordered collection of OutRecords
+/** \brief represents an unordered collection of OutRecords
  */
 typedef std::list<OutRecord> OutRecordCollection;
 
@@ -65,20 +63,6 @@
   const Name&
   getName() const;
 
-  const InRecordCollection&
-  getInRecords() const;
-
-  const OutRecordCollection&
-  getOutRecords() const;
-
-  /** \brief determines whether any InRecord is a local Face
-   *
-   *  \return true if any InRecord is a local Face,
-   *          false if all InRecords are non-local Faces
-   */
-  bool
-  hasLocalInRecord() const;
-
   /** \brief decides whether Interest can be forwarded to face
    *
    *  \return true if OutRecord of this face does not exist or has expired,
@@ -107,6 +91,18 @@
   bool
   addNonce(uint32_t nonce);
 
+public: // InRecord
+  const InRecordCollection&
+  getInRecords() const;
+
+  /** \brief determines whether any InRecord is a local Face
+   *
+   *  \return true if any InRecord is a local Face,
+   *          false if all InRecords are non-local Faces
+   */
+  bool
+  hasLocalInRecord() const;
+
   /** \brief inserts a InRecord for face, and updates it with interest
    *
    *  If InRecord for face exists, the existing one is updated.
@@ -116,10 +112,20 @@
   InRecordCollection::iterator
   insertOrUpdateInRecord(shared_ptr<Face> face, const Interest& interest);
 
+  /** \brief get the InRecord for face
+   *  \return an iterator to the InRecord, or .end if it does not exist
+   */
+  InRecordCollection::const_iterator
+  getInRecord(shared_ptr<Face> face) const;
+
   /// deletes all InRecords
   void
   deleteInRecords();
 
+public: // OutRecord
+  const OutRecordCollection&
+  getOutRecords() const;
+
   /** \brief inserts a OutRecord for face, and updates it with interest
    *
    *  If OutRecord for face exists, the existing one is updated.
@@ -128,6 +134,12 @@
   OutRecordCollection::iterator
   insertOrUpdateOutRecord(shared_ptr<Face> face, const Interest& interest);
 
+  /** \brief get the OutRecord for face
+   *  \return an iterator to the OutRecord, or .end if it does not exist
+   */
+  OutRecordCollection::const_iterator
+  getOutRecord(shared_ptr<Face> face) const;
+
   /// deletes one OutRecord for face if exists
   void
   deleteOutRecord(shared_ptr<Face> face);
