diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 6d7accf180a0a56e4514ceebeb6cc3686100846b..6ef62cbcb205cf17c31bc43db4b2df091785feef 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -1,4 +1,4 @@
-Changes in Release 2.x.x
+Changes in Release 2.2.0
 --------------------------------------------------------------------------------
 
  * Introduced CreateMeanlDDTHA function to evaluate the consistency of a
@@ -8,6 +8,7 @@ Changes in Release 2.x.x
    own code. You might have to adapt CMake flags when building OpenStructure to 
    variables specified here: 
    https://cmake.org/cmake/help/latest/module/FindPython.html
+ * Update container base image from ubuntu:18.04 to ubuntu:20.04
  * Several minor bug fixes and improvements.
 
 Changes in Release 2.1.0
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8809e117683a52d1825ff124dad9b0991d8655b4..e64a83ad54034fb980330ad8963416b443748bca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,7 +14,7 @@ cmake_policy(SET CMP0060 NEW)
 project(OpenStructure CXX C)
 set (CMAKE_EXPORT_COMPILE_COMMANDS 1)
 set (OST_VERSION_MAJOR 2)
-set (OST_VERSION_MINOR 1)
+set (OST_VERSION_MINOR 2)
 set (OST_VERSION_PATCH 0)
 set (OST_VERSION_STRING ${OST_VERSION_MAJOR}.${OST_VERSION_MINOR}.${OST_VERSION_PATCH} )
 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/cmake_support)
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 7691651ae789cb6ae86da198f7ca719a624d8e74..b49e2e4e6ab655ea76c13ab7aebfedc277216685 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,8 +1,8 @@
-FROM ubuntu:18.04
+FROM ubuntu:20.04
 
 # ARGUMENTS
 ###########
-ARG OPENSTRUCTURE_VERSION="2.1.0"
+ARG OPENSTRUCTURE_VERSION="2.2.0"
 ARG SRC_FOLDER="/usr/local/src"
 ARG CPUS_FOR_MAKE=2
 ARG MSMS_VERSION="2.6.1"
@@ -98,7 +98,7 @@ RUN cd ${SRC_FOLDER} && \
 #############
 WORKDIR /home
 ENV OST_ROOT="/usr/local"
-ENV PYTHONPATH="/usr/local/lib64/python3.6/site-packages"
+ENV PYTHONPATH="/usr/local/lib64/python3.8/site-packages"
 ENV LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib64:/usr/local/openmm/lib/"
 ENV QT_X11_NO_MITSHM=1
 ENV OPENSTRUCTURE_VERSION=$OPENSTRUCTURE_VERSION
diff --git a/modules/bindings/pymod/dssp.py b/modules/bindings/pymod/dssp.py
index a31a6cebe3d6487b1d14049a5402e3d995cd33a9..d52b494128e193a12ef57a75b534a0c7543b2fae 100644
--- a/modules/bindings/pymod/dssp.py
+++ b/modules/bindings/pymod/dssp.py
@@ -110,6 +110,7 @@ def AssignDSSP(ent, pdb_path="", extract_burial_status=False, tmp_dir=None,
   # are handled in the parser LoadDSSP)
   temp_dssp_path=_ExecuteDSSP(pdb_path, dssp_bin)
   if not os.path.exists(temp_dssp_path):
+    _Cleanup(pdb_path, temp_dssp_path, entity_saved)
     raise RuntimeError('DSSP output file does not exist.')
   # assign DSSP to entity
   try:
diff --git a/modules/doc/install.rst b/modules/doc/install.rst
index a328ac2f348c3dba6aaac3a81a606f3ec66ad293..a2820d768c78e7c5bc00a1a2243ceac7021ea059 100644
--- a/modules/doc/install.rst
+++ b/modules/doc/install.rst
@@ -341,9 +341,9 @@ OpenStructure.
 
 `Homebrew <https://brew.sh/>`_ can be used to conveniently install all
 dependencies. The current Python version, as of writing these instructions, is
-3.8.5 but works so far. Boost comes as 1.73.0 which seems to be OK. Do not
+3.9.0 but works so far. Boost comes as 1.74.0 which seems to be OK. Do not
 forget to also install `boost-python3` (your system may have a lower version of
-Python than 3.8.5 but it seems like `boost-python3` was compiled for 3.8.5).
+Python than 3.9.0 but it seems like `boost-python3` was compiled for 3.9.0).
 Eigen and SQLite also seem to be unproblematic concerning higher version numbers.
 
 If you want to build the info module or the graphical user interface, make sure
@@ -373,11 +373,11 @@ C flags:
 
 .. code-block:: bash
 
-  cmake . -DPython_INCLUDE_DIR=/usr/local/opt/python@3.8/Frameworks/\
-  Python.framework/Versions/Current/include/python3.8/ \
-          -DPython_LIBRARY=/usr/local/opt/python@3.8/Frameworks/\
-  Python.framework/Versions/Current/lib/libpython3.8.dylib \
-          -DPython_ROOT_DIR=/usr/local/opt/python@3.8/ \
+  cmake . -DPython_INCLUDE_DIRS=/usr/local/opt/python@3.9/Frameworks/\
+  Python.framework/Versions/Current/include/python3.9/ \
+          -DPython_LIBRARIES=/usr/local/opt/python@3.9/Frameworks/\
+  Python.framework/Versions/Current/lib/libpython3.9.dylib \
+          -DPython_ROOT_DIR=/usr/local/opt/python@3.9/ \
           -DBOOST_ROOT=/usr/local \
           -DSYS_ROOT=/usr/local \
           -DOPTIMIZE=ON \
diff --git a/scripts/bump-version.py b/scripts/bump-version.py
index 25873539b389ad80b481086c7f23e50751e637ce..8e28ebad174e442d5c7bab79c4fc344cb63fa2d8 100755
--- a/scripts/bump-version.py
+++ b/scripts/bump-version.py
@@ -42,6 +42,6 @@ lines = open(vfile).readlines()
 for i, line in enumerate(lines):
   if line.startswith("From: registry.scicore.unibas.ch/schwede/openstructure:"):
     lines[i] = 'From: registry.scicore.unibas.ch/schwede/openstructure:'+\
-      '%s' % version_string
+      '%s\n' % version_string
     break
 open(vfile, "w").writelines(lines)
diff --git a/singularity/Singularity b/singularity/Singularity
index 9aa5176634186bfea200cc4fb2efaa60b3700ad2..c36ec32d9f843842586c5415375a47a6d4118a21 100644
--- a/singularity/Singularity
+++ b/singularity/Singularity
@@ -1,5 +1,5 @@
 BootStrap: docker
-From: registry.scicore.unibas.ch/schwede/openstructure:2.1.0-bionic
+From: registry.scicore.unibas.ch/schwede/openstructure:2.2.0-focal
 %post
 ##############################################################################
 # POST
@@ -54,7 +54,7 @@ cat > $JUPYTER_PATH/kernels/ost-kernel/kernel.json <<EOF
     "-m", "ipykernel",
         "-f", "{connection_file}",
     "--InteractiveShellApp.exec_PYTHONSTARTUP=False",
-    "--InteractiveShellApp.exec_files=['/usr/local/lib64/python3.6/site-packages/ost/ost_startup.py']"
+    "--InteractiveShellApp.exec_files=['/usr/local/lib64/python3.8/site-packages/ost/ost_startup.py']"
   ],
   "env": {
   }
@@ -176,7 +176,7 @@ goes to CWD. Thus this sould work as expected out of the box.
 # NOTEBOOK ENV
 ##############################################################################
 export DNG_ROOT=$OST_ROOT
-export DNG_INITDIR=${DNG_ROOT}/lib64/python3.6/site-packages/ost
+export DNG_INITDIR=${DNG_ROOT}/lib64/python3.8/site-packages/ost
 
 
 %apprun IPython