diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 76ed2ea2c6a79c66df912ef641037e695e2b2991..b3ce2545281ca03b582588c9fa86587f898fc8d7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -108,14 +108,12 @@ windows:
     - $QT_MSVC_DIR = "C:/Qt/6.2.4/msvc2019_64"
     - $QTCMake_DIR = "$QT_MSVC_DIR/lib/cmake"
     - $BUILD_DIR = "build"
-    - echo "# Pythonpath1 <$Env:PYTHONPATH>"
-    - echo "# CI_PRJ_DIR <$Env:CI_PROJECT_DIR>"
-    - $env:PYTHONPATH += "$CI_PROJECT_DIR/build/lib"
     # change the system PATH temporarily (needed for tests)
+    - $env:PYTHONPATH += "$CI_PROJECT_DIR/build/lib"
     - $env:PATH = "$QT_MSVC_DIR/bin;$env:PATH"
-    - echo "# Pythonpath2 <$Env:PYTHONPATH>"
     # list powershell properties
-    - echo "# Path <$Env:Path>"
+    - echo "# Path '<$Env:Path>'"
+    - echo "# PythonPath '<$Env:PYTHONPATH>'"
     - echo "# Powershell <$PSHOME>`n  PS Profile <$PROFILE>`n  PS Command-Path <$PSCOMMANDPATH>"
     # list all environmental variables
     - 'dir Env:'
diff --git a/App/CMakeLists.txt b/App/CMakeLists.txt
index 29e139099e69775e0c4f25746df2af990faf265c..eda9c53e98a09ea975a64ff9c84df90e5c992bc5 100644
--- a/App/CMakeLists.txt
+++ b/App/CMakeLists.txt
@@ -8,7 +8,7 @@ else()
     set(executable_name bornagain)
 endif()
 
-set(source_files main.cpp AppOptions.cpp MessageHandler.cpp)
+set(source_files main.cpp AppOptions.cpp)
 
 # -----------------------------------------------------------------------------
 # Qt configuration
diff --git a/App/MessageHandler.cpp b/App/MessageHandler.cpp
deleted file mode 100644
index 84c8cc6c447cdc46e59776292c0002119065f72d..0000000000000000000000000000000000000000
--- a/App/MessageHandler.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      App/MessageHandler.cpp
-//! @brief     Implements function MessageHandler
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "App/MessageHandler.h"
-#include <QMessageBox>
-#include <iostream>
-
-//! This is set by main to be the message handler of our GUI.
-void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& msg)
-{
-    switch (type) {
-    case QtDebugMsg:
-        if (msg.size() == 0) // KDE will pass a zero-length msg qstring
-            break;
-        std::cerr << "DEBUG: " << msg.toStdString() << std::endl;
-        break;
-    case QtInfoMsg:
-        std::cerr << "INFO: " << msg.toStdString() << std::endl;
-        break;
-    case QtWarningMsg:
-    default:
-        if (msg.left(4) == "QXcb")
-            return;
-        std::cerr << "WARNING: " << msg.toStdString() << std::endl;
-        // QMessageBox::warning(QApplication::activeWindow(), qAppName(), msg);
-        break;
-    case QtFatalMsg:
-        std::cerr << "FATAL: " << msg.toStdString() << std::endl;
-        qApp->restoreOverrideCursor();
-        QMessageBox msgbox(QMessageBox::Critical, "BornAgain: fatal bug",
-                           "Sorry, you encountered a fatal bug.\n"
-                           "The application will terminate.\n"
-                           "Please note the following and inform the maintainers.\n\n"
-                               + msg + "\n",
-                           QMessageBox::Ok, QApplication::activeWindow());
-        msgbox.exec();
-        qApp->quit();
-        exit(1);
-    }
-}
diff --git a/App/MessageHandler.h b/App/MessageHandler.h
deleted file mode 100644
index cfcd54a0a8787088fbbf3d22a25043420bb635d7..0000000000000000000000000000000000000000
--- a/App/MessageHandler.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      App/MessageHandler.h
-//! @brief     Declares function MessageHandler
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_APP_MESSAGEHANDLER_H
-#define BORNAGAIN_APP_MESSAGEHANDLER_H
-
-#include <QApplication>
-
-void messageHandler(QtMsgType type, const QMessageLogContext&, const QString& msg);
-
-#endif // BORNAGAIN_APP_MESSAGEHANDLER_H
diff --git a/App/main.cpp b/App/main.cpp
index ae887e8c7c33c25bb722c101d37568533113859e..e9fcf9b959faef10283bba009669c87268eb17c1 100644
--- a/App/main.cpp
+++ b/App/main.cpp
@@ -13,7 +13,6 @@
 //  ************************************************************************************************
 
 #include "App/AppOptions.h"
-#include "App/MessageHandler.h"
 #include "Base/Util/Assert.h"
 #include "GUI/Application/ApplicationSettings.h"
 #include "GUI/Support/Util/Path.h"
@@ -21,6 +20,7 @@
 #include "GUI/View/Main/MainWindow.h"
 #include "GUI/View/Tool/Globals.h"
 #include "config_build.h"
+#include <QApplication>
 #include <QDir>
 #include <QIcon>
 #include <QLocale>
@@ -28,15 +28,6 @@
 #include <QMetaType>
 #include <QtGlobal>
 
-auto guiFailedAssertion = [](std::string msg) {
-#ifdef BA_DEBUG
-    std::cerr << "FATAL (catched in debug mode): " << msg << std::endl;
-    std::raise(11); // abort so that we can inspect the backtrace
-#else
-    qFatal("%s", msg.c_str());
-#endif
-};
-
 int main(int argc, char* argv[])
 {
     ApplicationOptions options(argc, argv);
@@ -44,35 +35,46 @@ int main(int argc, char* argv[])
     QLocale::setDefault(QLocale(QLocale::English, QLocale::UnitedStates));
     qRegisterMetaType<QVector<double>>("QVector<double>");
 
-    QApplication app(argc, argv);
-    QApplication::setApplicationName("BornAgain");
-    QApplication::setApplicationVersion(GUI::Util::Path::getBornAgainVersionString());
-    QApplication::setOrganizationName("BornAgain");
+    int ret = -1;
+    try {
+        QApplication app(argc, argv);
+        app.setApplicationName("BornAgain");
+        app.setApplicationVersion(GUI::Util::Path::getBornAgainVersionString());
+        app.setOrganizationName("BornAgain");
 #ifndef Q_OS_MAC
-    QApplication::setWindowIcon(QIcon(":/images/BornAgain.ico"));
+        app.setWindowIcon(QIcon(":/images/BornAgain.ico"));
 #endif
 
-    ApplicationSettings applicationSettings;
-
-    qInstallMessageHandler(messageHandler);
-    failedAssertion = guiFailedAssertion;
+        ApplicationSettings applicationSettings;
 
-    register1DDataLoaders();
+        register1DDataLoaders();
 
-    auto style = applicationSettings.styleToUse();
-    applicationSettings.loadStyle(style);
+        auto style = applicationSettings.styleToUse();
+        applicationSettings.loadStyle(style);
 
-    QString dir = GUI::Util::Path::appDataFolder();
-    if (!QDir().exists(dir))
-        QDir().mkpath(dir);
+        QString dir = GUI::Util::Path::appDataFolder();
+        if (!QDir().exists(dir))
+            QDir().mkpath(dir);
 
-    MainWindow win;
-    GUI::Global::mainWindow = &win;
-    if (options.find("geometry"))
-        win.resize(options.mainWindowSize());
-    if (options.find("project-file"))
-        win.loadProject(options.projectFile());
-    win.show();
+        MainWindow win;
+        GUI::Global::mainWindow = &win;
+        if (options.find("geometry"))
+            win.resize(options.mainWindowSize());
+        if (options.find("project-file"))
+            win.loadProject(options.projectFile());
+        win.show();
 
-    return QApplication::exec();
+        ret = app.exec();
+    } catch (const std::exception& ex) {
+        QApplication app(argc, argv);
+        QMessageBox msgbox(QMessageBox::Critical, "BornAgain: fatal bug",
+                           QString("Sorry, you encountered a fatal bug.\n"
+                                   "The application will terminate.\n"
+                                   "Please note the following and inform the maintainers.\n\n")
+                           + ex.what() + "\n",
+                           QMessageBox::Ok, nullptr);
+        msgbox.exec();
+        return 1;
+    }
+    return ret;
 }
diff --git a/Base/Axis/CustomBinAxis.cpp b/Base/Axis/CustomBinAxis.cpp
index 3dc56d890eb0aed839d998e1afc746fe7b1d9d51..57c0d97aeddd299f0ac5c7cd425e1d851410b6f9 100644
--- a/Base/Axis/CustomBinAxis.cpp
+++ b/Base/Axis/CustomBinAxis.cpp
@@ -50,7 +50,7 @@ CustomBinAxis* CustomBinAxis::clone() const
 Bin1D CustomBinAxis::bin(size_t index) const
 {
     if (index >= m_nbins)
-        throw std::runtime_error("CustomBinAxis::bin() -> called with invalid index >= m_nbins");
+        throw std::runtime_error("CustomBinAxis::bin -> called with invalid index >= m_nbins");
 
     Bin1D result(m_bin_centers[index], m_bin_centers[index]);
     return result;
diff --git a/Base/Axis/FixedBinAxis.cpp b/Base/Axis/FixedBinAxis.cpp
index a543f9d88de91c1d06612a910734666514b5d21c..2aa1fa5b8b8c096e00266d6fe63f324a9e9b66b8 100644
--- a/Base/Axis/FixedBinAxis.cpp
+++ b/Base/Axis/FixedBinAxis.cpp
@@ -44,7 +44,7 @@ double FixedBinAxis::operator[](size_t index) const
 Bin1D FixedBinAxis::bin(size_t index) const
 {
     if (index >= m_nbins)
-        throw std::runtime_error("FixedBinAxis::bin() -> Error. Wrong index.");
+        throw std::runtime_error("FixedBinAxis::bin -> Error. Wrong index.");
 
     double step = (m_end - m_start) / m_nbins;
     Bin1D result(m_start + step * index, m_start + step * (index + 1));
@@ -85,7 +85,7 @@ void FixedBinAxis::clip(double lower, double upper)
 {
     if (lower >= upper)
         throw std::runtime_error(
-            "FixedBinAxis::clip() -> Error. 'lower' should be smaller than 'upper'");
+            "FixedBinAxis::clip -> Error. 'lower' should be smaller than 'upper'");
 
     if (lower < min())
         lower = bin(0).center();
diff --git a/Base/Axis/VariableBinAxis.cpp b/Base/Axis/VariableBinAxis.cpp
index 6acd43084a6cb739ff1a652cf635b7058c50b7e5..60241dce2136da8f9a4eb6ed0a2e89ec5a17694d 100644
--- a/Base/Axis/VariableBinAxis.cpp
+++ b/Base/Axis/VariableBinAxis.cpp
@@ -45,7 +45,7 @@ double VariableBinAxis::operator[](size_t index) const
 Bin1D VariableBinAxis::bin(size_t index) const
 {
     if (index >= m_nbins)
-        throw std::runtime_error("VariableBinAxis::bin() -> Error. Wrong index.");
+        throw std::runtime_error("VariableBinAxis::bin -> Error. Wrong index.");
 
     Bin1D result(m_bin_boundaries[index], m_bin_boundaries[index + 1]);
     return result;
@@ -69,7 +69,7 @@ double VariableBinAxis::binCenter(size_t index) const
 size_t VariableBinAxis::findClosestIndex(double value) const
 {
     if (m_bin_boundaries.size() < 2)
-        throw std::runtime_error("VariableBinAxis::findClosestIndex() -> Error! "
+        throw std::runtime_error("VariableBinAxis::findClosestIndex -> Error! "
                                  "VariableBinAxis not  correctly initialized");
     if (value < min())
         return 0;
@@ -95,7 +95,7 @@ std::vector<double> VariableBinAxis::binCenters() const
 void VariableBinAxis::clip(double lower, double upper)
 {
     if (lower >= upper)
-        throw std::runtime_error("VariableBinAxis::clip() -> Error. "
+        throw std::runtime_error("VariableBinAxis::clip -> Error. "
                                  "'lower' should be smaller than 'upper'");
 
     if (lower < min())
@@ -150,7 +150,7 @@ void VariableBinAxis::setBinBoundaries(const std::vector<double>& bin_boundaries
     std::sort(vec_sorted.begin(), vec_sorted.end());
     for (size_t i = 0; i < bin_boundaries.size(); ++i) {
         if (vec_sorted[i] != bin_boundaries[i])
-            throw std::runtime_error("VariableBinAxis::setBinBoundaries() -> Error. "
+            throw std::runtime_error("VariableBinAxis::setBinBoundaries -> Error. "
                                      "Array with bin edges is not sorted.");
     }
 
@@ -158,7 +158,7 @@ void VariableBinAxis::setBinBoundaries(const std::vector<double>& bin_boundaries
     vec.erase(std::unique(vec.begin(), vec.end()), vec.end());
 
     if (vec.size() != bin_boundaries.size())
-        throw std::runtime_error("VariableBinAxis::setBinBoundaries() -> Error. "
+        throw std::runtime_error("VariableBinAxis::setBinBoundaries -> Error. "
                                  "Array with bin edges contains repeating values.");
 
     m_bin_boundaries = bin_boundaries;
diff --git a/Base/Util/Assert.cpp b/Base/Util/Assert.cpp
deleted file mode 100644
index 39ede6f9478faede379e3e8a51f5155c75d076cd..0000000000000000000000000000000000000000
--- a/Base/Util/Assert.cpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Base/Util/Assert.cpp
-//! @brief     Initializes function failedAssertion
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "Base/Util/Assert.h"
-
-std::function<void(std::string)> failedAssertion = [](std::string msg) {
-    throw std::runtime_error(msg);
-};
diff --git a/Base/Util/Assert.h b/Base/Util/Assert.h
index 1c4a66c3563507d605853a994033d8764050e2ee..0ea4d52899cd0f70c77995a496c85ad31961d528 100644
--- a/Base/Util/Assert.h
+++ b/Base/Util/Assert.h
@@ -19,22 +19,13 @@
 #define BORNAGAIN_BASE_UTIL_ASSERT_H
 
 #include "Wrap/WinDllMacros.h"
-#include <functional>
 #include <string>
 
-// Function called upon failed assert; set in Assert.cpp, overriden by GUI.
-extern BA_BASE_API_ std::function<void(std::string)> failedAssertion;
-
 // ASSERT macro: terminate if condition is false.
 //
 // Implementation notes:
 // - Must be declared as a macro, not a function, so that we can use preprocessor
 //   macros for informative error messages.
-// - Must terminate with a throw statement to  prevent compiler warning -Wreturn-type.
-// - In the GUI, the function pointer failedAssertion will be reset to call qFatal,
-//   which then pops up a message window (as defined by qInstallMessageHandler).
-// - No direct call to qFatal here, because we do not want core to depend on Qt,
-//   lest Python wheel becomes too difficult.
 
 #ifdef BA_DEBUG
 
@@ -42,22 +33,27 @@ extern BA_BASE_API_ std::function<void(std::string)> failedAssertion;
 #include <iostream>
 #define ASSERT(condition)                                                                          \
     if (!(condition)) {                                                                            \
-        std::cerr << "Assertion " << (#condition) << " failed in " << __FILE__ << ", line "        \
-                  << __LINE__ << std::endl;                                                        \
+        std::cerr << "Assertion " #condition " failed in " __FILE__ ", line " << __LINE__          \
+                  << std::endl;                                                                    \
         std::raise(SIGTERM); /* abort so that we can inspect the backtrace */                      \
         throw std::runtime_error("Assertion failed ... and we should never get here");             \
     }
 
 #else
 
-#include <sstream>
+#include <iostream>
 #include <stdexcept>
 #define ASSERT(condition)                                                                          \
     if (!(condition)) {                                                                            \
-        std::stringstream msg;                                                                     \
-        msg << "Assertion " << (#condition) << " failed in " << __FILE__ << ", line " << __LINE__; \
-        failedAssertion(msg.str());                                                                \
-        throw std::runtime_error("Assertion failed ... and we should never get here");             \
+        std::cerr << "Throwing runtime_error: Assertion " #condition " failed in " __FILE__        \
+                     ", line "                                                                     \
+                  << __LINE__ << std::endl;                                                        \
+        throw std::runtime_error("BUG: Assertion " #condition " failed in " __FILE__ ", line "     \
+                                 + std::to_string(__LINE__)                                        \
+                                 + ".\n"                                                           \
+                                   "Please report this to the maintainers:\n"                      \
+                                   "- https://jugit.fz-juelich.de/mlz/bornagain/-/issues/new or\n" \
+                                   "- contact@bornagainproject.org.");                             \
     }
 
 #endif // BA_DEBUG
diff --git a/Device/Detector/IDetector.cpp b/Device/Detector/IDetector.cpp
index ee62bcd9dcf6f16113703bdccbf27e2bea96924e..0503017b5142ce650af42148e7c3a234a579e338 100644
--- a/Device/Detector/IDetector.cpp
+++ b/Device/Detector/IDetector.cpp
@@ -242,11 +242,11 @@ size_t IDetector::detectorIndexToRegionOfInterestIndex(const size_t detectorInde
 
     const size_t ny = ycoord(detectorIndex, y.detectorSize);
     if (ny < y.lowerIndex || ny > y.upperIndex)
-        throw std::runtime_error("IDetector::detectorIndexToRegionOfInterestIndex() -> Error.");
+        throw std::runtime_error("IDetector::detectorIndexToRegionOfInterestIndex -> Error.");
 
     const size_t nx = xcoord(detectorIndex, x.detectorSize, y.detectorSize);
     if (nx < x.lowerIndex || nx > x.upperIndex)
-        throw std::runtime_error("IDetector::detectorIndexToRegionOfInterestIndex() -> Error.");
+        throw std::runtime_error("IDetector::detectorIndexToRegionOfInterestIndex -> Error.");
 
     return ny - y.lowerIndex + (nx - x.lowerIndex) * y.roiSize;
 }
diff --git a/Device/Detector/RectangularDetector.cpp b/Device/Detector/RectangularDetector.cpp
index d158cee54c3829b6ada028bad7e099e56c138409..551632aea1864f2bd6bf8fc7a98246086835ae82 100644
--- a/Device/Detector/RectangularDetector.cpp
+++ b/Device/Detector/RectangularDetector.cpp
@@ -202,7 +202,7 @@ void RectangularDetector::setDistanceAndOffset(double distance, double u0, doubl
 {
     if (distance <= 0.0) {
         std::ostringstream message;
-        message << "RectangularDetector::setPerpendicularToSample() -> Error. "
+        message << "RectangularDetector::setPerpendicularToSample -> Error. "
                 << "Distance to sample cannot be negative or zero";
         throw std::runtime_error(message.str());
     }
@@ -233,7 +233,7 @@ void RectangularDetector::initNormalVector(const R3 central_k)
     }
 
     else
-        throw std::runtime_error("RectangularDetector::init() -> Unknown detector arrangement");
+        throw std::runtime_error("RectangularDetector::init -> Unknown detector arrangement");
 }
 
 void RectangularDetector::initUandV()
diff --git a/Device/IO/DataFormatUtils.cpp b/Device/IO/DataFormatUtils.cpp
index 52a47a92718806db76222ea793e83ba0ad0179b5..a580d031596e516b8dddc5e79d4c8a3d32a544ba 100644
--- a/Device/IO/DataFormatUtils.cpp
+++ b/Device/IO/DataFormatUtils.cpp
@@ -64,7 +64,7 @@ IAxis* createFixedBinLikeAxis(std::istringstream iss)
     std::string name;
     size_t nbins(0);
     if (!(iss >> name >> nbins))
-        throw std::runtime_error("createFixedBinLikeAxis() -> Error. Cannot parse the string.");
+        throw std::runtime_error("createFixedBinLikeAxis -> Error. Cannot parse the string.");
 
     std::vector<double> boundaries;
     DataUtils::Format::readLineOfDoubles(boundaries, iss);
diff --git a/Device/IO/ReadWriteNumpyTXT.cpp b/Device/IO/ReadWriteNumpyTXT.cpp
index 9b026d8233fa1ef0aa8270e00b16249f2e3bb986..1970d89c62afeae4bfa310c630bb8fb8b1a6041b 100644
--- a/Device/IO/ReadWriteNumpyTXT.cpp
+++ b/Device/IO/ReadWriteNumpyTXT.cpp
@@ -57,12 +57,12 @@ Datafield* ReadWriteNumpyTXT::readDatafield(std::istream& input_stream)
         ncols = data[0].size();
 
     if (ncols == 0)
-        throw std::runtime_error("ReadNumpyTXTStrategy::readDatafield() -> Error. "
+        throw std::runtime_error("ReadNumpyTXTStrategy::readDatafield -> Error. "
                                  "Cannot parse file");
 
     for (size_t row = 0; row < nrows; row++) {
         if (data[row].size() != ncols)
-            throw std::runtime_error("ReadNumpyTXTStrategy::readDatafield() -> Error. "
+            throw std::runtime_error("ReadNumpyTXTStrategy::readDatafield -> Error. "
                                      "Number of elements is different from row to row.");
     }
 
diff --git a/Device/Resolution/ConvolutionDetectorResolution.cpp b/Device/Resolution/ConvolutionDetectorResolution.cpp
index 92804faffdcd4d511fbb28bbc34b2177b412f94b..aa650e256eb1a278f261252e07733754bbcb8329 100644
--- a/Device/Resolution/ConvolutionDetectorResolution.cpp
+++ b/Device/Resolution/ConvolutionDetectorResolution.cpp
@@ -58,7 +58,7 @@ void ConvolutionDetectorResolution::applyDetectorResolution(Datafield* intensity
 {
     if (intensity_map->rank() != m_rank) {
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::applyDetectorResolution() -> Error! "
+            "ConvolutionDetectorResolution::applyDetectorResolution -> Error! "
             "Intensity map must have same dimension as detector resolution function.");
     }
     switch (m_rank) {
@@ -70,7 +70,7 @@ void ConvolutionDetectorResolution::applyDetectorResolution(Datafield* intensity
         break;
     default:
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::applyDetectorResolution() -> Error! "
+            "ConvolutionDetectorResolution::applyDetectorResolution -> Error! "
             "Class ConvolutionDetectorResolution must be initialized with dimension 1 or 2.");
     }
 }
@@ -85,7 +85,7 @@ void ConvolutionDetectorResolution::apply1dConvolution(Datafield* intensity_map)
     ASSERT(m_res_function_1d == nullptr);
     if (intensity_map->rank() != 1)
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::apply1dConvolution() -> Error! "
+            "ConvolutionDetectorResolution::apply1dConvolution -> Error! "
             "Number of axes for intensity map does not correspond to the dimension of the map.");
     const IAxis& axis = intensity_map->axis(0);
     // Construct source vector from original intensity map
@@ -96,7 +96,7 @@ void ConvolutionDetectorResolution::apply1dConvolution(Datafield* intensity_map)
     // Construct kernel vector from resolution function
     if (axis.size() != data_size)
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::apply1dConvolution() -> Error! "
+            "ConvolutionDetectorResolution::apply1dConvolution -> Error! "
             "Size of axis for intensity map does not correspond to size of data in the map.");
     double step_size = std::abs(axis[0] - axis[axis.size() - 1]) / (data_size - 1);
     double mid_value = axis[axis.size() / 2]; // because Convolve expects zero at midpoint
@@ -118,7 +118,7 @@ void ConvolutionDetectorResolution::apply2dConvolution(Datafield* intensity_map)
     ASSERT(m_res_function_2d);
     if (intensity_map->rank() != 2)
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::apply2dConvolution() -> Error! "
+            "ConvolutionDetectorResolution::apply2dConvolution -> Error! "
             "Number of axes for intensity map does not correspond to the dimension of the map.");
     const IAxis& axis_1 = intensity_map->axis(0);
     const IAxis& axis_2 = intensity_map->axis(1);
@@ -132,7 +132,7 @@ void ConvolutionDetectorResolution::apply2dConvolution(Datafield* intensity_map)
     size_t raw_data_size = raw_source_vector.size();
     if (raw_data_size != axis_size_1 * axis_size_2)
         throw std::runtime_error(
-            "ConvolutionDetectorResolution::apply2dConvolution() -> Error! "
+            "ConvolutionDetectorResolution::apply2dConvolution -> Error! "
             "Intensity map data size does not match the product of its axes' sizes");
     for (auto it = raw_source_vector.begin(); it != raw_source_vector.end(); it += axis_size_2) {
         std::vector<double> row_vector(it, it + axis_size_2);
diff --git a/Device/Resolution/Convolve.cpp b/Device/Resolution/Convolve.cpp
index 7b97bcc843a24460f94756a7f0d02afb30caa321..5792a038e757321bcaaac5e393092a8214e8aed0 100644
--- a/Device/Resolution/Convolve.cpp
+++ b/Device/Resolution/Convolve.cpp
@@ -133,7 +133,7 @@ void Convolve::init(int h_src, int w_src, int h_kernel, int w_kernel)
 {
     if (!h_src || !w_src || !h_kernel || !w_kernel) {
         std::ostringstream os;
-        os << "Convolve::init() -> Panic! Wrong dimensions " << h_src << " " << w_src << " "
+        os << "Convolve::init -> Panic! Wrong dimensions " << h_src << " " << w_src << " "
            << h_kernel << " " << w_kernel << std::endl;
         throw std::runtime_error(os.str());
     }
@@ -229,19 +229,18 @@ void Convolve::init(int h_src, int w_src, int h_kernel, int w_kernel)
     ws.p_forw_src = fftw_plan_dft_r2c_2d(ws.h_fftw, ws.w_fftw, ws.in_src, (fftw_complex*)ws.out_src,
                                          FFTW_ESTIMATE);
     if (ws.p_forw_src == nullptr)
-        throw std::runtime_error("Convolve::init() -> Error! Cannot initialise p_forw_src plan.");
+        throw std::runtime_error("Convolve::init -> Error! Cannot initialise p_forw_src plan.");
 
     ws.p_forw_kernel = fftw_plan_dft_r2c_2d(ws.h_fftw, ws.w_fftw, ws.in_kernel,
                                             (fftw_complex*)ws.out_kernel, FFTW_ESTIMATE);
     if (ws.p_forw_kernel == nullptr)
-        throw std::runtime_error(
-            "Convolve::init() -> Error! Cannot initialise p_forw_kernel plan.");
+        throw std::runtime_error("Convolve::init -> Error! Cannot initialise p_forw_kernel plan.");
 
     // The backward FFT takes ws.out_kernel as input
     ws.p_back = fftw_plan_dft_c2r_2d(ws.h_fftw, ws.w_fftw, (fftw_complex*)ws.out_kernel, ws.dst_fft,
                                      FFTW_ESTIMATE);
     if (ws.p_back == nullptr)
-        throw std::runtime_error("Convolve::init() -> Error! Cannot initialise p_back plan.");
+        throw std::runtime_error("Convolve::init -> Error! Cannot initialise p_back plan.");
 }
 
 /* ************************************************************************* */
@@ -251,7 +250,7 @@ void Convolve::init(int h_src, int w_src, int h_kernel, int w_kernel)
 void Convolve::fftw_circular_convolution(const double2d_t& src, const double2d_t& kernel)
 {
     if (ws.h_fftw <= 0 || ws.w_fftw <= 0)
-        throw std::runtime_error("Convolve::fftw_convolve() -> Panic! Initialization is missed.");
+        throw std::runtime_error("Convolve::fftw_convolve -> Panic! Initialization is missed.");
 
     double *ptr, *ptr_end, *ptr2;
 
diff --git a/Fit/Adapter/GeneticMinimizer.cpp b/Fit/Adapter/GeneticMinimizer.cpp
index ec88f8678c6dedaf7534c3a87af5f2bd8d92857f..a97733e081a3a78c845a6e44ee8eb03928c2fba9 100644
--- a/Fit/Adapter/GeneticMinimizer.cpp
+++ b/Fit/Adapter/GeneticMinimizer.cpp
@@ -94,7 +94,7 @@ void GeneticMinimizer::setParameter(unsigned int index, const mumufit::Parameter
 {
     if (!par.limits().isFixed() && !par.limits().isLimited()) {
         std::ostringstream ostr;
-        ostr << "GeneticMinimizer::setParameter() -> Error! "
+        ostr << "GeneticMinimizer::setParameter -> Error! "
              << "Genetic minimizer requires either fixed or "
              << "limited AttLimits::limited(left,right) parameter. "
              << " Parameter name '" << par.name() << "', limits:" << par.limits().toString();
diff --git a/Fit/Adapter/MinimizerAdapter.cpp b/Fit/Adapter/MinimizerAdapter.cpp
index 5ab7badec117ad955284292746ce739e80b9cfc4..ee023f98db35af10e3aa720ee2f0cacf18c7da0e 100644
--- a/Fit/Adapter/MinimizerAdapter.cpp
+++ b/Fit/Adapter/MinimizerAdapter.cpp
@@ -165,11 +165,11 @@ void MinimizerAdapter::setParameter(unsigned int index, const mumufit::Parameter
 
 
     else
-        throw std::runtime_error("BasicMinimizer::setParameter() -> Error! Unexpected parameter.");
+        throw std::runtime_error("BasicMinimizer::setParameter -> Error! Unexpected parameter.");
 
     if (!success) {
         std::ostringstream ostr;
-        ostr << "BasicMinimizer::setParameter() -> Error! Cannot set minimizer's fit parameter";
+        ostr << "BasicMinimizer::setParameter -> Error! Cannot set minimizer's fit parameter";
         ostr << "Index:" << index << " name '" << par.name() << "'";
         throw std::runtime_error(ostr.str());
     }
diff --git a/Fit/Adapter/ResidualFunctionAdapter.cpp b/Fit/Adapter/ResidualFunctionAdapter.cpp
index f48a1ec4323bb899d194f110db82b94faa752607..2b30e761c2669ee4a6168897bac8a9c334c68c15 100644
--- a/Fit/Adapter/ResidualFunctionAdapter.cpp
+++ b/Fit/Adapter/ResidualFunctionAdapter.cpp
@@ -79,7 +79,7 @@ std::vector<double> ResidualFunctionAdapter::get_residuals(const std::vector<dou
 {
     if (pars.size() != m_parameters.size()) {
         std::ostringstream ostr;
-        ostr << "ResidualFunctionAdapter::residuals() -> Error. Number of fit parameters "
+        ostr << "ResidualFunctionAdapter::residuals -> Error. Number of fit parameters "
              << "has changed in the course of minimization. Initially was " << m_parameters.size()
              << " become " << pars.size() << "\n";
         throw std::runtime_error(ostr.str());
@@ -90,7 +90,7 @@ std::vector<double> ResidualFunctionAdapter::get_residuals(const std::vector<dou
 
     if (result.size() != m_datasize) {
         std::ostringstream ostr;
-        ostr << "ResidualFunctionAdapter::residuals() -> Error. Size of data "
+        ostr << "ResidualFunctionAdapter::residuals -> Error. Size of data "
              << "has changed in the course of minimization. Initial length " << m_datasize
              << " new length " << result.size() << "\n";
         throw std::runtime_error(ostr.str());
@@ -111,7 +111,7 @@ double ResidualFunctionAdapter::element_residual(const std::vector<double>& pars
     if (!gradients.empty()) {
         // Non zero size means that minimizer wants to know gradients.
         if (pars.size() != gradients.size())
-            throw std::runtime_error("ResidualFunctionAdapter::element_residual() -> Error. "
+            throw std::runtime_error("ResidualFunctionAdapter::element_residual -> Error. "
                                      "Number of gradients doesn't match number of fit parameters.");
         if (index == 0)
             calculate_gradients(pars);
@@ -132,7 +132,7 @@ double ResidualFunctionAdapter::chi2(const std::vector<double>& pars)
 
     int fnorm = static_cast<int>(m_datasize) - static_cast<int>(m_parameters.freeParameterCount());
     if (fnorm <= 0)
-        throw std::runtime_error("ResidualFunctionAdapter::chi2() -> Error. Normalization is 0");
+        throw std::runtime_error("ResidualFunctionAdapter::chi2 -> Error. Normalization is 0");
 
     return result / fnorm;
 }
diff --git a/Fit/Kernel/Minimizer.cpp b/Fit/Kernel/Minimizer.cpp
index 03186e57e12c2958cd930f02208e0b50f20131a9..ea9d40797f5cb997b02ec7c39e25f59ef95de03d 100644
--- a/Fit/Kernel/Minimizer.cpp
+++ b/Fit/Kernel/Minimizer.cpp
@@ -56,5 +56,5 @@ MinimizerResult Minimizer::minimize(const PyCallback& callback, const Parameters
         return minimize(fcn, parameters);
     }
 
-    throw std::runtime_error("Minimizer::minimize() -> Error. Unexpected user function");
+    throw std::runtime_error("Minimizer::minimize -> Error. Unexpected user function");
 }
diff --git a/Fit/Kernel/MinimizerFactory.cpp b/Fit/Kernel/MinimizerFactory.cpp
index 4c1a711aa81dcb04cf1386cfca165f5c1ad67ae6..564187c2225ee205df9841d0545013246e0b46c1 100644
--- a/Fit/Kernel/MinimizerFactory.cpp
+++ b/Fit/Kernel/MinimizerFactory.cpp
@@ -51,7 +51,7 @@ IMinimizer* MinimizerFactory::createMinimizer(const std::string& minimizerName,
 
     if (!result) {
         std::ostringstream ostr;
-        ostr << "MinimizerFactory::MinimizerFactory() -> Error! Cannot create minimizer for given "
+        ostr << "MinimizerFactory::MinimizerFactory -> Error! Cannot create minimizer for given "
                 "collection name '"
              << minimizerName << "' or algorithm '" << algorithmType << "'" << std::endl;
         ostr << "Possible names are:" << std::endl;
diff --git a/Fit/Kernel/PyCallback.cpp b/Fit/Kernel/PyCallback.cpp
index d9b508ced5c53dd287e3b5ea8e2a555dd1041959..bbef821bb01ded11546610378b1a442209357ade 100644
--- a/Fit/Kernel/PyCallback.cpp
+++ b/Fit/Kernel/PyCallback.cpp
@@ -28,10 +28,10 @@ PyCallback::~PyCallback() = default;
 
 double PyCallback::call_scalar(mumufit::Parameters) const
 {
-    throw std::runtime_error("PyCallback::call_scalar() -> Error. Not implemented");
+    throw std::runtime_error("PyCallback::call_scalar -> Error. Not implemented");
 }
 
 std::vector<double> PyCallback::call_residuals(mumufit::Parameters) const
 {
-    throw std::runtime_error("PyCallback::call_residuals() -> Error. Not implemented");
+    throw std::runtime_error("PyCallback::call_residuals -> Error. Not implemented");
 }
diff --git a/Fit/Minimizer/IMinimizer.cpp b/Fit/Minimizer/IMinimizer.cpp
index 0922ed918c543c6b0d33f8f61ea2ce4c1256abf1..c636dd688b4a96d1197d6ea525af7130b36a5921 100644
--- a/Fit/Minimizer/IMinimizer.cpp
+++ b/Fit/Minimizer/IMinimizer.cpp
@@ -20,20 +20,20 @@ IMinimizer::~IMinimizer() = default;
 
 mumufit::MinimizerResult IMinimizer::minimize_scalar(fcn_scalar_t, mumufit::Parameters)
 {
-    throw std::runtime_error("IMinimizer::minimize_scalar() -> Not implemented.");
+    throw std::runtime_error("IMinimizer::minimize_scalar -> Not implemented.");
 }
 
 mumufit::MinimizerResult IMinimizer::minimize_residual(fcn_residual_t, mumufit::Parameters)
 {
-    throw std::runtime_error("IMinimizer::minimize_residual() -> Not implemented.");
+    throw std::runtime_error("IMinimizer::minimize_residual -> Not implemented.");
 }
 
 double IMinimizer::minValue() const
 {
-    throw std::runtime_error("IMinimizer::minValue() -> Not implemented.");
+    throw std::runtime_error("IMinimizer::minValue -> Not implemented.");
 }
 
 void IMinimizer::setOptions(const std::string&)
 {
-    throw std::runtime_error("IMinimizer::setOptions() -> Not implemented.");
+    throw std::runtime_error("IMinimizer::setOptions -> Not implemented.");
 }
diff --git a/Fit/Minimizer/MinimizerInfo.cpp b/Fit/Minimizer/MinimizerInfo.cpp
index 7e883676aa2b85956b6b157aca5fa5de69fe0b23..751d30e466422e59656489cdbe4b0dad036706d2 100644
--- a/Fit/Minimizer/MinimizerInfo.cpp
+++ b/Fit/Minimizer/MinimizerInfo.cpp
@@ -26,7 +26,7 @@ void MinimizerInfo::setAlgorithmName(const std::string& algorithmName)
     }
 
     std::ostringstream msg;
-    msg << "MinimizerInfo::setAlgorithmName() -> Error. Algorithm name '" << algorithmName
+    msg << "MinimizerInfo::setAlgorithmName -> Error. Algorithm name '" << algorithmName
         << "' is not in the list of defined algorithms (";
     for (const AlgorithmInfo& algo : m_algorithms)
         msg << algo.name() << " ";
diff --git a/Fit/Minimizer/MinimizerOptions.cpp b/Fit/Minimizer/MinimizerOptions.cpp
index 4381b047f0fadb2e07bb954708315b430d7066d4..b81583a98413e307e793ca5eea58298e56ced0e4 100644
--- a/Fit/Minimizer/MinimizerOptions.cpp
+++ b/Fit/Minimizer/MinimizerOptions.cpp
@@ -43,7 +43,7 @@ void MinimizerOptions::setOptionString(const std::string& options)
                 processCommand(opt);
     } catch (std::exception& ex) {
         std::ostringstream ostr;
-        ostr << "MinimizerOptions::setOptions() -> Error. Cannot parse option string '" << options
+        ostr << "MinimizerOptions::setOptions -> Error. Cannot parse option string '" << options
              << "'.\n, error message '" << ex.what() << "'";
         throw std::runtime_error(ostr.str());
     }
@@ -56,7 +56,7 @@ void MinimizerOptions::processCommand(const std::string& command)
 {
     std::vector<std::string> tokens = mumufit::stringUtils::split(command, "=");
     if (tokens.size() != 2)
-        throw std::runtime_error("MinimizerOptions::processOption() -> Cannot parse option '"
+        throw std::runtime_error("MinimizerOptions::processOption -> Cannot parse option '"
                                  + command + "'");
 
     std::string name = tokens[0];
diff --git a/Fit/Param/Parameters.cpp b/Fit/Param/Parameters.cpp
index bad6f519921957ca8729ace817692fd795b79c7e..12df12a211610e381f6fff9a9184366f3572af2a 100644
--- a/Fit/Param/Parameters.cpp
+++ b/Fit/Param/Parameters.cpp
@@ -22,8 +22,8 @@ using namespace mumufit;
 void Parameters::add(const Parameter& par)
 {
     if (exists(par.name()))
-        throw std::runtime_error("Parameters::add() -> Error. Parameter with the name '"
-                                 + par.name() + "' already exists.");
+        throw std::runtime_error("Parameters::add -> Error. Parameter with the name '" + par.name()
+                                 + "' already exists.");
 
     m_parameters.push_back(par);
 }
@@ -68,11 +68,11 @@ void Parameters::setValues(const std::vector<double>& values)
     size_t index = 0;
     for (auto& par : m_parameters) {
         if (std::isnan(values[index]))
-            throw std::runtime_error("Parameters::setValues() -> Error."
+            throw std::runtime_error("Parameters::setValues -> Error."
                                      " Attempt to set nan '"
                                      + par.name() + "'.");
         if (std::isinf(values[index]))
-            throw std::runtime_error("Parameters::setValues() -> Error. Attempt to set inf '"
+            throw std::runtime_error("Parameters::setValues -> Error. Attempt to set inf '"
                                      + par.name() + "'.");
         par.setValue(values[index]);
         ++index;
@@ -122,7 +122,7 @@ Parameters::corr_matrix_t Parameters::correlationMatrix() const
 void Parameters::setCorrelationMatrix(const Parameters::corr_matrix_t& matrix)
 {
     if (matrix.size() != size())
-        throw std::runtime_error("Parameters::setCorrelationMatrix() -> Error. Wrong "
+        throw std::runtime_error("Parameters::setCorrelationMatrix -> Error. Wrong "
                                  "dimension of correlation matrix.");
     m_corr_matrix = matrix;
 }
@@ -150,7 +150,7 @@ void Parameters::check_array_size(const std::vector<double>& values) const
 {
     if (values.size() != m_parameters.size()) {
         std::ostringstream ostr;
-        ostr << "Parameters::check_array_size() -> Error. Size of input array " << values.size()
+        ostr << "Parameters::check_array_size -> Error. Size of input array " << values.size()
              << " doesn't mach number of fit parameters " << m_parameters.size() << "."
              << std::endl;
         throw std::runtime_error(ostr.str());
@@ -160,6 +160,6 @@ void Parameters::check_array_size(const std::vector<double>& values) const
 size_t Parameters::check_index(size_t index) const
 {
     if (index >= m_parameters.size())
-        throw std::runtime_error("Parameters::check_index() -> Index out of bounds");
+        throw std::runtime_error("Parameters::check_index -> Index out of bounds");
     return index;
 }
diff --git a/Fit/TestEngine/MinimizerTestPlan.cpp b/Fit/TestEngine/MinimizerTestPlan.cpp
index 333d01dd032cc47b10e3d5e27f70ec788854f8fe..554800c607460956f5bd1f75d08e8b6e594474b4 100644
--- a/Fit/TestEngine/MinimizerTestPlan.cpp
+++ b/Fit/TestEngine/MinimizerTestPlan.cpp
@@ -72,7 +72,7 @@ bool MinimizerTestPlan::valuesAsExpected(const std::vector<double>& values) cons
     bool success = true;
 
     if (m_parameter_references.size() != values.size())
-        throw std::runtime_error("FunctionTestPlan::valuesAsExpected() -> Error. Sizes differ.");
+        throw std::runtime_error("FunctionTestPlan::valuesAsExpected -> Error. Sizes differ.");
 
     for (size_t i = 0; i < values.size(); ++i) {
         const ParameterReference& ref = m_parameter_references[i];
diff --git a/Fit/Tools/MinimizerUtils.cpp b/Fit/Tools/MinimizerUtils.cpp
index 942f159ae2a8db56bf0475b69c2454d51ff825e0..41a27d7c6f1e3e05f4ea06658f33007f491154d7 100644
--- a/Fit/Tools/MinimizerUtils.cpp
+++ b/Fit/Tools/MinimizerUtils.cpp
@@ -84,7 +84,7 @@ bool mumufit::utils::numbersDiffer(double a, double b, double tol)
 {
     constexpr double eps = std::numeric_limits<double>::epsilon();
     if (tol < 1)
-        throw std::runtime_error("mumufit::utils::numbersDiffer() -> Error.Not intended for tol<1");
+        throw std::runtime_error("mumufit::utils::numbersDiffer -> Error.Not intended for tol<1");
     return std::abs(a - b) > eps * std::max(tol * eps, std::abs(b));
 }
 
diff --git a/Fit/Tools/OptionContainer.cpp b/Fit/Tools/OptionContainer.cpp
index f6a4a61570dc1d16bbc13186f0b7a491623c5908..5bb9f0607198beaf52ed17274a8a02fcad979531 100644
--- a/Fit/Tools/OptionContainer.cpp
+++ b/Fit/Tools/OptionContainer.cpp
@@ -38,8 +38,8 @@ OptionContainer::option_t OptionContainer::option(const std::string& optionName)
             return option;
     }
 
-    throw std::runtime_error("Configurable::getOption() -> Error. No option with name '"
-                             + optionName + "'.");
+    throw std::runtime_error("Configurable::getOption -> Error. No option with name '" + optionName
+                             + "'.");
 }
 
 OptionContainer::option_t OptionContainer::option(const std::string& optionName) const
@@ -49,8 +49,8 @@ OptionContainer::option_t OptionContainer::option(const std::string& optionName)
             return option;
     }
 
-    throw std::runtime_error("Configurable::getOption() -> Error. No option with name '"
-                             + optionName + "'.");
+    throw std::runtime_error("Configurable::getOption -> Error. No option with name '" + optionName
+                             + "'.");
 }
 
 bool OptionContainer::exists(const std::string& name)
diff --git a/Fit/Tools/OptionContainer.h b/Fit/Tools/OptionContainer.h
index 818a7451fe1652d32616ce185bbe4966cc938040..4e300b795ecc8a3f2eb9fb169e57bf3478b3bc9e 100644
--- a/Fit/Tools/OptionContainer.h
+++ b/Fit/Tools/OptionContainer.h
@@ -70,7 +70,7 @@ OptionContainer::option_t OptionContainer::addOption(const std::string& optionNa
                                                      const std::string& description)
 {
     if (exists(optionName))
-        throw std::runtime_error("OptionContainer::addOption() -> Error. Option '" + optionName
+        throw std::runtime_error("OptionContainer::addOption -> Error. Option '" + optionName
                                  + "' exists.");
 
     option_t result(new MultiOption(optionName, value, description));
@@ -90,7 +90,7 @@ void OptionContainer::setOptionValue(const std::string& optionName, T value)
     option(optionName)->value() = value;
     if (option(optionName)->value().index() != option(optionName)->defaultValue().index())
         throw std::runtime_error(
-            "OptionContainer::setOptionValue() -> Error. Attempt to set different"
+            "OptionContainer::setOptionValue -> Error. Attempt to set different"
             "type to option '"
             + optionName + "'");
 }
diff --git a/GUI/Model/Data/ComboProperty.cpp b/GUI/Model/Data/ComboProperty.cpp
index f3b8f9286eaf7fa55485dfb02cc05eb027df3522..cd736e42588da0f252e8177ab65378e4d79744ee 100644
--- a/GUI/Model/Data/ComboProperty.cpp
+++ b/GUI/Model/Data/ComboProperty.cpp
@@ -61,7 +61,7 @@ QString ComboProperty::currentValue() const
 void ComboProperty::setCurrentValue(const QString& name)
 {
     if (!m_values.contains(name))
-        throw Error("ComboProperty::setValue() -> Error. Combo doesn't contain "
+        throw Error("ComboProperty::setValue -> Error. Combo doesn't contain "
                     "value "
                     + name);
     setCurrentIndex(m_values.indexOf(name));
diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 2a7f98efef85cef8146e915fc193eb24f806e728..9c77c97636cca313772b538174a9adc391dbddea 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -64,7 +64,7 @@ void DataItem::setDatafield(Datafield* data)
 void DataItem::setRawDataVector(const std::vector<double>& data)
 {
     if (m_datafield->size() != data.size())
-        throw Error("DataItem::setVector() -> Error. "
+        throw Error("DataItem::setVector -> Error. "
                     "Different data size.");
     std::unique_lock<std::mutex> lock(m_update_data_mutex);
     m_datafield->setVector(data);
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index c97eac70819eb48025d3e2d525436fce0ffcfd8c..5cd3029c37f2265ecde02ad199fab5f36e55a0fa 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -401,16 +401,10 @@ bool SpecularInstrumentItem::alignedWith(const RealItem* item) const
     if (!item->hasNativeData())
         return false;
 
-    // TODO do not compare native axis with main data axis due to different units
-    // remove native data from everywhere
+    // TODO remove native data from everywhere
     // https://jugit.fz-juelich.de/mlz/bornagain/-/issues/331
-    //
-    //    const auto& native_axis = item->nativeDatafield()->axis(0);
-    //    return *instrumentAxis == native_axis;
-    //
-    // compare instrument axis with the main data axis instead
-    const auto& data_axis = item->dataItem()->datafield()->axis(0);
-    return *instrumentAxis == data_axis;
+    const auto& native_axis = item->nativeDatafield()->axis(0);
+    return *instrumentAxis == native_axis;
 }
 
 const ICoordSystem* SpecularInstrumentItem::createCoordSystem() const
diff --git a/GUI/Model/FromCore/ItemizeSimulation.cpp b/GUI/Model/FromCore/ItemizeSimulation.cpp
index 46f161c7edc5bacd26a6139bf831559a1a7a0af1..71246653f02c4788d95eaf97deb374c709cbb372 100644
--- a/GUI/Model/FromCore/ItemizeSimulation.cpp
+++ b/GUI/Model/FromCore/ItemizeSimulation.cpp
@@ -305,7 +305,7 @@ void setDetectorResolution(DetectorItem* detector_item, const IDetector& detecto
             item->setSigmaX(scale * resfunc->sigmaX());
             item->setSigmaY(scale * resfunc->sigmaY());
         } else {
-            throw Error("setDetectorResolution() -> Error. "
+            throw Error("setDetectorResolution -> Error. "
                         "Unknown detector resolution function");
         }
     } else
diff --git a/GUI/Model/Job/FitSuiteItem.cpp b/GUI/Model/Job/FitSuiteItem.cpp
index 8544847b80eba132ffc4b0cda8421e4b0b9d7dce..76862fc05e5d3309f0fb2071fabef027d32341f0 100644
--- a/GUI/Model/Job/FitSuiteItem.cpp
+++ b/GUI/Model/Job/FitSuiteItem.cpp
@@ -42,7 +42,7 @@ FitSuiteItem::FitSuiteItem()
 FitParameterContainerItem* FitSuiteItem::createFitParametersContainerItem()
 {
     if (m_fitContainer)
-        throw Error("FitSuiteItem::createFitParametersContainer() -> Error. Attempt to create "
+        throw Error("FitSuiteItem::createFitParametersContainer -> Error. Attempt to create "
                     "a second FitParameterContainer.");
 
     m_fitContainer = std::make_unique<FitParameterContainerItem>();
@@ -57,7 +57,7 @@ FitParameterContainerItem* FitSuiteItem::fitParameterContainerItem()
 MinimizerContainerItem* FitSuiteItem::createMinimizerContainerItem()
 {
     if (m_minimizerContainer)
-        throw Error("FitSuiteItem::createMinimizerContainer() -> Error. Attempt to create "
+        throw Error("FitSuiteItem::createMinimizerContainer -> Error. Attempt to create "
                     "a second MinimizerContainer.");
 
     m_minimizerContainer = std::make_unique<MinimizerContainerItem>();
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 0fd271a9db61de0b6ea3ad7c0befb6001cdf7b7f..5fa3fe324f90855d24169c60a199bde23b4f9efb 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -248,7 +248,7 @@ FitSuiteItem* JobItem::fitSuiteItem()
 FitSuiteItem* JobItem::createFitSuiteItem()
 {
     if (m_fitSuiteItem)
-        throw Error("JobItem::createFitSuiteItem() -> Error. Attempt to create "
+        throw Error("JobItem::createFitSuiteItem -> Error. Attempt to create "
                     "a second FitSuiteItem.");
 
     m_fitSuiteItem = std::make_unique<FitSuiteItem>();
diff --git a/GUI/Model/Model/JobQueueData.cpp b/GUI/Model/Model/JobQueueData.cpp
index 84ffe66fa9604cec963196ffad9a68817d156529..1490555ecaa299abc634224d4dc1c09e67b7f450 100644
--- a/GUI/Model/Model/JobQueueData.cpp
+++ b/GUI/Model/Model/JobQueueData.cpp
@@ -40,14 +40,14 @@ void JobQueueData::runJob(JobItem* jobItem)
         return;
 
     if (getSimulation(identifier))
-        throw Error("JobQueueData::runJob() -> Error. ISimulation is already existing.");
+        throw Error("JobQueueData::runJob -> Error. ISimulation is already existing.");
 
     try {
         auto simulation = GUI::ToCore::itemsToSimulation(
             *jobItem->sampleItem(), *jobItem->instrumentItem(), jobItem->simulationOptionsItem());
         m_simulations[identifier] = simulation.release();
     } catch (const std::exception& ex) {
-        QString message("JobQueueData::runJob() -> Error. "
+        QString message("JobQueueData::runJob -> Error. "
                         "Attempt to create sample/instrument object from user description "
                         "has failed with following error message.\n\n");
         message += QString::fromStdString(std::string(ex.what()));
@@ -188,7 +188,7 @@ void JobQueueData::assignForDeletion(QThread* thread)
         }
     }
 
-    throw Error("JobQueueData::assignForDeletion() -> Error! Cannot find thread.");
+    throw Error("JobQueueData::assignForDeletion -> Error! Cannot find thread.");
 }
 
 //! Removes JobRunner from the map of known runners, assigns it for deletion.
@@ -205,7 +205,7 @@ void JobQueueData::assignForDeletion(JobWorker* worker)
         }
     }
 
-    throw Error("JobQueueData::assignForDeletion() -> Error! Cannot find the runner.");
+    throw Error("JobQueueData::assignForDeletion -> Error! Cannot find the runner.");
 }
 
 void JobQueueData::clearSimulation(const QString& identifier)
diff --git a/GUI/Model/Project/ProjectDocument.cpp b/GUI/Model/Project/ProjectDocument.cpp
index 2c564dc90bf3e50f23046bd54d4bd838b0c50f23..01efa4da6c744bf38706759a2a16262ccd9e7a05 100644
--- a/GUI/Model/Project/ProjectDocument.cpp
+++ b/GUI/Model/Project/ProjectDocument.cpp
@@ -156,7 +156,7 @@ void ProjectDocument::saveProjectFileWithData(const QString& projectPullPath)
 {
     QFile file(projectPullPath);
     if (!file.open(QFile::ReadWrite | QIODevice::Truncate | QFile::Text))
-        throw Error("ProjectDocument::save_project_file() -> Error. Cannot open "
+        throw Error("ProjectDocument::save_project_file -> Error. Cannot open "
                     "file '"
                     + projectPullPath + "' for writing.");
 
diff --git a/GUI/Support/Data/JobWorker.cpp b/GUI/Support/Data/JobWorker.cpp
index b02c4a7fd797d8b352dd0302119ff2ed836fdade..3bb200b259443f6e595bbe80f26f52207a61d289 100644
--- a/GUI/Support/Data/JobWorker.cpp
+++ b/GUI/Support/Data/JobWorker.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Support/Data/JobWorker.h"
+#include "Base/Util/Assert.h"
 #include "Device/Histo/SimulationResult.h"
 #include "Sim/Simulation/ScatteringSimulation.h"
 #include <QDateTime>
@@ -48,30 +49,20 @@ void JobWorker::start()
     m_result.release();
     emit started();
 
-    if (m_simulation) {
+    try {
+        m_job_status = JobStatus::Running;
+        ASSERT(m_simulation);
         m_simulation->subscribe([this](size_t percentage_done) {
             return updateProgress(static_cast<int>(percentage_done));
         });
-
-        m_job_status = JobStatus::Running;
-
-        try {
-            SimulationResult result = m_simulation->simulate();
-            if (m_job_status != JobStatus::Canceled)
-                m_job_status = JobStatus::Completed;
-            m_result = std::make_unique<SimulationResult>(result);
-        } catch (const std::exception& ex) {
-            m_job_status = JobStatus::Failed;
-            m_percentage_done = 100;
-            m_failure_message =
-                "JobRunner::start() -> ISimulation failed with exception throw:\n\n";
-
-            m_failure_message.append(QString(ex.what()));
-        }
-    } else {
+        SimulationResult result = m_simulation->simulate();
+        if (m_job_status != JobStatus::Canceled)
+            m_job_status = JobStatus::Completed;
+        m_result = std::make_unique<SimulationResult>(result);
+    } catch (const std::exception& ex) {
         m_job_status = JobStatus::Failed;
         m_percentage_done = 100;
-        m_failure_message = "JobRunner::start() -> Error. ISimulation doesn't exist.";
+        m_failure_message = ex.what();
     }
 
     m_simulation_end = QDateTime::currentDateTime();
diff --git a/GUI/View/Fit/FitSessionController.cpp b/GUI/View/Fit/FitSessionController.cpp
index 1c7f09f8c95ce70c26b31490a4aadcfa34d1ec46..a212ae5877dec797c4e72f3e39996aa4caca5a5c 100644
--- a/GUI/View/Fit/FitSessionController.cpp
+++ b/GUI/View/Fit/FitSessionController.cpp
@@ -53,7 +53,7 @@ FitSessionController::~FitSessionController() = default;
 void FitSessionController::setJobItem(JobItem* jobItem)
 {
     if (m_jobItem && m_jobItem != jobItem)
-        throw Error("FitSuiteManager::setJobItem() -> JobItem was already set.");
+        throw Error("FitSuiteManager::setJobItem -> JobItem was already set.");
 
     m_jobItem = jobItem;
     ASSERT(m_jobItem);
diff --git a/GUI/View/Fit/FitSessionManager.cpp b/GUI/View/Fit/FitSessionManager.cpp
index a87a01c681f6a01b75328968aad3a939de97f79f..93760537ad8301ae7511d0d5b24bcdf57adfa981 100644
--- a/GUI/View/Fit/FitSessionManager.cpp
+++ b/GUI/View/Fit/FitSessionManager.cpp
@@ -61,7 +61,7 @@ void FitSessionManager::removeController(JobItem* jobItem)
 {
     auto it = m_item_to_controller.find(jobItem);
     if (it == m_item_to_controller.end())
-        throw Error("FitActivityManager::removeFitSession() -> Error. "
+        throw Error("FitActivityManager::removeFitSession -> Error. "
                     "Cannot find fit session");
 
     if (m_activeController == it.value())
diff --git a/GUI/View/Fit/ParameterTuningWidget.cpp b/GUI/View/Fit/ParameterTuningWidget.cpp
index 87cf15ea1aebdf21111b6126fd385a368c7f4f1f..36d132ca9ea164869893f414866ea813d6c4beb8 100644
--- a/GUI/View/Fit/ParameterTuningWidget.cpp
+++ b/GUI/View/Fit/ParameterTuningWidget.cpp
@@ -140,7 +140,7 @@ void ParameterTuningWidget::updateParameterModel()
         return;
 
     if (!jobItem()->sampleItem() || !jobItem()->instrumentItem())
-        throw Error("ModelTuningWidget::updateParameterModel() -> Error."
+        throw Error("ModelTuningWidget::updateParameterModel -> Error."
                     "JobItem doesn't have sample or instrument model.");
 
     delete m_parameterTuningModel;
diff --git a/GUI/View/Instrument/AlphaScanEditor.cpp b/GUI/View/Instrument/AlphaScanEditor.cpp
index 761db415db2bd3b06a7e07a180139b2be5bdd778..77113b160fe4a1de17d4ba8fcd39f1ca69b3d572 100644
--- a/GUI/View/Instrument/AlphaScanEditor.cpp
+++ b/GUI/View/Instrument/AlphaScanEditor.cpp
@@ -52,10 +52,10 @@ AlphaScanEditor::AlphaScanEditor(QWidget* parent, GrazingScanItem* item)
     gform->addRow(m_selector);
 
     //... update axis type combo (needs m_form)
-    if (idx != typeComboBox->currentIndex())
+    if (idx != typeComboBox->currentIndex()) {
         typeComboBox->setCurrentIndex(idx);
-    else
-        onAxisTypeSelected(idx); // trigger update manually
+        onAxisTypeSelected(idx);
+    }
     typeComboBox->setEnabled(m_item->pointwiseAlphaAxisDefined());
     connect(typeComboBox, qOverload<int>(&QComboBox::currentIndexChanged), this,
             &AlphaScanEditor::onAxisTypeSelected);
diff --git a/GUI/View/Loaders/AutomaticDataLoader1D.cpp b/GUI/View/Loaders/AutomaticDataLoader1D.cpp
index b2c91716eb3ab6dc6b514400bd1f4aea65ac5ded..e93bb5abcddf11d3aa0d33c3b38864c984051f47 100644
--- a/GUI/View/Loaders/AutomaticDataLoader1D.cpp
+++ b/GUI/View/Loaders/AutomaticDataLoader1D.cpp
@@ -20,6 +20,7 @@
 #include "GUI/Support/IO/ImportDataInfo.h"
 #include "GUI/Support/XML/DeserializationException.h"
 #include "GUI/View/Loaders/AutomaticDataLoader1DResultModel.h"
+#include <sstream>
 
 QString AutomaticDataLoader1D::name() const
 {
diff --git a/GUI/View/Project/ProjectManager.cpp b/GUI/View/Project/ProjectManager.cpp
index 10bea9b6df92d33cb1c1715f0d6c459d33cae67c..840ca3ef0cceee2559f0a8467e491f184965764f 100644
--- a/GUI/View/Project/ProjectManager.cpp
+++ b/GUI/View/Project/ProjectManager.cpp
@@ -64,7 +64,7 @@ ProjectManager::~ProjectManager()
 ProjectManager* ProjectManager::instance()
 {
     if (!s_instance)
-        throw Error("ProjectManager::instance() -> Error. Attempt to access "
+        throw Error("ProjectManager::instance -> Error. Attempt to access "
                     "non existing ProjectManager.");
 
     return s_instance;
@@ -338,7 +338,7 @@ void ProjectManager::openProject(QString projectPullPath)
 void ProjectManager::createNewProject()
 {
     if (gProjectDocument.has_value())
-        throw Error("ProjectManager::createNewProject() -> Project already exists");
+        throw Error("ProjectManager::createNewProject -> Project already exists");
 
     gProjectDocument = new ProjectDocument();
 
diff --git a/GUI/View/Projection/SaveProjectionsAssistant.cpp b/GUI/View/Projection/SaveProjectionsAssistant.cpp
index 2ad98af66bfdb73e922429201689144675be000c..171274d6f240a613a4ad2abc4d643dee7184a038 100644
--- a/GUI/View/Projection/SaveProjectionsAssistant.cpp
+++ b/GUI/View/Projection/SaveProjectionsAssistant.cpp
@@ -79,7 +79,7 @@ void SaveProjectionsAssistant::saveProjections(QWidget* parent, IntensityDataIte
 
     QFile file(fileName);
     if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
-        throw Error("TestGUI::Project::Utils::createTestFile() -> Error. "
+        throw Error("TestGUI::Project::Utils::createTestFile -> Error. "
                     "Cannot create file");
 
     m_field = intensityItem->datafield();
diff --git a/GUI/View/Widget/DocksController.cpp b/GUI/View/Widget/DocksController.cpp
index 07d611f3c8c38fe70eae06d1af12604e9b390b9d..fe1da67323d0ba6fce1f344b9a6b21cdd83b3408 100644
--- a/GUI/View/Widget/DocksController.cpp
+++ b/GUI/View/Widget/DocksController.cpp
@@ -85,7 +85,7 @@ QDockWidget* DocksController::addDockForWidget(QWidget* widget)
 void DocksController::addWidget(int id, QWidget* widget, Qt::DockWidgetArea area)
 {
     if (m_docks.find(id) != m_docks.end())
-        throw Error("DocksController::addWidget() -> Error. "
+        throw Error("DocksController::addWidget -> Error. "
                     "Attempt to add widget id twice");
 
     auto* dock = addDockForWidget(widget);
diff --git a/Sample/HardParticle/Cone.cpp b/Sample/HardParticle/Cone.cpp
index fc8c6717fdff155b25d1715ef39c16763a885998..320c9d6cec42201279eaf1d19d0c46922691aaf1 100644
--- a/Sample/HardParticle/Cone.cpp
+++ b/Sample/HardParticle/Cone.cpp
@@ -73,7 +73,7 @@ std::string Cone::validate() const
 
     if (m_cot_alpha * m_height > m_radius) {
         std::ostringstream ostr;
-        ostr << "Cone() -> Error in class initialization ";
+        ostr << "Cone -> Error in class initialization ";
         ostr << "with parameters radius:" << m_radius;
         ostr << " m_height:" << m_height;
         ostr << " alpha[rad]:" << m_alpha << "\n\n";
diff --git a/Sample/Interface/LayerInterface.cpp b/Sample/Interface/LayerInterface.cpp
index cc6a4413d8974555d638258a0c2913ce6aea7b08..18ccf55c0d480923c4680ba5312e4dcf96d8e6d2 100644
--- a/Sample/Interface/LayerInterface.cpp
+++ b/Sample/Interface/LayerInterface.cpp
@@ -26,7 +26,7 @@ LayerInterface::~LayerInterface() = default;
 
 LayerInterface* LayerInterface::clone() const
 {
-    throw std::runtime_error("LayerInterface::clone() -> Not allowed to clone.");
+    throw std::runtime_error("LayerInterface::clone -> Not allowed to clone.");
 }
 
 LayerInterface* LayerInterface::createSmoothInterface(const Layer* top_layer,
diff --git a/Sim/Fitting/FitObjective.cpp b/Sim/Fitting/FitObjective.cpp
index bc64c5326a0da45329f2a4060a57e344c23ba3ed..9bd376c354622c63d04ea7417417d8a7c7c8085f 100644
--- a/Sim/Fitting/FitObjective.cpp
+++ b/Sim/Fitting/FitObjective.cpp
@@ -322,7 +322,7 @@ void FitObjective::execSimulations(const mumufit::Parameters& params)
         throw std::runtime_error("Fitting was interrupted by the user.");
 
     if (m_fit_objects.empty())
-        throw std::runtime_error("FitObjective::execSimulations() -> Error. "
+        throw std::runtime_error("FitObjective::execSimulations -> Error. "
                                  "No simulation/data defined.");
 
     for (auto& obj : m_fit_objects)
diff --git a/Sim/Fitting/FitPrintService.cpp b/Sim/Fitting/FitPrintService.cpp
index c13b0edd246f87a3ce7d3f00943dd466e23c1188..d91333c61d8f0ec33a4b42402f4f38d5cfa53a19 100644
--- a/Sim/Fitting/FitPrintService.cpp
+++ b/Sim/Fitting/FitPrintService.cpp
@@ -60,7 +60,7 @@ std::string FitPrintService::iterationHeaderString(const FitObjective& objective
 {
     std::ostringstream result;
 
-    result << "FitPrintService::update() -> Info."
+    result << "FitPrintService::update -> Info."
            << " NCall:" << objective.iterationInfo().iterationCount() << " Chi2:" << std::scientific
            << std::setprecision(8) << objective.iterationInfo().chi2() << "\n";
 
diff --git a/Sim/Fitting/FitStatus.cpp b/Sim/Fitting/FitStatus.cpp
index 20248aad6a18fa154040eafdaceac4121d164a8b..e7de6bc21e3becc57445b3114bd939b20f41d2f7 100644
--- a/Sim/Fitting/FitStatus.cpp
+++ b/Sim/Fitting/FitStatus.cpp
@@ -75,7 +75,7 @@ IterationInfo FitStatus::iterationInfo() const
 mumufit::MinimizerResult FitStatus::minimizerResult() const
 {
     if (!m_minimizer_result)
-        throw std::runtime_error("FitStatus::minimizerResult() -> Minimizer result wasn't set. "
+        throw std::runtime_error("FitStatus::minimizerResult -> Minimizer result wasn't set. "
                                  "Make sure that FitObjective::finalize() was called.");
 
     return {*m_minimizer_result};
diff --git a/Sim/Fitting/PyFittingCallbacks.cpp b/Sim/Fitting/PyFittingCallbacks.cpp
index 45bb58a826e502a8665323a1820824f9d383b8ce..ee8c59e7e7a5019d9e902ea92053e9b7d3a20b68 100644
--- a/Sim/Fitting/PyFittingCallbacks.cpp
+++ b/Sim/Fitting/PyFittingCallbacks.cpp
@@ -22,7 +22,7 @@ PyBuilderCallback::~PyBuilderCallback() = default;
 
 ISimulation* PyBuilderCallback::build_simulation(const mumufit::Parameters&) const
 {
-    throw std::runtime_error("PyBuilderCallback::build_simulation() -> Error. Not implemented");
+    throw std::runtime_error("PyBuilderCallback::build_simulation -> Error. Not implemented");
 }
 
 // --- PyObserverCallback ---
@@ -33,5 +33,5 @@ PyObserverCallback::~PyObserverCallback() = default;
 
 void PyObserverCallback::update(const FitObjective&)
 {
-    throw std::runtime_error("PyObserverCallback::update() -> Error. Not implemented");
+    throw std::runtime_error("PyObserverCallback::update -> Error. Not implemented");
 }
diff --git a/Tests/Unit/GUI/TestProjectUtils.cpp b/Tests/Unit/GUI/TestProjectUtils.cpp
index 3badfe090f0c72b5b1c1fb3973048304264cc800..ab963e44d82f30d956ca5d39cdd0f6fd8e3ce440 100644
--- a/Tests/Unit/GUI/TestProjectUtils.cpp
+++ b/Tests/Unit/GUI/TestProjectUtils.cpp
@@ -15,7 +15,7 @@ QStringList nonXMLDataInDir(const QString& dirname)
     QDir dir(dirname);
 
     if (!dir.exists())
-        throw Error("GUI::Project::Utils::nonXMLDataInDir() -> Error. Non existing "
+        throw Error("GUI::Project::Utils::nonXMLDataInDir -> Error. Non existing "
                     "directory '"
                     + dirname + "'.");
 
@@ -33,7 +33,7 @@ protected:
 
         QFile file(filename);
         if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
-            throw Error("TestGUI::Project::Utils::createTestFile() -> Error. "
+            throw Error("TestGUI::Project::Utils::createTestFile -> Error. "
                         "Cannot create file");
 
         QTextStream out(&file);
diff --git a/Tests/Unit/GUI/Utils.cpp b/Tests/Unit/GUI/Utils.cpp
index 204f7cad33dfc8dac653dc1c72b011a17cc03b80..1172c6533c8578c89cc124dfb73c8341d604874e 100644
--- a/Tests/Unit/GUI/Utils.cpp
+++ b/Tests/Unit/GUI/Utils.cpp
@@ -35,7 +35,7 @@ void UTest::GUI::create_dir(const QString& dir_name)
         QDir(dir_name).removeRecursively();
 
     if (!QDir(".").mkdir(dir_name))
-        throw Error("UTest::GUI::create_dir() -> Error. Cannot create '" + dir_name
+        throw Error("UTest::GUI::create_dir -> Error. Cannot create '" + dir_name
                     + "' in parent directory '.'.");
 }
 
diff --git a/Tests/Unit/GUI/Utils.h b/Tests/Unit/GUI/Utils.h
index 19df90843cb9be11960bf8c20bdc1a8e1bfce344..c7e3bece9e3adccb9eeb8dab073becea6282cb8f 100644
--- a/Tests/Unit/GUI/Utils.h
+++ b/Tests/Unit/GUI/Utils.h
@@ -74,7 +74,7 @@ void readXMLFile(QString path, T& model, QString tag)
     r.readNextStartElement();
 
     if (r.name().toString() != tag)
-        throw Error("UTest::GUI::readXMLFile() -> Error. The found tag '" + r.name().toString()
+        throw Error("UTest::GUI::readXMLFile -> Error. The found tag '" + r.name().toString()
                     + "' differs from '" + tag + "' in file '" + path + "'");
 
     model.readFrom(&r);
diff --git a/devtools/deploy/linux/adjust_pkg_linux.sh.in b/devtools/deploy/linux/adjust_pkg_linux.sh.in
index c08fae4afe992d07e41695cc00af7dc59921ce49..f155f36173763ba80922ff2fdc1acbc2bb07d45d 100644
--- a/devtools/deploy/linux/adjust_pkg_linux.sh.in
+++ b/devtools/deploy/linux/adjust_pkg_linux.sh.in
@@ -57,7 +57,7 @@ echo "$TITLE: package root = '$pkg_root_dir', " \
 # libraries allowed to be included in the package
 libs_inc_re='cerf|formfactor|gsl|fftw|boost|tiff|jpeg|jbig|Qt'
 # compression libraries
-libs_inc_re=${libs_inc_re}'|zstd|lzma|deflate|bz2'
+libs_inc_re=${libs_inc_re}'|zstd|lzma|deflate|bz2|Lerc'
 # secondary dependencies
 # X11 interface (libQt5XcbQpa):
 libs_inc_re=${libs_inc_re}'|XcbQpa|xcb-xinerama|xcb-xinput'
diff --git a/devtools/deploy/linux/mk_pypack_linux.sh.in b/devtools/deploy/linux/mk_pypack_linux.sh.in
index 57f3714902746f7eb36ae43c49ea0153e9d2f116..ca77ba507456d4207a28d522455e096549ed7bef 100644
--- a/devtools/deploy/linux/mk_pypack_linux.sh.in
+++ b/devtools/deploy/linux/mk_pypack_linux.sh.in
@@ -48,7 +48,7 @@ fi
 echo "$TITLE: library directories = '$libdir', '$xlibdir'"
 
 # libraries allowed to be included in the package
-libs_inc_re='cerf|formfactor|gsl|fftw|boost|zstd|lzma|bz2|tiff|jpeg|jbig'
+libs_inc_re='cerf|formfactor|gsl|fftw|boost|zstd|lzma|bz2|tiff|jpeg|jbig|deflate|webp|Lerc'
 
 # extract dependency names and locations from the raw output of `ldd`
 # NOTE: ldd returns all dependencies recursively.
diff --git a/hugo/config.toml b/hugo/config.toml
index b8fdec5fa8a1a0cd58d9bbb5eba2bcdd1f16c523..7b94cf7a1905613492c2ea09c2eb9f9ec8506a55 100644
--- a/hugo/config.toml
+++ b/hugo/config.toml
@@ -1,4 +1,6 @@
+# baseURL terminates with version number or "git-main"
 baseURL = "https://bornagainproject.org/git-main"
+
 languageCode = "en-us"
 title = "BornAgain"
 MetaDataFormat = "toml"
@@ -19,7 +21,7 @@ PygmentsStyle = "vs"
 
   release_number = "20.0"
   # version name is either release_number or "git-main"
-  version_name = "20.0"
+  version_name = "git-main"
 
   recommended_python_major = "3"
   recommended_python_minor = "9"