diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7801b3e5c3158e9034361f6439b8f8cda82d6248..541fa7994661bd9466244c8329d09e9f1eb2d46b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,7 +25,7 @@ include(PROMOD3)
 # versioning info
 set(PROMOD3_VERSION_MAJOR 3)
 set(PROMOD3_VERSION_MINOR 4)
-set(PROMOD3_VERSION_PATCH 1)
+set(PROMOD3_VERSION_PATCH 2)
 set(PROMOD3_VERSION_STRING ${PROMOD3_VERSION_MAJOR}.${PROMOD3_VERSION_MINOR})
 set(PROMOD3_VERSION_STRING ${PROMOD3_VERSION_STRING}.${PROMOD3_VERSION_PATCH})
 
@@ -103,7 +103,7 @@ if(NOT DISABLE_DOCUMENTATION)
   # this URL should always point to the latest version of OST
   set(OST_DOC_URL "https://www.openstructure.org/docs")
 endif()
-find_package(OPENSTRUCTURE 2.8.0 REQUIRED
+find_package(OPENSTRUCTURE 2.9.1 REQUIRED
              COMPONENTS io mol seq seq_alg mol_alg conop img mol_mm)
 
 if(CMAKE_COMPILER_IS_GNUCXX)
diff --git a/container/Dockerfile b/container/Dockerfile
index e7d4aff5dd1adeb7d7f5e318e21b2563845598c6..7d7789a6a50e34c88513a2853d8b7a8183b51f10 100644
--- a/container/Dockerfile
+++ b/container/Dockerfile
@@ -1,9 +1,9 @@
-ARG OPENSTRUCTURE_IMAGE_TAG="2.8.0-jammy"
+ARG OPENSTRUCTURE_IMAGE_TAG="2.9.1-jammy"
 FROM registry.scicore.unibas.ch/schwede/openstructure:${OPENSTRUCTURE_IMAGE_TAG}
 
 # ARGUMENTS
 ###########
-ARG PROMOD_VERSION="3.4.1"
+ARG PROMOD_VERSION="3.4.2"
 ARG SRC_FOLDER="/usr/local/src"
 
 
diff --git a/container/Singularity b/container/Singularity
index a1f143bcdf9b21ff1563b96c86d31afa70ace793..fe4bf29ba1cfb434c8e2cc1ee0f05fb6f0732359 100644
--- a/container/Singularity
+++ b/container/Singularity
@@ -1,5 +1,5 @@
 BootStrap: docker
-From: registry.scicore.unibas.ch/schwede/promod3:3.4.1-OST2.8.0-jammy
+From: registry.scicore.unibas.ch/schwede/promod3:3.4.2-OST2.9.1-jammy
 %post
 ##############################################################################
 # POST
diff --git a/doc/conf.py.in b/doc/conf.py.in
index 190df97d5049724def1a55d450e8adb407cc0956..b1aa14c615689a2907b1c7fd7ac3a9f8ea6142b2 100644
--- a/doc/conf.py.in
+++ b/doc/conf.py.in
@@ -286,7 +286,7 @@ rst_epilog = """
 .. |cmake| replace:: CMake
 .. |ost_l| replace:: OpenStructure
 .. |ost_s| replace:: OST
-.. |ost_version| replace:: 2.8.0
+.. |ost_version| replace:: 2.9.1
 .. |python| replace:: Python
 .. |sphinx| replace:: Sphinx
 .. _sphinx: http://sphinx-doc.org/
diff --git a/modelling/pymod/_pipeline.py b/modelling/pymod/_pipeline.py
index db7fc2ad4b7d8cafcf530a17695ee3fae2113f68..1302bcf56d5e880f148d921062e23909ad945553 100644
--- a/modelling/pymod/_pipeline.py
+++ b/modelling/pymod/_pipeline.py
@@ -183,7 +183,7 @@ def _GetSimEntity(sim):
 
 def BuildSidechains(mhandle, merge_distance=4, fragment_db=None,
                     structure_db=None, torsion_sampler=None,
-                    rotamer_library=None):
+                    rotamer_library=None, keep_sidechains=True):
     '''Build sidechains for model.
 
     This is a wrapper for :func:`promod3.modelling.ReconstructSidechains`, 
@@ -213,7 +213,12 @@ def BuildSidechains(mhandle, merge_distance=4, fragment_db=None,
                             :func:`modelling.ReconstructSidechains`, a default 
                             one is loaded if None.
     :type rotamer_library:  :class:`~promod3.sidechain.RotamerLib` or
-                            :class:`~promod3.sidechain.BBDepRotamerLib` 
+                            :class:`~promod3.sidechain.BBDepRotamerLib`
+    :param keep_sidechains: Used as parameter for
+                            :func:`~promod3.modelling.ReconstructSidechains`,
+                            controls if complete sidechains in *mhandle* should
+                            be kept and not re-modelled.
+    :type keep_sidechains:  :class:`bool`
     '''
     prof = core.StaticRuntimeProfiler.StartScoped('pipeline::BuildSidechains')
     ost.LogInfo("Rebuilding sidechains.")
@@ -246,7 +251,7 @@ def BuildSidechains(mhandle, merge_distance=4, fragment_db=None,
         FillLoopsByDatabase(mhandle, fragment_db, structure_db,
                             torsion_sampler, ring_punch_detection=2)
         # re-build sidechains
-        ReconstructSidechains(mhandle.model, keep_sidechains=True,
+        ReconstructSidechains(mhandle.model, keep_sidechains=keep_sidechains,
                               rotamer_library=rotamer_library)
         # restore gaps
         mhandle.gaps = StructuralGapList()