diff --git a/centos/Dockerfile b/centos/Dockerfile
index 2b748b1f7fd0075171d09dea822b655239a17e31..d390c51bc8edcac7fcfe969102061a25b9c153ae 100644
--- a/centos/Dockerfile
+++ b/centos/Dockerfile
@@ -4,7 +4,7 @@ FROM centos:7
 LABEL maintainer="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
 LABEL authors="Moritz Maxeiner <moritz.maxeiner@fu-berlin.de>"
 
-ENV BASH_ENV "/etc/profile"
+ENV BASH_ENV="/etc/profile"
 RUN yum install -y \
         centos-release-scl \
         epel-release && \
@@ -35,8 +35,8 @@ ADD bash/toolchain.sh /etc/profile.d/toolchain.sh
 ADD bash/ld-library-path.sh /etc/profile.d/ld-library-path.sh
 
 # CMake
-RUN version=3.19.4 && \
-    yum install -y \
+ARG CMake_VERSION=3.21.2
+RUN yum install -y \
         curl-devel \
         expat-devel \
         zlib-devel \
@@ -49,13 +49,13 @@ RUN version=3.19.4 && \
     yum clean all && \
     source /etc/profile && \
     cd /tmp && \
-    curl -sSLO https://cmake.org/files/v${version%.*}/cmake-${version}.tar.gz && \
-    tar -xf cmake-${version}.tar.gz && \
-    cd cmake-${version} && \
+    curl -sSLO https://cmake.org/files/v${CMake_VERSION%.*}/cmake-${CMake_VERSION}.tar.gz && \
+    tar -xf cmake-${CMake_VERSION}.tar.gz && \
+    cd cmake-${CMake_VERSION} && \
     ./bootstrap --system-libs --no-system-libarchive --no-system-jsoncpp  --prefix=/usr/local && \
     make install -j$(nproc --all) && \
     cd .. && \
-    rm -rf cmake-${version}*
+    rm -rf cmake-${CMake_VERSION}*
 
 # Ninja
 RUN yum install -y ninja-build && \
@@ -70,8 +70,8 @@ RUN yum install -y \
     yum clean all
 
 # FFmpeg
-RUN version=4.2.4 && \
-    yum install -y \
+ARG FFmpeg_VERSION=4.2.4
+RUN yum install -y \
         nasm \
         libass-devel \
         libtheora-devel \
@@ -87,52 +87,118 @@ RUN version=4.2.4 && \
     make install && \
     cd .. && \
     rm -rf nv-codec-headers && \
-    curl -sSLO http://ffmpeg.org/releases/ffmpeg-${version}.tar.gz && \
-    tar -xf ffmpeg-${version}.tar.gz && \
-    cd ffmpeg-${version} && \
+    curl -sSLO http://ffmpeg.org/releases/ffmpeg-${FFmpeg_VERSION}.tar.gz && \
+    tar -xf ffmpeg-${FFmpeg_VERSION}.tar.gz && \
+    cd ffmpeg-${FFmpeg_VERSION} && \
     ./configure --prefix=/usr/local --enable-gpl --enable-nvenc --enable-libfreetype --enable-avresample --enable-shared --disable-static --enable-pic && \
     make install && \
     cd .. && \
-    rm -rf ffmpeg-${version}*
+    rm -rf ffmpeg-${FFmpeg_VERSION}*
 
 # HDF
-RUN version=1.10.7 && \
-    yum install -y \
+ARG HDF_VERSION=1.10.7
+RUN yum install -y \
         bzip2 \
         && \
     yum clean all && \
     source /etc/profile && \
     cd /tmp && \
-    curl -sSLO https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${version%.*}/hdf5-${version}/src/hdf5-${version}.tar.bz2 && \
-    tar -xf hdf5-${version}.tar.bz2 && \
-    cd hdf5-${version} && \
+    curl -sSLO https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-${HDF_VERSION%.*}/hdf5-${HDF_VERSION}/src/hdf5-${HDF_VERSION}.tar.bz2 && \
+    tar -xf hdf5-${HDF_VERSION}.tar.bz2 && \
+    cd hdf5-${HDF_VERSION} && \
     cmake -S. -B build  -G Ninja \
         -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
         && \
     ninja -C build install && \
     cd .. && \
-    rm -rf hdf5-${version}*
+    rm -rf hdf5-${HDF_VERSION}*
 
 # Qt
-ENV Qt5_DIR /opt/qt5/5.12.10/gcc_64/lib/cmake/Qt5
-ADD qtifwsilent.qs /tmp/qtifwsilent.qs
-RUN version=5.12.10 && \
-    yum install -y \
-        libxkbcommon-x11 \
-        pulseaudio-libs \
+ARG Qt5_VERSION=5.15.2
+RUN yum install -y \
+        alsa-lib-devel \
+        at-spi2-atk-devel \
+        bison \
+        bluez-libs-devel \
+        clang-devel \
+        cups-devel \
+        dbus-devel \
+        double-conversion-devel \
+        egl-wayland-devel \
+        flex \
+        flite-devel \
+        fontconfig-devel \
+        freeglut-devel \
+        freetype-devel \
+        gperf \
+        gstreamer-plugins-base-devel \
+        gstreamer1-devel \
+        gstreamer1-plugins-base-devel \
+        gtk3-devel \
+        harfbuzz-devel \
+        jasper-devel \
+        libcap-devel \
+        libdc1394-devel \
+        libicu-devel \
+        libinput-devel \
+        libjpeg-turbo-devel \
+        libmng-devel \
+        libpng-devel \
+        libticonv-devel \
+        libtiff-devel \
+        libv4l-devel \
+        libwebp-devel \
+        libxcb \
+        libxcb-devel \
+        libXcomposite-devel \
+        libXcursor-devel \
+        libxkbcommon-devel \
+        libxkbcommon-x11-devel \
+        libXrandr-devel \
+        libxslt-devel \
+        libXtst-devel \
+        libzstd-devel \
+        llvm-devel \
+        mesa-libEGL-devel \
+        mesa-libgbm-devel \
+        mesa-libGL-devel \
+        nspr-devel \
+        nss-devel \
+        openssl11-devel \
+        pciutils-devel \
+        pcre2-devel \
+        postgresql-devel \
+        pulseaudio-libs-devel \
         pulseaudio-libs-glib2 \
-        gstreamer1-plugins-base \
+        ruby \
+        speech-dispatcher-devel \
+        tesseract-devel \
+        tslib-devel \
+        vulkan-devel \
+        wayland-devel \
+        xcb-util \
+        xcb-util-devel \
+        xcb-util-image-devel \
+        xcb-util-keysyms-devel \
+        xcb-util-renderutil-devel \
+        xcb-util-wm-devel \
         && \
     yum clean all && \
-    echo -e "\n127.0.0.1 iapi.qt.io\n::1 iapi.qt.io" >> /etc/hosts && \
     source /etc/profile && \
-    cd /tmp && \
-    curl -sSLO https://download.qt.io/official_releases/qt/${version%.*}/${version}/qt-opensource-linux-x64-${version}.run && \
-    chmod +x qt-opensource-linux-x64-${version}.run && \
-    env QT_INSTALL_DIR=/opt/qt5 ./qt-opensource-linux-x64-${version}.run --verbose --script qtifwsilent.qs -platform minimal && \
-    rm -f qt-opensource-linux-x64-${version}.run && \
-    rm -f qtifwsilent.qs && \
-    echo "/opt/qt5/${version}/gcc_64/lib" > /etc/ld.so.conf.d/qt5.conf
+    source scl_source enable devtoolset-8 && \
+    cd /opt && \
+    curl -sSLO https://download.qt.io/official_releases/qt/${Qt5_VERSION%.*}/${Qt5_VERSION}/single/qt-everywhere-src-${Qt5_VERSION}.tar.xz && \
+    tar -xf qt-everywhere-src-${Qt5_VERSION}.tar.xz && \
+    cd qt-everywhere-src-${Qt5_VERSION} && \
+    mkdir build && \
+    cd build && \
+    ../configure -prefix "/opt/qt5/${Qt5_VERSION}" -opensource -confirm-license -no-feature-qdoc -skip qtwebengine -xcb -xcb-xlib -xcb-native-painting -openssl OPENSSL_INCDIR=/usr/include/openssl11 OPENSSL_LIBDIR=/usr/lib64/openssl11 && \
+    make -j $(nproc) && \
+    make install && \
+    cd ../.. && \
+    rm -rf qt-everywhere-src-${Qt5_VERSION}* && \
+    echo "/opt/qt5/${Qt5_VERSION}/lib" > /etc/ld.so.conf.d/qt5.conf
+ENV Qt5_DIR=/opt/qt5/${Qt5_VERSION}/lib/cmake/Qt5
 
 # linuxdeployqt
 RUN version=6 && \
@@ -148,10 +214,11 @@ RUN version=6 && \
     ln -s /opt/linuxdeployqt-${version}/AppRun /usr/local/bin/linuxdeployqt
 
 # Boost
+ARG Boost_VERSION=1.73.0
 RUN cd /tmp && \
-    curl -sSLO https://boostorg.jfrog.io/artifactory/main/release/1.73.0/source/boost_1_73_0.tar.gz && \
-    tar -xf boost_1_73_0.tar.gz && \
-    cd boost_1_73_0 && \
+    curl -sSLO https://boostorg.jfrog.io/artifactory/main/release/${Boost_VERSION}/source/boost_${Boost_VERSION//./_}.tar.gz && \
+    tar -xf boost_${Boost_VERSION//./_}.tar.gz && \
+    cd boost_${Boost_VERSION//./_} && \
     ./bootstrap.sh \
         --prefix=/opt/boost && \
     ./b2 install \
@@ -165,21 +232,21 @@ RUN cd /tmp && \
     ldconfig
 
 # fmt
-RUN version=7.1.0 && \
-    cd /tmp && \
-    curl -sSLO https://github.com/fmtlib/fmt/releases/download/${version}/fmt-${version}.zip && \
-    unzip fmt-${version}.zip && \
-    cd fmt-${version} && \
+ARG fmt_VERSION=7.1.0
+RUN cd /tmp && \
+    curl -sSLO https://github.com/fmtlib/fmt/releases/download/${fmt_VERSION}/fmt-${fmt_VERSION}.zip && \
+    unzip fmt-${fmt_VERSION}.zip && \
+    cd fmt-${fmt_VERSION} && \
     cmake -S. -B build -G Ninja \
         -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \
         && \
     ninja -C build install && \
     cd .. && \
-    rm -rf fmt-${version}*
+    rm -rf fmt-${fmt_VERSION}*
 
 # OpenCV
-RUN version=4.5.0 && \
-    yum install -y \
+ARG OpenCV_VERSION=4.5.0
+RUN yum install -y \
         libpng-devel \
         jasper-devel \
         libwebp-devel \
@@ -200,16 +267,16 @@ RUN version=4.5.0 && \
     source /etc/profile && \
     source scl_source enable devtoolset-8 && \
     cd /tmp && \
-    curl -sSL -o opencv-${version}.zip https://github.com/opencv/opencv/archive/${version}.zip && \
-    unzip opencv-${version}.zip && \
-    curl -sSL -o opencv_contrib-${version}.zip https://github.com/opencv/opencv_contrib/archive/${version}.zip && \
-    unzip opencv_contrib-${version}.zip && \
-    cd opencv-${version} && \
+    curl -sSL -o opencv-${OpenCV_VERSION}.zip https://github.com/opencv/opencv/archive/${OpenCV_VERSION}.zip && \
+    unzip opencv-${OpenCV_VERSION}.zip && \
+    curl -sSL -o opencv_contrib-${OpenCV_VERSION}.zip https://github.com/opencv/opencv_contrib/archive/${OpenCV_VERSION}.zip && \
+    unzip opencv_contrib-${OpenCV_VERSION}.zip && \
+    cd opencv-${OpenCV_VERSION} && \
     export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig && \
     cmake -S. -B build -G Ninja \
         -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local \
         -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3 \
-        -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-${version}/modules \
+        -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv_contrib-${OpenCV_VERSION}/modules \
         -D ENABLE_CXX11=ON \
         -D BUILD_EXAMPLES=OFF \
         -D BUILD_PACKAGE=OFF \
@@ -250,10 +317,10 @@ RUN version=4.5.0 && \
         && \
     ninja -C build install && \
     cd .. && \
-    rm -rf opencv-${version}* opencv_contrib-${version}*
+    rm -rf opencv-${OpenCV_VERSION}* opencv_contrib-${OpenCV_VERSION}*
 
 # MXNet
-ENV MXNet_DIR /opt/mxnet-1.6.0
+ENV MXNet_DIR=/opt/mxnet-1.6.0
 ADD patches/mxnet-1.6.0-manual-cuda-arch-flags.patch /opt/mxnet-1.6.0-manual-cuda-arch-flags.patch
 RUN version=1.6.0 && \
     source /etc/profile && \
@@ -285,44 +352,44 @@ RUN version=1.6.0 && \
     ninja -C build
 
 # pybind11
-RUN version=2.6.0 && \
-    source /etc/profile && \
+ARG pybind11_VERSION=2.7.1
+RUN source /etc/profile && \
     cd /tmp && \
-    curl -sSL -o pybind11-${version}.tar.gz https://github.com/pybind/pybind11/archive/v${version}.tar.gz && \
-    tar -xf pybind11-${version}.tar.gz && \
-    cd pybind11-${version} && \
+    curl -sSL -o pybind11-${pybind11_VERSION}.tar.gz https://github.com/pybind/pybind11/archive/v${pybind11_VERSION}.tar.gz && \
+    tar -xf pybind11-${pybind11_VERSION}.tar.gz && \
+    cd pybind11-${pybind11_VERSION} && \
     cmake -S. -B build -G Ninja \
         -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
         -DPYBIND11_TEST=off \
         && \
     ninja -C build install && \
     cd .. && \
-    rm -rf pybind11-${version}*
+    rm -rf pybind11-${pybind11_VERSION}*
 
 # pylon (Basler cameras)
-RUN version=5.2.0.13457 && \
-    cd /tmp && \
-    curl -sSLO https://www.baslerweb.com/fp-1551786516/media/downloads/software/pylon_software/pylon-${version}-x86_64.tar.gz && \
-    tar -xf pylon-${version}-x86_64.tar.gz && \
-    cd pylon-${version}-x86_64 && \
-    tar -xf pylonSDK-${version}-x86_64.tar.gz && \
+ARG pylon_VERSION=5.2.0.13457
+RUN cd /tmp && \
+    curl -sSLO https://www.baslerweb.com/fp-1551786516/media/downloads/software/pylon_software/pylon-${pylon_VERSION}-x86_64.tar.gz && \
+    tar -xf pylon-${pylon_VERSION}-x86_64.tar.gz && \
+    cd pylon-${pylon_VERSION}-x86_64 && \
+    tar -xf pylonSDK-${pylon_VERSION}-x86_64.tar.gz && \
     mv pylon5 /opt/pylon5 && \
     cd .. && \
-    rm -rf pylon-${version}*
+    rm -rf pylon-${pylon_VERSION}*
 ADD bash/pylon.sh /etc/profile.d/pylon.sh
 
 # CGAL
-RUN version=5.2 && \
-    yum install -y \
+ARG CGAL_VERSION=5.2
+RUN yum install -y \
         gmp-devel \
         mpfr-devel \
         && \
     yum clean all && \
     source /etc/profile && \
     cd /tmp && \
-    curl -sSLO https://github.com/CGAL/cgal/releases/download/v${version}/CGAL-${version}.tar.xz && \
-    tar -xf CGAL-${version}.tar.xz && \
-    cd CGAL-${version} && \
+    curl -sSLO https://github.com/CGAL/cgal/releases/download/v${CGAL_VERSION}/CGAL-${CGAL_VERSION}.tar.xz && \
+    tar -xf CGAL-${CGAL_VERSION}.tar.xz && \
+    cd CGAL-${CGAL_VERSION} && \
     cmake -S. -B build -G Ninja \
         -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
         -DCGAL_INSTALL_LIB_DIR=lib -DCGAL_INSTALL_CMAKE_DIR="lib/cmake/CGAL" \
@@ -330,13 +397,13 @@ RUN version=5.2 && \
         && \
     ninja -C build install && \
     cd .. && \
-    rm -rf CGAL-${version}*
+    rm -rf CGAL-${CGAL_VERSION}*
 
 # glm
-RUN version=0.9.9.8 && \
-    cd /tmp && \
-    curl -sSLO https://github.com/g-truc/glm/releases/download/${version}/glm-${version}.zip && \
-    unzip glm-${version}.zip && \
+ARG glm_VERSION=0.9.9.8
+RUN cd /tmp && \
+    curl -sSLO https://github.com/g-truc/glm/releases/download/${glm_VERSION}/glm-${glm_VERSION}.zip && \
+    unzip glm-${glm_VERSION}.zip && \
     mv glm /opt/glm && \
     rm -rf glm* && \
     echo "export glm_DIR=/opt/glm/cmake/glm" > /etc/profile.d/glm.sh
@@ -488,60 +555,3 @@ RUN python3.9 -m pip --no-cache-dir install -U pip && \
         pandas \
         h5py \
         deprecation
-        
-
-# xsimd
-RUN name=xsimd && \
-    version=7.4.9 && \
-    cd /tmp && \
-    curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \
-    tar -xf ${name}-${version}.tar.gz && \
-    cd ${name}-${version} && \
-    cmake -S. -B build -G Ninja \
-        -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
-        && \
-    ninja -C build install && \
-    cd .. && \
-    rm -rf ${name}-${version}*
-
-# xtl
-RUN name=xtl && \
-    version=0.7.0 && \
-    cd /tmp && \
-    curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \
-    tar -xf ${name}-${version}.tar.gz && \
-    cd ${name}-${version} && \
-    cmake -S. -B build -G Ninja \
-        -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
-        && \
-    ninja -C build install && \
-    cd .. && \
-    rm -rf ${name}-${version}*
-
-# xtensor
-RUN name=xtensor && \
-    version=0.23.0 && \
-    cd /tmp && \
-    curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \
-    tar -xf ${name}-${version}.tar.gz && \
-    cd ${name}-${version} && \
-    cmake -S. -B build -G Ninja \
-        -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
-        && \
-    ninja -C build install && \
-    cd .. && \
-    rm -rf ${name}-${version}*
-
-# xtensor-python
-RUN name=xtensor-python && \
-    version=0.25.0 && \
-    cd /tmp && \
-    curl -sSL https://github.com/xtensor-stack/${name}/archive/${version}.tar.gz -o ${name}-${version}.tar.gz && \
-    tar -xf ${name}-${version}.tar.gz && \
-    cd ${name}-${version} && \
-    cmake -S. -B build -G Ninja \
-        -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local \
-        && \
-    ninja -C build install && \
-    cd .. && \
-    rm -rf ${name}-${version}*
diff --git a/centos/qtifwsilent.qs b/centos/qtifwsilent.qs
deleted file mode 100644
index de213aeec8bc2cccfa4d2d5b35b19fb2f3454ff9..0000000000000000000000000000000000000000
--- a/centos/qtifwsilent.qs
+++ /dev/null
@@ -1,51 +0,0 @@
-function Controller() {
-    installer.autoRejectMessageBoxes();
-    installer.installationFinished.connect(function() {
-        gui.clickButton(buttons.NextButton);
-    })
-}
-
-Controller.prototype.WelcomePageCallback = function() {
-    gui.clickButton(buttons.NextButton, 7000);
-}
-
-Controller.prototype.CredentialsPageCallback = function() {
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.IntroductionPageCallback = function() {
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.TargetDirectoryPageCallback = function() {
-    gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.environmentVariable("QT_INSTALL_DIR"));
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ComponentSelectionPageCallback = function() {
-    var widget = gui.currentPageWidget();
-    widget.deselectAll();
-    widget.selectComponent("qt.qt5.51210.gcc_64");
-    widget.selectComponent("qt.qt5.51210.qtcharts");
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.LicenseAgreementPageCallback = function() {
-    gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.StartMenuDirectoryPageCallback = function() {
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.ReadyForInstallationPageCallback = function() {
-    gui.clickButton(buttons.NextButton);
-}
-
-Controller.prototype.FinishedPageCallback = function() {
-    var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;
-    if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox)
-        checkBoxForm.launchQtCreatorCheckBox.checked = false;
-    gui.clickButton(buttons.FinishButton);
-}