diff --git a/daemon/table/measurements.hpp b/daemon/table/measurements.hpp
index 7478c58..71d8db5 100644
--- a/daemon/table/measurements.hpp
+++ b/daemon/table/measurements.hpp
@@ -49,54 +49,56 @@
   explicit
   Measurements(NameTree& nametree);
 
-  ~Measurements();
-
-  /// find or insert a Measurements entry for name
+  /** \brief find or insert a Measurements entry for name
+   */
   shared_ptr<measurements::Entry>
   get(const Name& name);
 
-  /// find or insert a Measurements entry for fibEntry->getPrefix()
+  /** \brief find or insert a Measurements entry for fibEntry->getPrefix()
+   */
   shared_ptr<measurements::Entry>
   get(const fib::Entry& fibEntry);
 
-  /// find or insert a Measurements entry for pitEntry->getName()
+  /** \brief find or insert a Measurements entry for pitEntry->getName()
+   */
   shared_ptr<measurements::Entry>
   get(const pit::Entry& pitEntry);
 
-  /** find or insert a Measurements entry for child's parent
-   *
-   *  If child is the root entry, returns null.
+  /** \brief find or insert a Measurements entry for child's parent
+   *  \retval nullptr if child is the root entry
    */
   shared_ptr<measurements::Entry>
-  getParent(shared_ptr<measurements::Entry> child);
+  getParent(const measurements::Entry& child);
 
-  /// perform a longest prefix match
+  /** \brief perform a longest prefix match
+   */
   shared_ptr<measurements::Entry>
   findLongestPrefixMatch(const Name& name) const;
 
-  /// perform an exact match
+  /** \brief perform an exact match
+   */
   shared_ptr<measurements::Entry>
   findExactMatch(const Name& name) const;
 
   static time::nanoseconds
   getInitialLifetime();
 
-  /** extend lifetime of an entry
+  /** \brief extend lifetime of an entry
    *
    *  The entry will be kept until at least now()+lifetime.
    */
   void
-  extendLifetime(shared_ptr<measurements::Entry> entry, const time::nanoseconds& lifetime);
+  extendLifetime(measurements::Entry& entry, const time::nanoseconds& lifetime);
 
   size_t
   size() const;
 
 private:
   void
-  cleanup(shared_ptr<measurements::Entry> entry);
+  cleanup(measurements::Entry& entry);
 
   shared_ptr<measurements::Entry>
-  get(shared_ptr<name_tree::Entry> nameTreeEntry);
+  get(name_tree::Entry& nte);
 
 private:
   NameTree& m_nameTree;
