diff --git a/helper/ccnx-global-routing-helper.cc b/helper/ccnx-global-routing-helper.cc
index b214d16..7adbc84 100644
--- a/helper/ccnx-global-routing-helper.cc
+++ b/helper/ccnx-global-routing-helper.cc
@@ -27,6 +27,7 @@
 #include "ns3/ccnx-fib.h"
 
 #include "ns3/node.h"
+#include "ns3/node-container.h"
 #include "ns3/net-device.h"
 #include "ns3/channel.h"
 #include "ns3/log.h"
@@ -159,6 +160,24 @@
 }
 
 void
+CcnxGlobalRoutingHelper::Install (const NodeContainer &nodes)
+{
+  for (NodeContainer::Iterator node = nodes.Begin ();
+       node != nodes.End ();
+       node ++)
+    {
+      Install (*node);
+    }
+}
+
+void
+CcnxGlobalRoutingHelper::InstallAll ()
+{
+  Install (NodeContainer::GetGlobal ());
+}
+
+
+void
 CcnxGlobalRoutingHelper::AddOrigin (const std::string &prefix, Ptr<Node> node)
 {
   Ptr<CcnxGlobalRouter> gr = node->GetObject<CcnxGlobalRouter> ();
diff --git a/helper/ccnx-global-routing-helper.h b/helper/ccnx-global-routing-helper.h
index 0012d25..92c10c6 100644
--- a/helper/ccnx-global-routing-helper.h
+++ b/helper/ccnx-global-routing-helper.h
@@ -26,25 +26,68 @@
 namespace ns3 {
 
 class Node;
+class NodeContainer;
 class Channel;
 
+/**
+ * @ingroup ccnx
+ * @brief Helper for CcnxGlobalRouter interface
+ */
 class CcnxGlobalRoutingHelper
 {
 public:
+  /**
+   * @brief Install CcnxGlobalRouter interface on a node
+   *
+   * Note that CcnxGlobalRouter will also be installed on all connected nodes and channels
+   *
+   * @param node Node to install CcnxGlobalRouter interface
+   */
   void
   Install (Ptr<Node> node);
-  
-  void
-  Install (Ptr<Channel> channel);
 
+  
+  /**
+   * @brief Install CcnxGlobalRouter interface on nodes
+   *
+   * Note that CcnxGlobalRouter will also be installed on all connected nodes and channels
+   *
+   * @param nodes NodeContainer to install CcnxGlobalRouter interface
+   */
+  void
+  Install (const NodeContainer &nodes);
+
+  /**
+   * @brief Install CcnxGlobalRouter interface on all nodes
+   */
+  void
+  InstallAll ();
+
+  /**
+   * @brief Add `prefix' as origin on `node'
+   * @param prefix Prefix that is originated by node, e.g., node is a producer for this prefix
+   * @param node   Pointer to a node
+   */
   void
   AddOrigin (const std::string &prefix, Ptr<Node> node);
 
+  /**
+   * @brief Add `prefix' as origin on node `nodeName'
+   * @param prefix     Prefix that is originated by node, e.g., node is a producer for this prefix
+   * @param nodeName   Name of the node that is associated with Ptr<Node> using ns3::Names
+   */
   void
   AddOrigin (const std::string &prefix, const std::string &nodeName);
 
+  /**
+   * @brief Calculate for every node shortest path trees and install routes to all prefix origins
+   */
   void
   CalculateRoutes ();
+
+private:
+  void
+  Install (Ptr<Channel> channel);
 };
 
 }
diff --git a/helper/tracers/ccnx-path-weight-tracer.h b/helper/tracers/ccnx-path-weight-tracer.h
index f4bd187..303197d 100644
--- a/helper/tracers/ccnx-path-weight-tracer.h
+++ b/helper/tracers/ccnx-path-weight-tracer.h
@@ -23,7 +23,7 @@
 
 #include "ns3/ptr.h"
 #include "ns3/simple-ref-count.h"
-#include "ns3/ccnx-path-stretch-tag.h"
+#include "ns3/weights-path-stretch-tag.h"
 #include <list>
 
 namespace ns3 {
