diff --git a/docs/conf.py b/docs/conf.py
index 2362bab..a7b4832 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'Named Data Link State Routing Protocol (NLSR)'
-copyright = u'Copyright © 2014-2022 Named Data Networking Project.'
-author = u'Named Data Networking Project'
+project = 'Named Data Link State Routing Protocol (NLSR)'
+copyright = 'Copyright © 2014-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,55 +69,24 @@
 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', 'nlsr-docs.tex', u'Named Data Link State Routing Protocol (NLSR)',
-     author, 'manual'),
-]
-
-
 # -- Options for manual page output ------------------------------------------
+# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-manual-page-output
 
 # One entry per manual page. List of tuples
 # (source start file, name, description, authors, manual section).
 man_pages = [
-    ('manpages/nlsr',      'nlsr',      u'Named Data Link State Routing daemon', None, 1),
-    ('manpages/nlsr.conf', 'nlsr.conf', u'Named Data Link State Routing daemon configuration file', None, 5),
-    ('manpages/nlsrc',     'nlsrc',     u'command-line utility to interact with and collect statistics from NLSR', None, 1),
+    ('manpages/nlsr',      'nlsr',      'Named Data Link State Routing daemon', [], 1),
+    ('manpages/nlsr.conf', 'nlsr.conf', 'Named Data Link State Routing daemon configuration file', [], 5),
+    ('manpages/nlsrc',     'nlsrc',     'command-line utility to interact with and collect statistics from NLSR', [], 1),
 ]
 
-# If true, show URL addresses after external links.
-#man_show_urls = True
 
-
-# -- Custom options ----------------------------------------------------------
+# -- Misc options ------------------------------------------------------------
 
 doxylink = {
     'nlsr': ('NLSR.tag', 'doxygen/'),
 }
 
 extlinks = {
-    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #'),
+    'issue': ('https://redmine.named-data.net/issues/%s', 'issue #%s'),
 }
