diff --git a/helper/ccnx-interest-sender-helper.h b/helper/ccnx-interest-sender-helper.h
new file mode 100644
index 0000000..58af8ff
--- /dev/null
+++ b/helper/ccnx-interest-sender-helper.h
@@ -0,0 +1,103 @@
+/* -*-  Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */
+/*
+ * Copyright (c) 2011 University of California, Los Angeles
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation;
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *
+ * Author: Ilya Moiseenko <iliamo@cs.ucla.edu>
+ */
+
+#ifndef CCNX_INTEREST_SENDER_HELPER_H
+#define CCNX_INTEREST_SENDER_HELPER_H
+
+#include <stdint.h>
+#include <string>
+#include "ns3/object-factory.h"
+#include "ns3/address.h"
+#include "ns3/attribute.h"
+#include "ns3/net-device.h"
+#include "ns3/node-container.h"
+#include "ns3/application-container.h"
+#include "ns3/name-components.h"
+#include "ns3/pointer.h"
+
+namespace ns3 
+{    
+/**
+ * \brief A helper to make it easier to instantiate an ns3::CcnxInterestSenderApplication
+ * on a set of nodes.
+ */
+
+class CcnxInterestSenderHelper
+{
+
+public:
+    /**
+     * Create an CcnxInterestSenderHelper to make it easier to work with CcnxInterestSenderApps
+     *
+     */
+    CcnxInterestSenderHelper (Ptr<CcnxNameComponents> interestName);
+        
+    /**
+     * Helper function used to set the underlying application attributes.
+     *
+     * \param name the name of the application attribute to set
+     * \param value the value of the application attribute to set
+     */
+    void SetAttribute (std::string name, const AttributeValue &value);
+        
+    /**
+     * Install an ns3::CcnxInterestSender on each node of the input container
+     * configured with all the attributes set with SetAttribute.
+     *
+     * \param c NodeContainer of the set of nodes on which an CcnxInterestSender 
+     * will be installed.
+     * \returns Container of Ptr to the applications installed.
+     */
+    ApplicationContainer Install (NodeContainer c) const;
+        
+    /**
+     * Install an ns3::CcnxInterestSender on the node configured with all the 
+     * attributes set with SetAttribute.
+     *
+     * \param node The node on which an CcnxInterestSender will be installed.
+     * \returns Container of Ptr to the applications installed.
+     */
+    ApplicationContainer Install (Ptr<Node> node) const;
+        
+    /**
+     * Install an ns3::CcnxInterestSender on the node configured with all the 
+     * attributes set with SetAttribute.
+     *
+     * \param nodeName The node on which an CcnxInterestSender will be installed.
+     * \returns Container of Ptr to the applications installed.
+     */
+    ApplicationContainer Install (std::string nodeName) const;
+        
+private:
+    /**
+     * \internal
+     * Install an ns3::CcnxInterestSender on the node configured with all the 
+     * attributes set with SetAttribute.
+     *
+     * \param node The node on which an CcnxInterestSender will be installed.
+     * \returns Ptr to the application installed.
+    */
+    Ptr<Application> InstallPriv (Ptr<Node> node) const;
+    ObjectFactory m_factory;
+};    
+}
+
+#endif
+
