Added initial expressInterest
diff --git a/ndn-cpp/NDN.hpp b/ndn-cpp/NDN.hpp
index 9c8c691..09dfad2 100644
--- a/ndn-cpp/NDN.hpp
+++ b/ndn-cpp/NDN.hpp
@@ -7,21 +7,38 @@
 #define	NDN_NDN_HPP
 
 #include "Closure.hpp"
+#include "Interest.hpp"
+#include "transport/Transport.hpp"
 #include "encoding/BinaryXMLElementReader.hpp"
 
 namespace ndn {
 
 class NDN : public ElementListener {
 public:
-  NDN(Closure *closure)
+  NDN(const ptr_lib::shared_ptr<Transport> &transport, const ptr_lib::shared_ptr<Closure> &tempClosure)
   {
-    closure_ = closure;
+    transport_ = transport;
+    tempClosure_ = tempClosure;
   }
   
+  /**
+   * Encode name as an Interest. If interestTemplate is not 0, use its interest selectors.
+   * Send the interest through the transport, read the entire response and call
+   * closure->upcall(UPCALL_CONTENT (or UPCALL_CONTENT_UNVERIFIED),
+   *                 UpcallInfo(this, interest, 0, contentObject)).
+   * @param name reference to a Name for the interest.  This does not keep a pointer to the Name object.
+   * @param closure a shared_ptr for the Closure.  This uses shared_ptr to take another reference to the object.
+   * @param interestTemplate if not 0, copy interest selectors from the template.   This does not keep a pointer to the Interest object.
+   */
+  void expressInterest(const Name &name, const ptr_lib::shared_ptr<Closure> &closure, const Interest *interestTemplate);
+  
+  Transport &tempGetTransport() { return *transport_; }
+  
   virtual void onReceivedElement(unsigned char *element, unsigned int elementLength);
   
 private:
-  Closure *closure_;
+  ptr_lib::shared_ptr<Transport> transport_;
+  ptr_lib::shared_ptr<Closure> tempClosure_;
 };
 
 }