diff --git a/PSync/detail/iblt.cpp b/PSync/detail/iblt.cpp
index 9f38f6e..0739b04 100644
--- a/PSync/detail/iblt.cpp
+++ b/PSync/detail/iblt.cpp
@@ -52,9 +52,6 @@
 
 namespace be = boost::endian;
 
-const size_t N_HASH(3);
-const size_t N_HASHCHECK(11);
-
 bool
 HashTableEntry::isPure() const
 {
diff --git a/PSync/detail/iblt.hpp b/PSync/detail/iblt.hpp
index 65b2a5e..1e8b35b 100644
--- a/PSync/detail/iblt.hpp
+++ b/PSync/detail/iblt.hpp
@@ -69,8 +69,8 @@
   isEmpty() const;
 };
 
-extern const size_t N_HASH;
-extern const size_t N_HASHCHECK;
+inline constexpr size_t N_HASH = 3;
+inline constexpr size_t N_HASHCHECK = 11;
 
 /**
  * @brief Invertible Bloom Lookup Table (Invertible Bloom Filter)
diff --git a/PSync/partial-producer.cpp b/PSync/partial-producer.cpp
index 852a68e..5b02903 100644
--- a/PSync/partial-producer.cpp
+++ b/PSync/partial-producer.cpp
@@ -29,8 +29,8 @@
 
 NDN_LOG_INIT(psync.PartialProducer);
 
-const ndn::name::Component HELLO("hello");
-const ndn::name::Component SYNC("sync");
+const ndn::name::Component HELLO{"hello"};
+const ndn::name::Component SYNC{"sync"};
 
 PartialProducer::PartialProducer(size_t expectedNumEntries,
                                  ndn::Face& face,
diff --git a/docs/_static/.gitignore b/docs/_static/.gitignore
deleted file mode 100644
index d6b7ef3..0000000
--- a/docs/_static/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-*
-!.gitignore
diff --git a/docs/conf.py b/docs/conf.py
index 5b7a5ae..8b9cea6 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -1,25 +1,17 @@
 # Configuration file for the Sphinx documentation builder.
 #
-# This file only contains a selection of the most common options. For a full
-# list see the documentation:
+# For the full list of built-in configuration values, see the documentation:
 # https://www.sphinx-doc.org/en/master/usage/configuration.html
 
-# -- Path setup --------------------------------------------------------------
-
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
-#
-# import os
+import importlib.util
 import sys
-# sys.path.insert(0, os.path.abspath('.'))
-
 
 # -- Project information -----------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
 
-project = u'PSync: Full/Partial Synchronization Protocol for NDN'
-copyright = u'Copyright © 2018-2022 Named Data Networking Project.'
-author = u'Named Data Networking Project'
+project = 'PSync: Partial/Full Synchronization Protocol for NDN'
+copyright = 'Copyright © 2018-2022 Named Data Networking Project.'
+author = 'Named Data Networking Project'
 
 # The short X.Y version.
 #version = ''
@@ -35,49 +27,34 @@
 
 
 # -- General configuration ---------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
 
-# If your documentation needs a minimal Sphinx version, state it here.
-#
-needs_sphinx = '1.3'
-
-# Add any Sphinx extension module names here, as strings. They can be
-# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
-# ones.
+needs_sphinx = '4.0'
 extensions = [
     'sphinx.ext.extlinks',
     'sphinx.ext.todo',
 ]
 
-def addExtensionIfExists(extension):
+def addExtensionIfExists(extension: str):
     try:
-        __import__(extension)
+        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')
+    else:
         extensions.append(extension)
-    except ImportError:
-        sys.stderr.write("Extension '%s' not found. "
-                         "Some documentation may not build correctly.\n" % extension)
 
 addExtensionIfExists('sphinxcontrib.doxylink')
 
-# The master toctree document.
-master_doc = 'index'
-
-# Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-# This pattern also affects html_static_path and html_extra_path.
-exclude_patterns = []
+exclude_patterns = ['Thumbs.db', '.DS_Store']
 
 
 # -- Options for HTML output -------------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
 
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-#
 html_theme = 'named_data_theme'
-
-# Add any paths that contain custom themes here, relative to this directory.
 html_theme_path = ['.']
 
 # Add any paths that contain custom static files (such as style sheets) here,
@@ -92,52 +69,12 @@
 highlight_language = 'none'
 
 
-# -- Options for LaTeX output ------------------------------------------------
-
-latex_elements = {
-    # The paper size ('letterpaper' or 'a4paper').
-    #
-    # 'papersize': 'letterpaper',
-
-    # The font size ('10pt', '11pt' or '12pt').
-    #
-    # 'pointsize': '10pt',
-
-    # Additional stuff for the LaTeX preamble.
-    #
-    # 'preamble': '',
-
-    # Latex figure (float) alignment
-    #
-    # 'figure_align': 'htbp',
-}
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title,
-#  author, documentclass [howto, manual, or own class]).
-latex_documents = [
-    ('index', 'PSync-docs.tex', u'Full/Partial Synchronization Protocol for NDN',
-     author, 'manual'),
-]
-
-
-# -- Options for manual page output ------------------------------------------
-
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-]
-
-# If true, show URL addresses after external links.
-#man_show_urls = True
-
-
-# -- Custom options ----------------------------------------------------------
+# -- Misc options ------------------------------------------------------------
 
 doxylink = {
     'PSync': ('PSync.tag', 'doxygen/'),
 }
 
 extlinks = {
-    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #'),
+    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #%s'),
 }
diff --git a/docs/index.rst b/docs/index.rst
index 7f40022..ea4ae0a 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -1,4 +1,4 @@
-PSYNC - Partial/Full Sync Library based on BF and IBF
+PSync - Partial/Full Sync Library based on BF and IBF
 =====================================================
 
 PSync is a C++ library for name synchronization that implements the `PSync protocol
