diff --git a/.jenkins b/.jenkins
index 0f40e00..92b9dae 100755
--- a/.jenkins
+++ b/.jenkins
@@ -32,6 +32,9 @@
     export DISABLE_HEADERS_CHECK=yes
 fi
 
+# https://reproducible-builds.org/docs/source-date-epoch/
+export SOURCE_DATE_EPOCH=$(git log -1 --format=%ct)
+
 for file in .jenkins.d/*; do
     [[ -f $file && -x $file ]] || continue
 
diff --git a/docs/conf.py b/docs/conf.py
index 255dbe3..d1a6386 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -35,12 +35,15 @@
     'sphinx.ext.todo',
 ]
 
-def addExtensionIfExists(extension):
-    if importlib.util.find_spec(extension) is not None:
-        extensions.append(extension)
-    else:
+def addExtensionIfExists(extension: str):
+    try:
+        if importlib.util.find_spec(extension) is None:
+            raise ModuleNotFoundError(extension)
+    except (ImportError, ValueError):
         sys.stderr.write(f'WARNING: Extension {extension!r} not found. '
-                          'Some documentation may not build correctly.\n')
+                         'Some documentation may not build correctly.\n')
+    else:
+        extensions.append(extension)
 
 addExtensionIfExists('sphinxcontrib.doxylink')
 
diff --git a/src/clients/query-controller.hpp b/src/clients/query-controller.hpp
index a78b5df..ac4c94a 100644
--- a/src/clients/query-controller.hpp
+++ b/src/clients/query-controller.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2020, Regents of the University of California.
+ * Copyright (c) 2014-2023, Regents of the University of California.
  *
  * This file is part of NDNS (Named Data Networking Domain Name Service).
  * See AUTHORS.md for complete list of NDNS authors and contributors.
@@ -36,16 +36,15 @@
  * @param[in] Data the Data packet which contains the Response, client should verify the packet
  * @param[in] Response the Final Response converted from Data
  */
-typedef function<void(const Data&, const Response&)> QuerySucceedCallback;
+using QuerySucceedCallback = std::function<void(const Data&, const Response&)>;
 
 /**
  * @brief callback function when failing to get the final Response
  */
-typedef function<void(uint32_t errCode, const std::string& errMsg)> QueryFailCallback;
+using QueryFailCallback = std::function<void(uint32_t errCode, const std::string& errMsg)>;
 
 /**
  * @brief a Query Controller interface
- *
  */
 class QueryController : boost::noncopyable
 {
@@ -73,10 +72,7 @@
   virtual void
   setStartComponentIndex(size_t startIndex) = 0;
 
-public:
-  ////////////////
-  // getter
-
+public: // getters
   const Name&
   getDstLabel() const
   {
@@ -104,7 +100,6 @@
   const QueryFailCallback m_onFail;
 
   Face& m_face;
-
 };
 
 std::ostream&
diff --git a/src/daemon/config-file.hpp b/src/daemon/config-file.hpp
index 29a0587..ae92322 100644
--- a/src/daemon/config-file.hpp
+++ b/src/daemon/config-file.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /*
- * Copyright (c) 2014-2022,  Regents of the University of California,
+ * Copyright (c) 2014-2023,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -35,24 +35,24 @@
 
 /** \brief a config file section
  */
-typedef boost::property_tree::ptree ConfigSection;
+using ConfigSection = boost::property_tree::ptree;
 
 /** \brief an optional config file section
  */
-typedef boost::optional<const ConfigSection&> OptionalConfigSection;
+using OptionalConfigSection = boost::optional<const ConfigSection&>;
 
 /** \brief callback to process a config file section
  */
-typedef function<void(const ConfigSection& section,
-                      bool isDryRun,
-                      const std::string& filename)> ConfigSectionHandler;
+using ConfigSectionHandler = std::function<void(const ConfigSection& section,
+                                                bool isDryRun,
+                                                const std::string& filename)>;
 
 /** \brief callback to process a config file section without a \p ConfigSectionHandler
  */
-typedef function<void(const std::string& filename,
-                      const std::string& sectionName,
-                      const ConfigSection& section,
-                      bool isDryRun)> UnknownConfigSectionHandler;
+using UnknownConfigSectionHandler = std::function<void(const std::string& filename,
+                                                       const std::string& sectionName,
+                                                       const ConfigSection& section,
+                                                       bool isDryRun)>;
 
 /** \brief configuration file parsing utility
  */
diff --git a/wscript b/wscript
index 5aa05c9..435fbd0 100644
--- a/wscript
+++ b/wscript
@@ -197,7 +197,9 @@
         Logs.warn('%s is not writable (%s)' % (versionFile, e.strerror))
 
 def dist(ctx):
+    ctx.algo = 'tar.xz'
     version(ctx)
 
 def distcheck(ctx):
+    ctx.algo = 'tar.xz'
     version(ctx)
