diff --git a/src/security/validator-config.cpp b/src/security/validator-config.cpp
index fbe19d2..aa8ec27 100644
--- a/src/security/validator-config.cpp
+++ b/src/security/validator-config.cpp
@@ -35,18 +35,6 @@
     m_certificateCache = make_shared<CertificateCacheTtl>(m_face.ioService());
 }
 
-ValidatorConfig::ValidatorConfig(const shared_ptr<Face>& face,
-                                 const shared_ptr<CertificateCache>& certificateCache,
-                                 const int stepLimit)
-  : Validator(*face)
-  , m_stepLimit(stepLimit)
-  , m_certificateCache(certificateCache)
-{
-  if (!static_cast<bool>(m_certificateCache))
-    m_certificateCache = make_shared<CertificateCacheTtl>(m_face.ioService());
-}
-
-
 void
 ValidatorConfig::load(const std::string& filename)
 {
diff --git a/src/security/validator-config.hpp b/src/security/validator-config.hpp
index c02cf2f..a5a8af1 100644
--- a/src/security/validator-config.hpp
+++ b/src/security/validator-config.hpp
@@ -42,13 +42,6 @@
                   const shared_ptr<CertificateCache>& certificateCache = DEFAULT_CERTIFICATE_CACHE,
                   const int stepLimit = 10);
 
-  /**
-   * \deprecated Use the other version of the constructor
-   */
-  ValidatorConfig(const shared_ptr<Face>& face,
-                  const shared_ptr<CertificateCache>& certificateCache = DEFAULT_CERTIFICATE_CACHE,
-                  const int stepLimit = 10);
-
   virtual
   ~ValidatorConfig()
   {
diff --git a/src/security/validator-regex.cpp b/src/security/validator-regex.cpp
index 94befaa..d84f897 100644
--- a/src/security/validator-regex.cpp
+++ b/src/security/validator-regex.cpp
@@ -39,17 +39,6 @@
     m_certificateCache = make_shared<CertificateCacheTtl>(m_face.ioService());
 }
 
-ValidatorRegex::ValidatorRegex(const shared_ptr<Face>& face,
-                               shared_ptr<CertificateCache> certificateCache,
-                               const int stepLimit)
-  : Validator(*face)
-  , m_stepLimit(stepLimit)
-  , m_certificateCache(certificateCache)
-{
-  if (!static_cast<bool>(m_certificateCache))
-    m_certificateCache = make_shared<CertificateCacheTtl>(m_face.ioService());
-}
-
 void
 ValidatorRegex::onCertificateValidated(const shared_ptr<const Data>& signCertificate,
                                        const shared_ptr<const Data>& data,
diff --git a/src/security/validator-regex.hpp b/src/security/validator-regex.hpp
index 6a1b742..fd006c4 100644
--- a/src/security/validator-regex.hpp
+++ b/src/security/validator-regex.hpp
@@ -42,13 +42,6 @@
                  shared_ptr<CertificateCache> certificateCache = DEFAULT_CERTIFICATE_CACHE,
                  const int stepLimit = 3);
 
-  /**
-   * \deprecated Use the other version of the constructor
-   */
-  ValidatorRegex(const shared_ptr<Face>& face,
-                 shared_ptr<CertificateCache> certificateCache = DEFAULT_CERTIFICATE_CACHE,
-                 const int stepLimit = 3);
-
   virtual
   ~ValidatorRegex()
   {
