Added NameComponent.
diff --git a/ndn-cpp/Name.cpp b/ndn-cpp/Name.cpp
index c777ebe..3b98fa7 100644
--- a/ndn-cpp/Name.cpp
+++ b/ndn-cpp/Name.cpp
@@ -5,15 +5,20 @@
  */
 
 #include <sstream>
-#include "c/Name.h"
 #include "Name.hpp"
 
 using namespace std;
 
 namespace ndn {
 
-Name::Name() 
+void Name::get(struct ndn_Name &nameStruct) 
 {
+  if (nameStruct.maxComponents < components_.size())
+    throw runtime_error("nameStruct.maxComponents must be >= this name getNComponents()");
+  
+  nameStruct.nComponents = components_.size();
+  for (unsigned int i = 0; i < nameStruct.nComponents; ++i)
+    components_[i].get(nameStruct.components[i]);
 }
   
 void Name::set(struct ndn_Name &nameStruct) 
@@ -23,26 +28,14 @@
     addComponent(nameStruct.components[i].value, nameStruct.components[i].valueLength);  
 }
 
-void Name::get(struct ndn_Name &nameStruct) 
-{
-  if (nameStruct.maxComponents < components_.size())
-    throw runtime_error("nameStruct.maxComponents must be >= this name getNComponents()");
-  
-  nameStruct.nComponents = components_.size();
-  for (unsigned int i = 0; i < nameStruct.nComponents; ++i) {
-    nameStruct.components[i].value = &components_[i][0];
-    nameStruct.components[i].valueLength = components_[i].size();
-  }  
-}
-
 std::string Name::to_uri()
 {
   // TODO: implement fully.
   ostringstream output;
   for (unsigned int i = 0; i < components_.size(); ++i) {
     output << "/";
-    for (unsigned int j = 0; j < components_[i].size(); ++j)
-      output << components_[i][j];
+    for (unsigned int j = 0; j < components_[i].getValue().size(); ++j)
+      output << components_[i].getValue()[j];
   }
   
   return output.str();