Should use references to shared_ptr
diff --git a/ndn-cpp/Closure.hpp b/ndn-cpp/Closure.hpp
index 99dafdb..9efbd03 100644
--- a/ndn-cpp/Closure.hpp
+++ b/ndn-cpp/Closure.hpp
@@ -39,7 +39,7 @@
 
 class UpcallInfo {
 public:
-  UpcallInfo(NDN *ndn, ptr_lib::shared_ptr<Interest> interest, int matchedComps, ptr_lib::shared_ptr<ContentObject> contentObject) 
+  UpcallInfo(NDN *ndn, ptr_lib::shared_ptr<Interest> &interest, int matchedComps, ptr_lib::shared_ptr<ContentObject> &contentObject) 
   {
     ndn_ = ndn;
     interest_ = interest;
@@ -48,9 +48,9 @@
   
   NDN *getNDN() { return ndn_; }
   
-  ptr_lib::shared_ptr<Interest> getInterest() { return interest_; }
+  ptr_lib::shared_ptr<Interest> &getInterest() { return interest_; }
   
-  ptr_lib::shared_ptr<ContentObject> getContentObject() { return contentObject_; }
+  ptr_lib::shared_ptr<ContentObject> &getContentObject() { return contentObject_; }
   
 private:
   NDN *ndn_;
diff --git a/ndn-cpp/NDN.cpp b/ndn-cpp/NDN.cpp
index cd1dbe6..cafa4c6 100644
--- a/ndn-cpp/NDN.cpp
+++ b/ndn-cpp/NDN.cpp
@@ -20,7 +20,8 @@
     ptr_lib::shared_ptr<ContentObject> contentObject(new ContentObject());
     contentObject->decode(element, elementLength);
     
-    UpcallInfo upcallInfo(this, ptr_lib::shared_ptr<Interest>(), 0, contentObject);
+    ptr_lib::shared_ptr<Interest> dummyInterest;
+    UpcallInfo upcallInfo(this, dummyInterest, 0, contentObject);
     closure_->upcall(UPCALL_CONTENT, upcallInfo);
   }
 }