diff --git a/include/Makefile.am b/include/Makefile.am
index d2729b4..cab21a1 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -17,11 +17,6 @@
   $(wildcard ndn-cpp/*.hpp) \
   $(wildcard ndn-cpp/encoding/*.*) \
   $(wildcard ndn-cpp/security/*.*) \
-  $(wildcard ndn-cpp/security/certificate/*.*) \
-  $(wildcard ndn-cpp/security/encryption/*.*) \
-  $(wildcard ndn-cpp/security/identity/*.*) \
-  $(wildcard ndn-cpp/security/policy/*.*) \
-  $(wildcard ndn-cpp/security/signature/*.*) \
   $(wildcard ndn-cpp/transport/*.*) \
   $(wildcard ndn-cpp/util/*.*)
 
diff --git a/include/ndn-cpp/data.hpp b/include/ndn-cpp/data.hpp
index 6f0f397..e2d9451 100644
--- a/include/ndn-cpp/data.hpp
+++ b/include/ndn-cpp/data.hpp
@@ -15,7 +15,6 @@
 #include "signature.hpp"
 #include "meta-info.hpp"
 #include "key-locator.hpp"
-#include "security/signature/signature-sha256-with-rsa.hpp"
 
 namespace ndn {
   
diff --git a/include/ndn-cpp/security/certificate/certificate-extension.hpp b/include/ndn-cpp/security/certificate-extension.hpp
similarity index 94%
rename from include/ndn-cpp/security/certificate/certificate-extension.hpp
rename to include/ndn-cpp/security/certificate-extension.hpp
index c212216..61f7dd2 100644
--- a/include/ndn-cpp/security/certificate/certificate-extension.hpp
+++ b/include/ndn-cpp/security/certificate-extension.hpp
@@ -9,9 +9,9 @@
 #ifndef NDN_CERTIFICATE_EXTENSION_HPP
 #define NDN_CERTIFICATE_EXTENSION_HPP
 
-#include "../../common.hpp"
-#include "../../encoding/buffer.hpp"
-#include "../../encoding/oid.hpp"
+#include "../common.hpp"
+#include "../encoding/buffer.hpp"
+#include "../encoding/oid.hpp"
 
 namespace CryptoPP { class BufferedTransformation; }
 
diff --git a/include/ndn-cpp/security/certificate/certificate-subject-description.hpp b/include/ndn-cpp/security/certificate-subject-description.hpp
similarity index 95%
rename from include/ndn-cpp/security/certificate/certificate-subject-description.hpp
rename to include/ndn-cpp/security/certificate-subject-description.hpp
index 5717920..fc26d37 100644
--- a/include/ndn-cpp/security/certificate/certificate-subject-description.hpp
+++ b/include/ndn-cpp/security/certificate-subject-description.hpp
@@ -9,8 +9,8 @@
 #ifndef NDN_CERTIFICATE_SUBJECT_DESCRIPTION_HPP
 #define NDN_CERTIFICATE_SUBJECT_DESCRIPTION_HPP
 
-#include "../../common.hpp"
-#include "../../encoding/oid.hpp"
+#include "../common.hpp"
+#include "../encoding/oid.hpp"
 
 namespace CryptoPP { class BufferedTransformation; }
 
diff --git a/include/ndn-cpp/security/certificate/certificate.hpp b/include/ndn-cpp/security/certificate.hpp
similarity index 98%
rename from include/ndn-cpp/security/certificate/certificate.hpp
rename to include/ndn-cpp/security/certificate.hpp
index c2fd95a..9871733 100644
--- a/include/ndn-cpp/security/certificate/certificate.hpp
+++ b/include/ndn-cpp/security/certificate.hpp
@@ -9,8 +9,8 @@
 #ifndef NDN_CERTIFICATE_HPP
 #define NDN_CERTIFICATE_HPP
 
-#include "../../data.hpp"
-#include "../../common.hpp"
+#include "../data.hpp"
+#include "../common.hpp"
 
 #include "certificate-subject-description.hpp"
 #include "certificate-extension.hpp"
diff --git a/include/ndn-cpp/security/encryption/encryption-manager.hpp b/include/ndn-cpp/security/encryption-manager.hpp
similarity index 100%
rename from include/ndn-cpp/security/encryption/encryption-manager.hpp
rename to include/ndn-cpp/security/encryption-manager.hpp
diff --git a/include/ndn-cpp/security/certificate/identity-certificate.hpp b/include/ndn-cpp/security/identity-certificate.hpp
similarity index 100%
rename from include/ndn-cpp/security/certificate/identity-certificate.hpp
rename to include/ndn-cpp/security/identity-certificate.hpp
diff --git a/include/ndn-cpp/security/key-chain.hpp b/include/ndn-cpp/security/key-chain.hpp
index 9eb0b13..8e1e81c 100644
--- a/include/ndn-cpp/security/key-chain.hpp
+++ b/include/ndn-cpp/security/key-chain.hpp
@@ -9,14 +9,14 @@
 #ifndef NDN_KEY_CHAIN_HPP
 #define NDN_KEY_CHAIN_HPP
 
-#include "certificate/identity-certificate.hpp"
-#include "certificate/public-key.hpp"
-#include "signature/signature-sha256-with-rsa.hpp"
+#include "identity-certificate.hpp"
+#include "public-key.hpp"
+#include "signature-sha256-with-rsa.hpp"
 
-#include "identity/sec-public-info-sqlite3.hpp"
-#include "identity/sec-public-info-memory.hpp"
-#include "identity/sec-tpm-osx.hpp"
-#include "identity/sec-tpm-memory.hpp"
+#include "sec-public-info-sqlite3.hpp"
+#include "sec-public-info-memory.hpp"
+#include "sec-tpm-osx.hpp"
+#include "sec-tpm-memory.hpp"
 
 
 namespace ndn {
diff --git a/include/ndn-cpp/security/certificate/public-key.hpp b/include/ndn-cpp/security/public-key.hpp
similarity index 94%
rename from include/ndn-cpp/security/certificate/public-key.hpp
rename to include/ndn-cpp/security/public-key.hpp
index ed0687a..5a70e38 100644
--- a/include/ndn-cpp/security/certificate/public-key.hpp
+++ b/include/ndn-cpp/security/public-key.hpp
@@ -10,9 +10,9 @@
 #define NDN_PUBLIC_KEY_HPP
 
 #include <stdexcept>
-#include "../../encoding/oid.hpp"
-#include "../../encoding/buffer.hpp"
-#include "../security-common.hpp"
+#include "../encoding/oid.hpp"
+#include "../encoding/buffer.hpp"
+#include "security-common.hpp"
 
 namespace ndn {
 
diff --git a/include/ndn-cpp/security/policy/no-verify-policy-manager.hpp b/include/ndn-cpp/security/sec-policy-no-verify.hpp
similarity index 90%
rename from include/ndn-cpp/security/policy/no-verify-policy-manager.hpp
rename to include/ndn-cpp/security/sec-policy-no-verify.hpp
index 1ee9f75..1d2927e 100644
--- a/include/ndn-cpp/security/policy/no-verify-policy-manager.hpp
+++ b/include/ndn-cpp/security/sec-policy-no-verify.hpp
@@ -6,20 +6,20 @@
  * See COPYING for copyright and distribution information.
  */
 
-#ifndef NDN_NO_VERIFY_POLICY_MANAGER_HPP
-#define NDN_NO_VERIFY_POLICY_MANAGER_HPP
+#ifndef NDN_SEC_POLICY_NO_VERIFY_HPP
+#define NDN_SEC_POLICY_NO_VERIFY_HPP
 
-#include "policy-manager.hpp"
+#include "sec-policy.hpp"
 
 namespace ndn {
 
-class NoVerifyPolicyManager : public PolicyManager {
+class SecPolicyNoVerify : public SecPolicy {
 public:
   /**
    * The virtual destructor.
    */
   virtual
-  ~NoVerifyPolicyManager();
+  ~SecPolicyNoVerify();
 
   /**
    * Override to always skip verification and trust as valid.
diff --git a/include/ndn-cpp/security/policy/self-verify-policy-manager.hpp b/include/ndn-cpp/security/sec-policy-self-verify.hpp
similarity index 79%
rename from include/ndn-cpp/security/policy/self-verify-policy-manager.hpp
rename to include/ndn-cpp/security/sec-policy-self-verify.hpp
index 14da3c1..111b61a 100644
--- a/include/ndn-cpp/security/policy/self-verify-policy-manager.hpp
+++ b/include/ndn-cpp/security/sec-policy-self-verify.hpp
@@ -5,31 +5,28 @@
  * See COPYING for copyright and distribution information.
  */
 
-#ifndef NDN_SELF_VERIFY_POLICY_MANAGER_HPP
-#define NDN_SELF_VERIFY_POLICY_MANAGER_HPP
+#ifndef NDN_SEC_POLICY_SELF_VERIFY_HPP
+#define NDN_SEC_POLICY_SELF_VERIFY_HPP
 
-#include "policy-manager.hpp"
+#include "sec-policy.hpp"
 
 namespace ndn {
 
-class IdentityManager;
-  
 /**
- * A SelfVerifyPolicyManager implements a PolicyManager to use the public key DER in the data packet's KeyLocator (if available)
+ * A SecPolicySelfVerify implements a PolicyManager to use the public key DER in the data packet's KeyLocator (if available)
  * or look in the IdentityStorage for the public key with the name in the KeyLocator (if available) and use
  * it to verify the data packet, without searching a certificate chain.  If the public key can't be found, the
  * verification fails.
  */
-class SelfVerifyPolicyManager : public PolicyManager {
+class SecPolicySelfVerify : public SecPolicy {
 public:
   /**
-   * Create a new SelfVerifyPolicyManager which will look up the public key in the given identityManager.
+   * Create a new SecPolicySelfVerify which will look up the public key in the given identityManager.
    * @param identityManager (optional) The IdentityManager for looking up the public key.  This points to an object must which remain 
-   * valid during the life of this SelfVerifyPolicyManager.  If omitted, then don't look for a public key with the name 
+   * valid during the life of this SecPolicySelfVerify.  If omitted, then don't look for a public key with the name 
    * in the KeyLocator and rely on the KeyLocator having the full public key DER.
    */
-  SelfVerifyPolicyManager(IdentityStorage* identityStorage = 0)
-  : identityStorage_(identityStorage)
+  SecPolicySelfVerify()
   {
   }
   
@@ -37,7 +34,7 @@
    * The virtual destructor.
    */
   virtual
-  ~SelfVerifyPolicyManager();
+  ~SecPolicySelfVerify();
 
   /**
    * Never skip verification.
@@ -87,8 +84,6 @@
   virtual Name 
   inferSigningIdentity(const Name& dataName);
   
-private:
-  IdentityStorage* identityStorage_;
 };
 
 }
diff --git a/include/ndn-cpp/security/policy/policy-manager.hpp b/include/ndn-cpp/security/sec-policy.hpp
similarity index 87%
rename from include/ndn-cpp/security/policy/policy-manager.hpp
rename to include/ndn-cpp/security/sec-policy.hpp
index 400360d..e3879bb 100644
--- a/include/ndn-cpp/security/policy/policy-manager.hpp
+++ b/include/ndn-cpp/security/sec-policy.hpp
@@ -6,21 +6,19 @@
  * See COPYING for copyright and distribution information.
  */
 
-#ifndef NDN_POLICY_MANAGER_HPP
-#define NDN_POLICY_MANAGER_HPP
+#ifndef NDN_SEC_POLICY_HPP
+#define NDN_SEC_POLICY_HPP
 
-#include "../../data.hpp"
+#include "../data.hpp"
 #include "validation-request.hpp"
 
 namespace ndn {
-
-class ValidationRequest;
   
 /**
- * A PolicyManager is an abstract base class to represent the policy for verifying data packets.
+ * A SecPolicy is an abstract base class to represent the policy for verifying data packets.
  * You must create an object of a subclass.
  */
-class PolicyManager {
+class SecPolicy {
 public:
   struct Error : public std::runtime_error { Error(const std::string &what) : std::runtime_error(what) {} };
 
@@ -28,7 +26,7 @@
    * The virtual destructor.
    */
   virtual
-  ~PolicyManager() {}
+  ~SecPolicy() {}
 
   /**
    * Check if the received data packet can escape from verification and be trusted as valid.
@@ -39,7 +37,7 @@
   skipVerifyAndTrust(const Data& data) = 0;
 
   /**
-   * Check if this PolicyManager has a verification rule for the received data.
+   * Check if this SecPolicy has a verification rule for the received data.
    * @param data The received data packet.
    * @return true if the data must be verified, otherwise false.
    */
diff --git a/include/ndn-cpp/security/identity/sec-public-info-memory.hpp b/include/ndn-cpp/security/sec-public-info-memory.hpp
similarity index 100%
rename from include/ndn-cpp/security/identity/sec-public-info-memory.hpp
rename to include/ndn-cpp/security/sec-public-info-memory.hpp
diff --git a/include/ndn-cpp/security/identity/sec-public-info-sqlite3.hpp b/include/ndn-cpp/security/sec-public-info-sqlite3.hpp
similarity index 99%
rename from include/ndn-cpp/security/identity/sec-public-info-sqlite3.hpp
rename to include/ndn-cpp/security/sec-public-info-sqlite3.hpp
index 99dac54..89ffe6e 100644
--- a/include/ndn-cpp/security/identity/sec-public-info-sqlite3.hpp
+++ b/include/ndn-cpp/security/sec-public-info-sqlite3.hpp
@@ -14,7 +14,7 @@
 #ifdef NDN_CPP_HAVE_SQLITE3
 
 #include <sqlite3.h>
-#include "../../common.hpp"
+#include "../common.hpp"
 #include "sec-public-info.hpp"
 
 namespace ndn
diff --git a/include/ndn-cpp/security/identity/sec-public-info.hpp b/include/ndn-cpp/security/sec-public-info.hpp
similarity index 98%
rename from include/ndn-cpp/security/identity/sec-public-info.hpp
rename to include/ndn-cpp/security/sec-public-info.hpp
index 961cf95..7cd7230 100644
--- a/include/ndn-cpp/security/identity/sec-public-info.hpp
+++ b/include/ndn-cpp/security/sec-public-info.hpp
@@ -9,10 +9,10 @@
 #ifndef NDN_SEC_PUBLIC_INFO_HPP
 #define NDN_SEC_PUBLIC_INFO_HPP
 
-#include "../../name.hpp"
-#include "../security-common.hpp"
-#include "../certificate/public-key.hpp"
-#include "../certificate/identity-certificate.hpp"
+#include "../name.hpp"
+#include "security-common.hpp"
+#include "public-key.hpp"
+#include "identity-certificate.hpp"
 
 
 namespace ndn {
diff --git a/include/ndn-cpp/security/identity/sec-tpm-memory.hpp b/include/ndn-cpp/security/sec-tpm-memory.hpp
similarity index 100%
rename from include/ndn-cpp/security/identity/sec-tpm-memory.hpp
rename to include/ndn-cpp/security/sec-tpm-memory.hpp
diff --git a/include/ndn-cpp/security/identity/sec-tpm-osx.hpp b/include/ndn-cpp/security/sec-tpm-osx.hpp
similarity index 98%
rename from include/ndn-cpp/security/identity/sec-tpm-osx.hpp
rename to include/ndn-cpp/security/sec-tpm-osx.hpp
index 0b90fd0..71efa13 100644
--- a/include/ndn-cpp/security/identity/sec-tpm-osx.hpp
+++ b/include/ndn-cpp/security/sec-tpm-osx.hpp
@@ -12,7 +12,7 @@
 #include <ndn-cpp/ndn-cpp-config.h>
 #if NDN_CPP_HAVE_OSX_SECURITY
 
-#include "../../common.hpp"
+#include "../common.hpp"
 #include "sec-tpm.hpp"
 
 namespace ndn
diff --git a/include/ndn-cpp/security/identity/sec-tpm.hpp b/include/ndn-cpp/security/sec-tpm.hpp
similarity index 95%
rename from include/ndn-cpp/security/identity/sec-tpm.hpp
rename to include/ndn-cpp/security/sec-tpm.hpp
index 9452f9f..d7a8e04 100644
--- a/include/ndn-cpp/security/identity/sec-tpm.hpp
+++ b/include/ndn-cpp/security/sec-tpm.hpp
@@ -10,10 +10,10 @@
 #define NDN_SEC_TPM_HPP
 
 #include <string>
-#include "../security-common.hpp"
-#include "../../name.hpp"
-#include "../../data.hpp"
-#include "../certificate/public-key.hpp"
+#include "security-common.hpp"
+#include "../name.hpp"
+#include "../data.hpp"
+#include "public-key.hpp"
 
 namespace ndn {
 
diff --git a/include/ndn-cpp/security/signature/sha256-with-rsa-handler.hpp b/include/ndn-cpp/security/sha256-with-rsa-handler.hpp
similarity index 100%
rename from include/ndn-cpp/security/signature/sha256-with-rsa-handler.hpp
rename to include/ndn-cpp/security/sha256-with-rsa-handler.hpp
diff --git a/include/ndn-cpp/security/signature/signature-sha256-with-rsa.hpp b/include/ndn-cpp/security/signature-sha256-with-rsa.hpp
similarity index 97%
rename from include/ndn-cpp/security/signature/signature-sha256-with-rsa.hpp
rename to include/ndn-cpp/security/signature-sha256-with-rsa.hpp
index a24e94b..8eb26b1 100644
--- a/include/ndn-cpp/security/signature/signature-sha256-with-rsa.hpp
+++ b/include/ndn-cpp/security/signature-sha256-with-rsa.hpp
@@ -8,7 +8,7 @@
 #ifndef NDN_SIGNATURE_SHA256_WITH_RSA_HPP
 #define NDN_SIGNATURE_SHA256_WITH_RSA_HPP
 
-#include "../../data.hpp"
+#include "../data.hpp"
 
 namespace ndn {
 
diff --git a/include/ndn-cpp/security/policy/validation-request.hpp b/include/ndn-cpp/security/validation-request.hpp
similarity index 97%
rename from include/ndn-cpp/security/policy/validation-request.hpp
rename to include/ndn-cpp/security/validation-request.hpp
index 69a1079..7471065 100644
--- a/include/ndn-cpp/security/policy/validation-request.hpp
+++ b/include/ndn-cpp/security/validation-request.hpp
@@ -9,7 +9,7 @@
 #ifndef NDN_VALIDATION_REQUEST_HPP
 #define NDN_VALIDATION_REQUEST_HPP
 
-#include "../../interest.hpp"
+#include "../interest.hpp"
 
 namespace ndn {
 
diff --git a/include/ndn-cpp/security/verifier.hpp b/include/ndn-cpp/security/verifier.hpp
index 537e74d..764dcd4 100644
--- a/include/ndn-cpp/security/verifier.hpp
+++ b/include/ndn-cpp/security/verifier.hpp
@@ -11,13 +11,12 @@
 
 #include "../data.hpp"
 #include "../face.hpp"
-#include "policy/validation-request.hpp"
-#include "certificate/public-key.hpp"
-#include "signature/signature-sha256-with-rsa.hpp"
+#include "sec-policy.hpp"
+#include "validation-request.hpp"
+#include "public-key.hpp"
+#include "signature-sha256-with-rsa.hpp"
 
 namespace ndn {
-
-class PolicyManager;
   
 /**
  * Verifier is one of the main classes of the security librar .
@@ -28,7 +27,7 @@
 public:
   struct Error : public std::runtime_error { Error(const std::string &what) : std::runtime_error(what) {} };
 
-  Verifier(const ptr_lib::shared_ptr<PolicyManager> &policyManager = DefaultPolicyManager);
+  Verifier(const ptr_lib::shared_ptr<SecPolicy> &policy = DefaultPolicy);
 
   /**
    * @brief Set the Face which will be used to fetch required certificates.
@@ -40,16 +39,16 @@
   setFace(const ptr_lib::shared_ptr<Face> &face) { face_ = face; }
   
   /**
-   * @brief Get the policyManager.
-   * @return The PolicyManager.
+   * @brief Get the policy.
+   * @return The Policy.
    */
-  inline PolicyManager&
+  inline SecPolicy&
   policies()
   {
-    if (!policyManager_)
-      throw Error("PolicyManager is not assigned to the KeyChain");
+    if (!policy_)
+      throw Error("policy is not assigned to the KeyChain");
 
-    return *policyManager_;
+    return *policy_;
   }
 
 
@@ -81,7 +80,7 @@
   verifySignature(const Buffer &data, const SignatureSha256WithRsa &sig, const PublicKey &publicKey);
 
 public:
-  static const ptr_lib::shared_ptr<PolicyManager>     DefaultPolicyManager;
+  static const ptr_lib::shared_ptr<SecPolicy>     DefaultPolicy;
     
 private:
   void
@@ -94,7 +93,7 @@
      const ptr_lib::shared_ptr<Data> &data, ptr_lib::shared_ptr<ValidationRequest> nextStep);
 
 private:
-  ptr_lib::shared_ptr<PolicyManager>     policyManager_;
+  ptr_lib::shared_ptr<SecPolicy>     policy_;
   ptr_lib::shared_ptr<Face>        face_;
 };
 
