diff --git a/dev-requirements.txt b/dev-requirements.txt
index f429e8cc7..f6c0b5d12 100644
--- a/dev-requirements.txt
+++ b/dev-requirements.txt
@@ -9,8 +9,8 @@ pytest-flask==0.15.0
 moto==0.4.5
 sphinxcontrib-httpdomain==1.3.0
 
-codacy-coverage==1.3.11
-Sphinx==1.6.5
+codacy-coverage
+Sphinx==4.1.2
 sphinx_rtd_theme
 flasgger==0.9.1
 -e git+https://git@github.com/uc-cdis/cdisutils-test.git@1.0.0#egg=cdisutilstest
diff --git a/docs/api_reference/sheepdog.auth.rst b/docs/api_reference/sheepdog.auth.rst
index 9cbae8afd..10d01a7db 100644
--- a/docs/api_reference/sheepdog.auth.rst
+++ b/docs/api_reference/sheepdog.auth.rst
@@ -6,18 +6,3 @@
     :undoc-members:
     :show-inheritance:
 
-``sheepdog.auth.auth_driver``
------------------------------
-
-.. automodule:: sheepdog.auth.auth_driver
-    :members:
-    :undoc-members:
-    :show-inheritance:
-
-``sheepdog.auth.federated_user``
---------------------------------
-
-.. automodule:: sheepdog.auth.federated_user
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/api_reference/sheepdog.dictionary.rst b/docs/api_reference/sheepdog.dictionary.rst
deleted file mode 100644
index d9def4794..000000000
--- a/docs/api_reference/sheepdog.dictionary.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-``sheepdog.dictionary``
-=======================
-
-.. automodule:: sheepdog.dictionary
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/api_reference/sheepdog.models.rst b/docs/api_reference/sheepdog.models.rst
deleted file mode 100644
index 945c5f216..000000000
--- a/docs/api_reference/sheepdog.models.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-``sheepdog.models``
-===================
-
-.. automodule:: sheepdog.models
-    :members:
-    :undoc-members:
-    :show-inheritance:
diff --git a/docs/api_reference/sheepdog.rst b/docs/api_reference/sheepdog.rst
index 27a4092c0..531e1777e 100644
--- a/docs/api_reference/sheepdog.rst
+++ b/docs/api_reference/sheepdog.rst
@@ -2,10 +2,8 @@
 
     sheepdog.auth
     sheepdog.blueprint
-    sheepdog.dictionary
     sheepdog.errors
     sheepdog.globals
-    sheepdog.models
     sheepdog.transactions
     sheepdog.utils
 
diff --git a/docs/api_reference/substitutions.rst b/docs/api_reference/substitutions.rst
index e1033ce49..3581d93cc 100644
--- a/docs/api_reference/substitutions.rst
+++ b/docs/api_reference/substitutions.rst
@@ -21,4 +21,4 @@
 
 .. |resheader_Content-Type| replace::
     Will be ``application/json`` or ``application/xml`` depending on
-    :mailheader:`Accept` header.
\ No newline at end of file
+    :mailheader: `Accept` header.
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
index 58ca7add0..ff047716a 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -12,9 +12,9 @@
 # All configuration values have a default; values that are commented out
 # serve to show the default.
 
-import sys
-import os
-import shlex
+import sys  # pylint: disable=W0611
+import os  # pylint: disable=W0611
+import shlex  # pylint: disable=W0611
 
 # 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
@@ -54,7 +54,7 @@
 
 # General information about the project.
 project = "sheepdog"
-copyright = "2017, Center for Data Intensive Science"
+copyright = "2017, Center for Data Intensive Science"  # pylint: disable=W0622
 author = "Center for Data Intensive Science"
 
 # The version info for the project you're documenting, acts as replacement for
@@ -148,7 +148,7 @@
 # Add any paths that contain custom static files (such as style sheets) here,
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ["_static"]
+# html_static_path = ["_static"]
 
 # Add any extra paths that contain custom files (such as robots.txt or
 # .htaccess) here, relative to this directory. These files are copied
@@ -215,7 +215,8 @@
 
 
 def setup(app):
-    app.add_stylesheet("custom.css")
+    # https://www.sphinx-doc.org/en/master/extdev/appapi.html?highlight=add_css_files#sphinx.application.Sphinx.add_css_file
+    app.add_css_file("custom.css")
 
 
 # -- Options for LaTeX output ---------------------------------------------
diff --git a/docs/requests/index.rst b/docs/requests/index.rst
index 8de82739c..5fcbfbf44 100644
--- a/docs/requests/index.rst
+++ b/docs/requests/index.rst
@@ -122,7 +122,7 @@ success.
             'message': string,
         }
 
-For a listing of the types of errors, see :ref:`label-error-types`.
+For a listing of the types of errors, see :ref: `label-error-types`.
 
 **created_entitiy_count**
     The number of entities created by the transaction.
@@ -170,4 +170,4 @@ API responses will contain a status for each entity specified in the request:
     validation or an internal error occured when attempting to complete
     the transaction. The ``error`` state will be accompanied by a list
     of errors recorded about the entity (see
-    :ref:`label-error-messages`).
+    :ref: `label-error-messages`).