diff --git a/src/security/certificate-cache-ttl.hpp b/src/security/certificate-cache-ttl.hpp
index 31f8255..650a9e7 100644
--- a/src/security/certificate-cache-ttl.hpp
+++ b/src/security/certificate-cache-ttl.hpp
@@ -33,6 +33,7 @@
 class CertificateCacheTtl : public CertificateCache
 {
 public:
+  explicit
   CertificateCacheTtl(boost::asio::io_service& io,
                       const time::seconds& defaultTtl = time::seconds(3600))
     : m_defaultTtl(defaultTtl)
diff --git a/src/security/certificate-extension.hpp b/src/security/certificate-extension.hpp
index cad811f..4a42eac 100644
--- a/src/security/certificate-extension.hpp
+++ b/src/security/certificate-extension.hpp
@@ -52,6 +52,7 @@
     }
   };
 
+  explicit
   CertificateExtension(CryptoPP::BufferedTransformation& in)
   {
     decode(in);
diff --git a/src/security/certificate-subject-description.hpp b/src/security/certificate-subject-description.hpp
index 054caf3..0e56dfa 100644
--- a/src/security/certificate-subject-description.hpp
+++ b/src/security/certificate-subject-description.hpp
@@ -41,6 +41,7 @@
 class CertificateSubjectDescription
 {
 public:
+  explicit
   CertificateSubjectDescription(CryptoPP::BufferedTransformation& in)
   {
     decode(in);
diff --git a/src/security/certificate.hpp b/src/security/certificate.hpp
index 3fcea67..eff2bbc 100644
--- a/src/security/certificate.hpp
+++ b/src/security/certificate.hpp
@@ -59,6 +59,7 @@
    * Create a Certificate from the content in the data packet.
    * @param data The data packet with the content to decode.
    */
+  explicit
   Certificate(const Data& data);
 
   /**
diff --git a/src/security/conf/checker.hpp b/src/security/conf/checker.hpp
index 12017e2..a9ab2a9 100644
--- a/src/security/conf/checker.hpp
+++ b/src/security/conf/checker.hpp
@@ -193,6 +193,7 @@
 class HierarchicalChecker : public CustomizedChecker
 {
 public:
+  explicit
   HierarchicalChecker(uint32_t sigType)
     : CustomizedChecker(sigType,
         make_shared<HyperKeyLocatorNameChecker>("^(<>*)$", "\\1",
diff --git a/src/security/conf/key-locator-checker.hpp b/src/security/conf/key-locator-checker.hpp
index 52cf888..ff9e5fc 100644
--- a/src/security/conf/key-locator-checker.hpp
+++ b/src/security/conf/key-locator-checker.hpp
@@ -148,6 +148,7 @@
 class RegexKeyLocatorNameChecker : public KeyLocatorChecker
 {
 public:
+  explicit
   RegexKeyLocatorNameChecker(const Regex& regex)
     : m_regex(regex)
   {
diff --git a/src/security/conf/rule.hpp b/src/security/conf/rule.hpp
index 6ed5808..31d81f7 100644
--- a/src/security/conf/rule.hpp
+++ b/src/security/conf/rule.hpp
@@ -36,6 +36,7 @@
 class Rule
 {
 public:
+  explicit
   Rule(const std::string& id)
     : m_id(id)
   {
diff --git a/src/security/encryption-manager.hpp b/src/security/encryption-manager.hpp
index 8445c62..e1b0f0e 100644
--- a/src/security/encryption-manager.hpp
+++ b/src/security/encryption-manager.hpp
@@ -32,7 +32,8 @@
 class EncryptionManager
 {
 public:
-  virtual ~EncryptionManager()
+  virtual
+  ~EncryptionManager()
   {
   }
 
diff --git a/src/security/key-chain.hpp b/src/security/key-chain.hpp
index 043f437..2b6da41 100644
--- a/src/security/key-chain.hpp
+++ b/src/security/key-chain.hpp
@@ -63,6 +63,7 @@
   KeyChain();
 
   template<class KeyChainTraits>
+  explicit
   KeyChain(KeyChainTraits traits);
 
   KeyChain(const std::string& pibName,
diff --git a/src/security/sec-rule-specific.hpp b/src/security/sec-rule-specific.hpp
index 83af8fb..ade4b0c 100644
--- a/src/security/sec-rule-specific.hpp
+++ b/src/security/sec-rule-specific.hpp
@@ -37,8 +37,10 @@
   SecRuleSpecific(shared_ptr<Regex> dataRegex,
                   shared_ptr<Regex> signerRegex);
 
+  explicit
   SecRuleSpecific(shared_ptr<Regex> dataRegex);
 
+  explicit
   SecRuleSpecific(const SecRuleSpecific& rule);
 
   virtual
diff --git a/src/security/sec-rule.hpp b/src/security/sec-rule.hpp
index 6a005be..43f504c 100644
--- a/src/security/sec-rule.hpp
+++ b/src/security/sec-rule.hpp
@@ -42,6 +42,7 @@
     }
   };
 
+  explicit
   SecRule(bool isPositive)
     : m_isPositive(isPositive)
   {
diff --git a/src/security/sec-tpm-file.hpp b/src/security/sec-tpm-file.hpp
index 38ca1b5..d878ad6 100644
--- a/src/security/sec-tpm-file.hpp
+++ b/src/security/sec-tpm-file.hpp
@@ -45,6 +45,7 @@
     }
   };
 
+  explicit
   SecTpmFile(const std::string& dir = "");
 
   virtual
diff --git a/src/security/validator-regex.hpp b/src/security/validator-regex.hpp
index 7c32e53..0490b77 100644
--- a/src/security/validator-regex.hpp
+++ b/src/security/validator-regex.hpp
@@ -47,6 +47,7 @@
 
   static const shared_ptr<CertificateCache> DEFAULT_CERTIFICATE_CACHE;
 
+  explicit
   ValidatorRegex(Face& face,
                  shared_ptr<CertificateCache> certificateCache = DEFAULT_CERTIFICATE_CACHE,
                  const int stepLimit = 3);
