diff --git a/daemon/face/local-face.hpp b/daemon/face/local-face.hpp
index e2bf479..f13cf9b 100644
--- a/daemon/face/local-face.hpp
+++ b/daemon/face/local-face.hpp
@@ -61,6 +61,7 @@
    *
    *  \param feature The feature. Cannot be LOCAL_CONTROL_FEATURE_ANY
    *                                     or LOCAL_CONTROL_FEATURE_MAX
+   *  \param enabled true/false enable/disable the feature
    */
   void
   setLocalControlHeaderFeature(LocalControlFeature feature, bool enabled = true);
diff --git a/daemon/face/multicast-udp-transport.hpp b/daemon/face/multicast-udp-transport.hpp
index 7966b5b..14371f7 100644
--- a/daemon/face/multicast-udp-transport.hpp
+++ b/daemon/face/multicast-udp-transport.hpp
@@ -39,8 +39,10 @@
 public:
   /**
    * \brief Creates a UDP-based transport for multicast communication
+   * \param localEndpoint local endpoint
+   * \param multicastGroup multicast group
    * \param recvSocket socket used to receive packets
-   * \param sendSocket socket used to send to the multicast address
+   * \param sendSocket socket used to send to the multicast group
    */
   MulticastUdpTransport(const protocol::endpoint& localEndpoint,
                         const protocol::endpoint& multicastGroup,
diff --git a/daemon/face/udp-channel.hpp b/daemon/face/udp-channel.hpp
index 0825ad4..aea854c 100644
--- a/daemon/face/udp-channel.hpp
+++ b/daemon/face/udp-channel.hpp
@@ -58,7 +58,7 @@
    * \brief Enable listening on the local endpoint, accept connections,
    *        and create faces when remote host makes a connection
    * \param onFaceCreated  Callback to notify successful creation of the face
-   * \param onAcceptFailed Callback to notify when channel fails
+   * \param onReceiveFailed Callback to notify when channel fails
    *
    * Once a face is created, if it doesn't send/receive anything for
    * a period of time equal to timeout, it will be destroyed
diff --git a/daemon/face/udp-factory.hpp b/daemon/face/udp-factory.hpp
index 1c8f90f..134c5ee 100644
--- a/daemon/face/udp-factory.hpp
+++ b/daemon/face/udp-factory.hpp
@@ -111,6 +111,8 @@
    * If an unicast face is already active on the same local NIC and port, the
    * creation fails and an exception is thrown
    *
+   * \param localEndpoint local endpoint
+   * \param multicastEndpoint multicast endpoint
    * \param networkInterfaceName name of the network interface on which the face will be bound
    *        (Used only on multihomed linux machine with more than one MulticastUdpFace for
    *        the same multicast group. If specified, will requires CAP_NET_RAW capability)
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
diff --git a/daemon/table/name-tree.cpp b/daemon/table/name-tree.cpp
index 3ef1893..0f730d1 100644
--- a/daemon/table/name-tree.cpp
+++ b/daemon/table/name-tree.cpp
@@ -68,7 +68,9 @@
   }
 };
 
+/// @cond NoDocumentation
 typedef boost::mpl::if_c<sizeof(size_t) >= 8, Hash64, Hash32>::type CityHash;
+/// @endcond
 
 // Interface of different hash functions
 size_t
diff --git a/daemon/table/strategy-choice.hpp b/daemon/table/strategy-choice.hpp
index fdff3ab..68ed395 100644
--- a/daemon/table/strategy-choice.hpp
+++ b/daemon/table/strategy-choice.hpp
@@ -49,6 +49,7 @@
 
 public: // available Strategy types
   /** \brief determines if a strategy is installed
+   *  \param strategyName name of the strategy
    *  \param isExact true to require exact match, false to permit unversioned strategyName
    *  \return true if strategy is installed
    */
@@ -64,6 +65,7 @@
 
 public: // Strategy Choice table
   /** \brief set strategy of prefix to be strategyName
+   *  \param prefix the name prefix for which \p strategyName should be used
    *  \param strategyName the strategy to be used
    *  \return true on success
    *
