diff --git a/src/encryptor.cpp b/src/algo/encryptor.cpp
similarity index 92%
rename from src/encryptor.cpp
rename to src/algo/encryptor.cpp
index 06ee785..c3b8884 100644
--- a/src/encryptor.cpp
+++ b/src/algo/encryptor.cpp
@@ -48,10 +48,12 @@
   KeyLocator keyLocator(keyName);
 
   switch (algType) {
-    case tlv::AlgorithmAesCbc:
     case tlv::AlgorithmAesEcb: {
+      const Buffer& encryptedPayload = Aes::encrypt(key, keyLen, payload, payloadLen, params);
+      return EncryptedContent(algType, keyLocator, encryptedPayload.buf(), encryptedPayload.size(), iv.buf(), iv.size());
+    }
+    case tlv::AlgorithmAesCbc: {
       BOOST_ASSERT(iv.size() == static_cast<size_t>(AES::BLOCKSIZE));
-
       const Buffer& encryptedPayload = Aes::encrypt(key, keyLen, payload, payloadLen, params);
       return EncryptedContent(algType, keyLocator, encryptedPayload.buf(), encryptedPayload.size(), iv.buf(), iv.size());
     }
@@ -96,6 +98,9 @@
             const Name& keyName, const uint8_t* key, size_t keyLen,
             const EncryptParams& params)
 {
+  Name dataName = data.getName();
+  dataName.append(NAME_COMPONENT_FOR).append(keyName);
+  data.setName(dataName);
   switch(params.getAlgorithmType()) {
     case tlv::AlgorithmAesCbc:
     case tlv::AlgorithmAesEcb: {
diff --git a/src/encryptor.hpp b/src/algo/encryptor.hpp
similarity index 100%
rename from src/encryptor.hpp
rename to src/algo/encryptor.hpp
diff --git a/src/common.hpp b/src/common.hpp
index 4b39994..8844b72 100644
--- a/src/common.hpp
+++ b/src/common.hpp
@@ -101,6 +101,14 @@
 namespace time = ndn::time;
 namespace signal = ndn::util::signal;
 
+const ndn::name::Component NAME_COMPONENT_FOR("FOR");
+const ndn::name::Component NAME_COMPONENT_READ("READ");
+const ndn::name::Component NAME_COMPONENT_SAMPLE("SAMPLE");
+const ndn::name::Component NAME_COMPONENT_ACCESS("ACCESS");
+const ndn::name::Component NAME_COMPONENT_E_KEY("E-KEY");
+const ndn::name::Component NAME_COMPONENT_D_KEY("D-KEY");
+const ndn::name::Component NAME_COMPONENT_C_KEY("C-KEY");
+
 } // namespace gep
 } // namespace ndn
 
diff --git a/src/group-manager.cpp b/src/group-manager.cpp
index b19ac20..64a4e8c 100644
--- a/src/group-manager.cpp
+++ b/src/group-manager.cpp
@@ -20,7 +20,7 @@
  */
 
 #include "group-manager.hpp"
-#include "encryptor.hpp"
+#include "algo/encryptor.hpp"
 #include "encrypted-content.hpp"
 
 #include <map>
@@ -28,11 +28,6 @@
 namespace ndn {
 namespace gep {
 
-static const name::Component E_KEY_COMPONENT("E-KEY");
-static const name::Component D_KEY_COMPONENT("D-KEY");
-static const name::Component READ_COMPONENT("read");
-static const name::Component FOR_COMPONENT("FOR");
-
 GroupManager::GroupManager(const Name& prefix, const Name& dataType, const std::string& dbDir,
                            const int paramLength, const int freshPeriod)
   : m_namespace(prefix)
@@ -40,7 +35,7 @@
   , m_paramLength(paramLength)
   , m_freshPeriod(freshPeriod)
 {
-  m_namespace.append(READ_COMPONENT).append(dataType);
+  m_namespace.append(NAME_COMPONENT_READ).append(dataType);
 }
 
 std::list<Data>
@@ -181,7 +176,7 @@
                              const Buffer& pubKeyBuf)
 {
   Name name(m_namespace);
-  name.append(E_KEY_COMPONENT).append(startTs).append(endTs);
+  name.append(NAME_COMPONENT_E_KEY).append(startTs).append(endTs);
   Data data(name);
   data.setFreshnessPeriod(time::hours(m_freshPeriod));
   data.setContent(pubKeyBuf.get(), pubKeyBuf.size());
@@ -195,8 +190,8 @@
                              const Buffer& certKey)
 {
   Name name(m_namespace);
-  name.append(D_KEY_COMPONENT);
-  name.append(startTs).append(endTs).append(FOR_COMPONENT).append(keyName);
+  name.append(NAME_COMPONENT_D_KEY);
+  name.append(startTs).append(endTs);
   Data data = Data(name);
   data.setFreshnessPeriod(time::hours(m_freshPeriod));
   algo::EncryptParams eparams(tlv::AlgorithmRsaPkcs);
