diff --git a/daemon/fw/best-route-strategy2.cpp b/daemon/fw/best-route-strategy2.cpp
index e0e31dc..f582358 100644
--- a/daemon/fw/best-route-strategy2.cpp
+++ b/daemon/fw/best-route-strategy2.cpp
@@ -40,6 +40,8 @@
 }
 
 /** \brief determines whether a NextHop is eligible
+ *  \param pitEntry PIT entry
+ *  \param nexthop next hop
  *  \param currentDownstream incoming FaceId of current Interest
  *  \param wantUnused if true, NextHop must not have unexpired OutRecord
  *  \param now time::steady_clock::now(), ignored if !wantUnused
diff --git a/daemon/fw/forwarder.hpp b/daemon/fw/forwarder.hpp
index ebfaa05..1997427 100644
--- a/daemon/fw/forwarder.hpp
+++ b/daemon/fw/forwarder.hpp
@@ -79,18 +79,21 @@
 
 public: // forwarding entrypoints and tables
   /** \brief start incoming Interest processing
+   *  \param face face on which Interest is received
    *  \param interest the incoming Interest, must be created with make_shared
    */
   void
   startProcessInterest(Face& face, const Interest& interest);
 
   /** \brief start incoming Data processing
+   *  \param face face on which Data is received
    *  \param data the incoming Data, must be created with make_shared
    */
   void
   startProcessData(Face& face, const Data& data);
 
   /** \brief start incoming Nack processing
+   *  \param face face on which Nack is received
    *  \param nack the incoming Nack, must be created with make_shared
    */
   void
diff --git a/daemon/fw/strategy-info.hpp b/daemon/fw/strategy-info.hpp
index b701fc5..fecd8e1 100644
--- a/daemon/fw/strategy-info.hpp
+++ b/daemon/fw/strategy-info.hpp
@@ -36,15 +36,16 @@
 class StrategyInfo
 {
 public:
-  /** \fn static constexpr int getTypeId()
-   *  \return an integer that uniquely identifies this StrategyInfo type
+#ifdef DOXYGEN
+  /** \return an integer that uniquely identifies this StrategyInfo type
    *  \sa http://redmine.named-data.net/projects/nfd/wiki/StrategyInfoType
    */
-  // static constexpr int
-  // getTypeId()
-  // {
-  //   return <type-identifier>;
-  // }
+  static constexpr int
+  getTypeId()
+  {
+    return <type-identifier>;
+  }
+#endif
 
   virtual
   ~StrategyInfo();
diff --git a/daemon/fw/strategy.hpp b/daemon/fw/strategy.hpp
index ebbb361..8ce9850 100644
--- a/daemon/fw/strategy.hpp
+++ b/daemon/fw/strategy.hpp
@@ -132,6 +132,8 @@
 
 protected: // actions
   /** \brief send Interest to outFace
+   *  \param pitEntry PIT entry
+   *  \param outFace face through which to send out the Interest
    *  \param wantNewNonce if true, a new Nonce will be generated,
    *                      rather than reusing a Nonce from one of the PIT in-records
    */
@@ -140,6 +142,7 @@
                bool wantNewNonce = false);
 
   /** \brief decide that a pending Interest cannot be forwarded
+   *  \param pitEntry PIT entry
    *
    *  This shall not be called if the pending Interest has been
    *  forwarded earlier, and does not need to be resent now.
@@ -148,6 +151,9 @@
   rejectPendingInterest(shared_ptr<pit::Entry> pitEntry);
 
   /** \brief send Nack to outFace
+   *  \param pitEntry PIT entry
+   *  \param outFace face through which to send out the Nack
+   *  \param header Nack header
    *
    *  The outFace must have a PIT in-record, otherwise this method has no effect.
    */
@@ -157,6 +163,9 @@
 
   /** \brief send Nack to every face that has an in-record,
    *         except those in \p exceptFaces
+   *  \param pitEntry PIT entry
+   *  \param header NACK header
+   *  \param exceptFaces list of faces that should be excluded from sending Nacks
    *  \note This is not an action, but a helper that invokes the sendNack action.
    */
   void
