diff --git a/src/ca-storage.cpp b/src/ca-storage.cpp
index 3f8aeb5..ebe5c98 100644
--- a/src/ca-storage.cpp
+++ b/src/ca-storage.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -23,6 +23,8 @@
 namespace ndn {
 namespace ndncert {
 
+CaStorage::~CaStorage() = default;
+
 unique_ptr<CaStorage>
 CaStorage::createCaStorage(const std::string& caStorageType)
 {
diff --git a/src/ca-storage.hpp b/src/ca-storage.hpp
index 0a85f6c..ab5e38d 100644
--- a/src/ca-storage.hpp
+++ b/src/ca-storage.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -38,8 +38,10 @@
     using std::runtime_error::runtime_error;
   };
 
-public:
-  // certificate request related
+  virtual
+  ~CaStorage();
+
+public: // certificate request related
   virtual CertificateRequest
   getRequest(const std::string& requestId) = 0;
 
@@ -58,7 +60,7 @@
   virtual std::list<CertificateRequest>
   listAllRequests(const Name& caName) = 0;
 
-  // certificate related
+public: // certificate related
   virtual security::v2::Certificate
   getCertificate(const std::string& certId) = 0;
 
@@ -77,7 +79,7 @@
   virtual std::list<security::v2::Certificate>
   listAllIssuedCertificates(const Name& caName) = 0;
 
-public:
+public: // factory
   template<class CaStorageType>
   static void
   registerCaStorage(const std::string& caStorageType = CaStorageType::STORAGE_TYPE)
diff --git a/src/challenge-module.cpp b/src/challenge-module.cpp
index 224a30c..c1f3432 100644
--- a/src/challenge-module.cpp
+++ b/src/challenge-module.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -37,6 +37,8 @@
 {
 }
 
+ChallengeModule::~ChallengeModule() = default;
+
 unique_ptr<ChallengeModule>
 ChallengeModule::createChallengeModule(const std::string& canonicalName)
 {
diff --git a/src/challenge-module.hpp b/src/challenge-module.hpp
index af0d40b..b2d39ad 100644
--- a/src/challenge-module.hpp
+++ b/src/challenge-module.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -44,8 +44,12 @@
   };
 
 public:
+  explicit
   ChallengeModule(const std::string& uniqueType);
 
+  virtual
+  ~ChallengeModule();
+
   template<class ChallengeType>
   static void
   registerChallengeModule(const std::string& typeName)
diff --git a/src/client-module.cpp b/src/client-module.cpp
index e4162d2..0d98d90 100644
--- a/src/client-module.cpp
+++ b/src/client-module.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -38,6 +38,8 @@
 {
 }
 
+ClientModule::~ClientModule() = default;
+
 void
 ClientModule::requestCaTrustAnchor(const Name& caName, const DataCallback& trustAnchorCallback,
                                    const ErrorCallback& errorCallback)
diff --git a/src/client-module.hpp b/src/client-module.hpp
index e285ce2..df2a43a 100644
--- a/src/client-module.hpp
+++ b/src/client-module.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2017, Regents of the University of California.
+ * Copyright (c) 2017-2018, Regents of the University of California.
  *
  * This file is part of ndncert, a certificate management system based on NDN.
  *
@@ -64,9 +64,11 @@
   using ErrorCallback = function<void (const std::string&)>;
 
 public:
-  explicit
   ClientModule(Face& face, security::v2::KeyChain& keyChain, size_t retryTimes = 2);
 
+  virtual
+  ~ClientModule();
+
   ClientConfig&
   getClientConf()
   {
@@ -176,7 +178,6 @@
   virtual void
   onNack(const Interest& interest, const lp::Nack& nack, const ErrorCallback& errorCallback);
 
-
 protected:
   ClientConfig m_config;
   Face& m_face;
