diff --git a/PyNDN/Data.py b/PyNDN/Data.py
index 48c54da..7e8dd56 100644
--- a/PyNDN/Data.py
+++ b/PyNDN/Data.py
@@ -35,13 +35,14 @@
                 self._data = data._data
             elif isinstance (data, ns.ndnSIM.ndn.Data):
                 self._data = data
-                self.signedInfo = SignedInfo ()
-                # timestamp
-                self.signedInfo.freshnessSeconds = self._data.GetFreshness ().ToDouble (ns.core.Time.S)
-                if self._data.GetKeyLocator ():
-                    self.signedInfo.keyLocator = Name (name = self._data.GetKeyLocator ())
             else:
                 raise TypeError ("Invalid type supplied for 'data' parameter [%s]" % type (data))
+
+            self.signedInfo = SignedInfo ()
+            # timestamp
+            self.signedInfo.freshnessSeconds = self._data.GetFreshness ().ToDouble (ns.core.Time.S)
+            if self._data.GetKeyLocator ():
+                self.signedInfo.keyLocator = Name (name = self._data.GetKeyLocator ())
         else:
             self._data = ns.ndnSIM.ndn.Data ()
 
diff --git a/PyNDN/Name.py b/PyNDN/Name.py
index b760213..628b843 100644
--- a/PyNDN/Name.py
+++ b/PyNDN/Name.py
@@ -36,12 +36,8 @@
             if value is not None:
                 if isinstance (value, Name):
                     self._name = ns.ndnSIM.ndn.Name (value._name)
-                elif isinstance (value, ns.ndnSIM.ndn.Name):
-                    self._name = ns.ndnSIM.ndn.Name (value)
-                elif isinstance (value, str):
-                    self._name = ns.ndnSIM.ndn.Name (value)
                 else:
-                    raise TypeError ("Not support tyupe [%s]" % type (value))
+                    self._name = ns.ndnSIM.ndn.Name (value)
             else:
                 self._name = ns.ndnSIM.ndn.Name ()
 
@@ -53,7 +49,10 @@
         return ns.ndnSIM.ndn.Wire.FromName (self._name)
 
     def append (self, value):
-        self._name.append (value)
+        if isinstance (value, Name):
+            self._name.append (value._name)
+        else:
+            self._name.append (value)
         return self
     
     def __getattr__ (self, name):
@@ -85,6 +84,9 @@
     def __str__ (self):
         return self._name.toUri ()
 
+    def __eq__ (self, other):
+        return self._name == other._name
+
     def isPrefixOf (self, other):
         return self[:] == other[:len(self)]
 
