diff --git a/include/ndn-cpp/data.hpp b/include/ndn-cpp/data.hpp
index 0b40c74..d9b8fc1 100644
--- a/include/ndn-cpp/data.hpp
+++ b/include/ndn-cpp/data.hpp
@@ -137,9 +137,22 @@
   Data(const Name& name);
   
   /**
+   * The copy constructor: Create a deep copy of the given data object, including a clone of the signature object.
+   * @param data The data object to copy.
+   */
+  Data(const Data& data);
+  
+  /**
    * The virtual destructor.
    */
-  virtual ~Data() {}
+  virtual ~Data();
+  
+  /**
+   * The assignment operator: Copy fields and make a clone of the signature.
+   * @param data The other object to copy from.
+   * @return A reference to this object.
+   */
+  Data& operator=(const Data& data);
   
   /**
    * Encode this Data for a particular wire format. Also, set the wireEncoding field to the encoded result.
diff --git a/ndn-cpp/data.cpp b/ndn-cpp/data.cpp
index 6b2f570..62cdf3b 100644
--- a/ndn-cpp/data.cpp
+++ b/ndn-cpp/data.cpp
@@ -11,6 +11,7 @@
 #include "c/data.h"
 
 using namespace std;
+using namespace ndn::ptr_lib;
 
 namespace ndn {
 
@@ -46,6 +47,32 @@
 {
 }
 
+Data::Data(const Data& data)
+: name_(data.name_), metaInfo_(data.metaInfo_), content_(data.content_), wireEncoding_(data.wireEncoding_)
+{
+  if (data.signature_)
+    signature_ = data.signature_->clone();
+}
+
+Data::~Data()
+{
+}
+
+Data& Data::operator=(const Data& data)
+{
+  if (data.signature_)
+    signature_ = data.signature_->clone();
+  else
+    signature_ = shared_ptr<Signature>();
+  
+  name_ = data.name_;
+  metaInfo_ = data.metaInfo_;
+  content_ = data.content_;
+  wireEncoding_ = data.wireEncoding_;
+
+  return *this;
+}
+
 void 
 Data::get(struct ndn_Data& dataStruct) const 
 {
diff --git a/tests/test-encode-decode-data.cpp b/tests/test-encode-decode-data.cpp
index 078e31c..a123cd8 100644
--- a/tests/test-encode-decode-data.cpp
+++ b/tests/test-encode-decode-data.cpp
@@ -18,8 +18,8 @@
 
 using namespace std;
 using namespace ndn;
-using namespace ptr_lib;
-using namespace func_lib;
+using namespace ndn::ptr_lib;
+using namespace ndn::func_lib;
 #if NDN_CPP_HAVE_STD_FUNCTION
 // In the std library, the placeholders are in a different namespace than boost.                                                           
 using namespace func_lib::placeholders;
diff --git a/tests/test-get-async.cpp b/tests/test-get-async.cpp
index 9cdf28a..d59d611 100644
--- a/tests/test-get-async.cpp
+++ b/tests/test-get-async.cpp
@@ -11,8 +11,8 @@
 
 using namespace std;
 using namespace ndn;
-using namespace ptr_lib;
-using namespace func_lib;
+using namespace ndn::ptr_lib;
+using namespace ndn::func_lib;
 #if NDN_CPP_HAVE_STD_FUNCTION
 // In the std library, the placeholders are in a different namespace than boost.
 using namespace func_lib::placeholders;
