From e15cbc78a84634cd920382faaaf4be700aa87292 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Sat, 13 Nov 2021 06:50:33 +0100
Subject: [PATCH] clang-tidy GUI/Model/*/*

---
 GUI/Model/Component/ComponentProxyModel.h     |  14 +-
 .../Component/ComponentProxyStrategy.cpp      |  12 +-
 GUI/Model/Component/ComponentProxyStrategy.h  |   4 +-
 GUI/Model/Component/ComponentUtils.cpp        |   4 +-
 GUI/Model/Component/ProxyModelStrategy.h      |   2 +-
 GUI/Model/Data/ApplicationModels.cpp          |   4 +-
 GUI/Model/Data/ApplicationModels.h            |   2 +-
 GUI/Model/Data/AxesItems.h                    |   2 +-
 GUI/Model/Data/Data1DViewItem.cpp             |   6 +-
 GUI/Model/Data/DataItem.cpp                   |   6 +-
 GUI/Model/Data/DataItemUtils.cpp              |   4 +-
 GUI/Model/Data/DataProperties.cpp             |   7 +-
 GUI/Model/Data/DataPropertyContainer.cpp      |   8 +-
 GUI/Model/Data/DataViewUtils.cpp              |   4 +-
 GUI/Model/Data/ImportDataInfo.cpp             |   8 +-
 GUI/Model/Data/ImportDataInfo.h               |   2 +-
 GUI/Model/Data/IntensityDataItem.cpp          |   4 +-
 GUI/Model/Data/MaskItems.cpp                  |   4 +-
 GUI/Model/Data/MaskItems.h                    |  14 +-
 GUI/Model/Data/MaskUnitsConverter.cpp         |  10 +-
 GUI/Model/Data/PointwiseAxisItem.cpp          |  10 +-
 GUI/Model/Data/PointwiseAxisItem.h            |   2 +-
 GUI/Model/Data/RealDataItem.cpp               |  16 +--
 GUI/Model/Data/RealDataItem.h                 |   6 +-
 GUI/Model/Data/RealDataModel.cpp              |  10 +-
 GUI/Model/Data/RealDataModel.h                |   6 +-
 GUI/Model/Data/SpecularDataItem.cpp           |   4 +-
 GUI/Model/Fit/FitParameterHelper.cpp          |  10 +-
 GUI/Model/Fit/FitParameterItems.cpp           |   8 +-
 GUI/Model/Fit/FitParameterProxyModel.cpp      |   4 +-
 GUI/Model/Fit/FitParameterProxyModel.h        |   2 +-
 GUI/Model/Fit/MinimizerItem.h                 |  14 +-
 GUI/Model/Fit/ParameterTuningModel.h          |  10 +-
 GUI/Model/From/FromDomain.cpp                 | 136 +++++++++---------
 GUI/Model/From/FromDomain.h                   |   2 +-
 GUI/Model/From/GUIObjectBuilder.cpp           |  12 +-
 GUI/Model/From/GUIObjectBuilder.h             |   2 +-
 GUI/Model/Group/DistributionItems.cpp         |   2 +-
 GUI/Model/Group/DistributionItems.h           |   4 +-
 GUI/Model/Group/FilterPropertyProxy.cpp       |   9 +-
 GUI/Model/Group/FilterPropertyProxy.h         |   6 +-
 GUI/Model/Group/GroupInfo.cpp                 |   8 +-
 GUI/Model/Group/GroupItem.cpp                 |   2 +-
 GUI/Model/Group/GroupItem.h                   |   2 +-
 GUI/Model/Group/GroupItemController.cpp       |  10 +-
 GUI/Model/Group/SelectionDescriptor.h         |   6 +-
 GUI/Model/IO/AbstractDataLoader.h             |   2 +-
 GUI/Model/IO/AbstractDataLoaderResultModel.h  |   8 +-
 GUI/Model/IO/DataLoaders1D.cpp                |   2 +-
 GUI/Model/IO/OutputDataIOHistory.cpp          |   4 +-
 GUI/Model/IO/OutputDataIOHistory.h            |   2 +-
 GUI/Model/Instrument/BackgroundItems.h        |   6 +-
 GUI/Model/Instrument/BeamDistributionItem.cpp |  18 +--
 GUI/Model/Instrument/BeamDistributionItem.h   |   2 +-
 GUI/Model/Instrument/BeamItems.cpp            |  20 +--
 GUI/Model/Instrument/DetectorItems.cpp        |  14 +-
 GUI/Model/Instrument/FootprintItems.h         |   8 +-
 GUI/Model/Instrument/InstrumentItems.cpp      |  42 +++---
 GUI/Model/Instrument/InstrumentItems.h        |  16 +--
 GUI/Model/Instrument/InstrumentModel.cpp      |  24 ++--
 GUI/Model/Instrument/InstrumentModel.h        |   6 +-
 GUI/Model/Instrument/InstrumentsTreeModel.cpp |   4 +-
 GUI/Model/Instrument/InstrumentsTreeModel.h   |  14 +-
 .../Instrument/LinkInstrumentManager.cpp      |   8 +-
 .../Instrument/RectangularDetectorItem.cpp    |  14 +-
 .../Instrument/ResolutionFunctionItems.h      |   6 +-
 .../SpecularBeamInclinationItem.cpp           |  10 +-
 .../Instrument/SphericalDetectorItem.cpp      |   4 +-
 GUI/Model/Job/JobItem.cpp                     |   4 +-
 GUI/Model/Job/JobItem.h                       |   4 +-
 GUI/Model/Job/JobItemUtils.cpp                |   6 +-
 GUI/Model/Job/JobModel.cpp                    |  24 ++--
 GUI/Model/Job/JobModel.h                      |   6 +-
 GUI/Model/Job/JobModelFunctions.cpp           |  26 ++--
 GUI/Model/Job/JobModelFunctions.h             |   2 +-
 GUI/Model/Job/JobQueueData.cpp                |  24 ++--
 GUI/Model/Job/JobWorker.cpp                   |   5 +-
 GUI/Model/Job/JobWorker.h                     |   2 +-
 GUI/Model/Job/ParameterTreeUtils.cpp          |  12 +-
 GUI/Model/Material/MaterialItem.cpp           |   6 +-
 GUI/Model/Material/MaterialItem.h             |   4 +-
 GUI/Model/Material/MaterialItemContainer.cpp  |   4 +-
 GUI/Model/Material/MaterialItemUtils.cpp      |   2 +-
 GUI/Model/Material/MaterialModel.cpp          |  14 +-
 GUI/Model/Material/MaterialModel.h            |   6 +-
 GUI/Model/Project/OutputDataIOService.cpp     |  14 +-
 GUI/Model/Project/ProjectDocument.cpp         |   5 +-
 GUI/Model/Project/ProjectDocument.h           |   4 +-
 GUI/Model/Sample/FTDecayFunctionItems.h       |   6 +-
 GUI/Model/Sample/FTDistributionItems.h        |   4 +-
 GUI/Model/Sample/FormFactorItems.h            |  54 +++----
 GUI/Model/Sample/GUIDomainSampleVisitor.cpp   |  92 ++++++------
 GUI/Model/Sample/GUIDomainSampleVisitor.h     | 106 +++++++-------
 GUI/Model/Sample/InterferenceItems.cpp        |   8 +-
 GUI/Model/Sample/InterferenceItems.h          |   2 +-
 GUI/Model/Sample/ItemWithMaterial.cpp         |   6 +-
 GUI/Model/Sample/ItemWithParticles.cpp        |  10 +-
 GUI/Model/Sample/ItemWithParticles.h          |   2 +-
 GUI/Model/Sample/Lattice2DItems.h             |   6 +-
 GUI/Model/Sample/LayerItem.cpp                |   8 +-
 GUI/Model/Sample/MultiLayerItem.cpp           |   4 +-
 GUI/Model/Sample/ParticleCoreShellItem.cpp    |   4 +-
 GUI/Model/Sample/ParticleCoreShellItem.h      |   2 +-
 GUI/Model/Sample/ParticleItem.cpp             |   2 +-
 GUI/Model/Sample/ParticleItem.h               |   2 +-
 GUI/Model/Sample/ParticleLayoutItem.cpp       |  14 +-
 GUI/Model/Sample/SampleListModel.cpp          |   4 +-
 GUI/Model/Sample/SampleListModel.h            |   8 +-
 GUI/Model/Sample/SampleModel.cpp              |   2 +-
 GUI/Model/Sample/SampleModel.h                |   2 +-
 GUI/Model/Session/ModelMapper.cpp             |   2 +-
 GUI/Model/Session/ModelMapper.h               |  22 +--
 GUI/Model/Session/ModelUtils.cpp              |   6 +-
 GUI/Model/Session/ModelUtils.h                |   2 +-
 GUI/Model/Session/RealLimitsItems.h           |  14 +-
 GUI/Model/Session/SessionDecorationModel.cpp  |   2 +-
 GUI/Model/Session/SessionDecorationModel.h    |   2 +-
 GUI/Model/Session/SessionItem.cpp             |   8 +-
 GUI/Model/Session/SessionItem.h               |   6 +-
 GUI/Model/Session/SessionItemData.cpp         |   6 +-
 GUI/Model/Session/SessionItemData.h           |   2 +-
 GUI/Model/Session/SessionItemUtils.cpp        |   2 +-
 GUI/Model/Session/SessionModel.cpp            |   9 +-
 GUI/Model/Session/SessionModel.h              |  54 +++----
 GUI/Model/Session/SessionXML.cpp              |  10 +-
 GUI/Model/To/DomainObjectBuilder.cpp          |   2 +-
 GUI/Model/To/DomainSimulationBuilder.cpp      |  18 +--
 GUI/Model/To/ToDomain.cpp                     |  16 +--
 GUI/Model/To/ToDomain.h                       |   2 +-
 GUI/Model/Trafo/RotationItems.h               |   8 +-
 GUI/Model/Types/DoubleDescriptor.cpp          |  12 +-
 GUI/Model/Types/DoubleDescriptor.h            |   2 +-
 GUI/Model/Types/UIntDescriptor.cpp            |   6 +-
 GUI/Model/Types/UIntDescriptor.h              |   2 +-
 134 files changed, 701 insertions(+), 694 deletions(-)

diff --git a/GUI/Model/Component/ComponentProxyModel.h b/GUI/Model/Component/ComponentProxyModel.h
index bc6466e8a09..7158a6bd6a9 100644
--- a/GUI/Model/Component/ComponentProxyModel.h
+++ b/GUI/Model/Component/ComponentProxyModel.h
@@ -44,15 +44,15 @@ public:
 
     void setProxyStrategy(ProxyModelStrategy* strategy);
 
-    QModelIndex mapToSource(const QModelIndex& proxyIndex) const;
-    QModelIndex mapFromSource(const QModelIndex& sourceIndex) const;
+    QModelIndex mapToSource(const QModelIndex& proxyIndex) const override;
+    QModelIndex mapFromSource(const QModelIndex& sourceIndex) const override;
 
-    QModelIndex index(int row, int column, const QModelIndex& parent = {}) const;
-    QModelIndex parent(const QModelIndex& child) const;
-    int rowCount(const QModelIndex& parent = {}) const;
-    int columnCount(const QModelIndex& parent = {}) const;
+    QModelIndex index(int row, int column, const QModelIndex& parent = {}) const override;
+    QModelIndex parent(const QModelIndex& child) const override;
+    int rowCount(const QModelIndex& parent = {}) const override;
+    int columnCount(const QModelIndex& parent = {}) const override;
 
-    bool hasChildren(const QModelIndex& parent) const;
+    bool hasChildren(const QModelIndex& parent) const override;
 
 private slots:
     void sourceDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight,
diff --git a/GUI/Model/Component/ComponentProxyStrategy.cpp b/GUI/Model/Component/ComponentProxyStrategy.cpp
index debf6420eba..f9f5f0329ac 100644
--- a/GUI/Model/Component/ComponentProxyStrategy.cpp
+++ b/GUI/Model/Component/ComponentProxyStrategy.cpp
@@ -92,11 +92,7 @@ void ComponentProxyStrategy::processRootItem(SessionItem* item,
 bool ComponentProxyStrategy::isSubGroup(SessionItem* item)
 {
     const SessionItem* ancestor = GUI::Model::Path::ancestor(item->parent(), GroupItem::M_TYPE);
-    if (item->hasModelType<GroupItem>() && ancestor && ancestor->hasModelType<GroupItem>()) {
-        return true;
-    }
-
-    return false;
+    return item->hasModelType<GroupItem>() && ancestor && ancestor->hasModelType<GroupItem>();
 }
 
 //! Returns true if item is a children/grandchildrent of some group item.
@@ -123,7 +119,7 @@ void ComponentProxyStrategy::processGroupItem(SessionItem* item,
         if (ancestor == item)
             return;
 
-        auto groupItem = dynamic_cast<const GroupItem*>(ancestor);
+        const auto *groupItem = dynamic_cast<const GroupItem*>(ancestor);
         if (item->parent() == groupItem->currentItem()) {
             QPersistentModelIndex proxyIndex = createProxyIndex(
                 parentVisibleRow(*item), sourceIndex.column(), sourceIndex.internalPointer());
@@ -141,7 +137,7 @@ void ComponentProxyStrategy::processSubGroupItem(SessionItem* item,
 {
     if (const SessionItem* ancestor =
             GUI::Model::Path::ancestor(item->parent(), GroupItem::M_TYPE)) {
-        auto groupItem = dynamic_cast<const GroupItem*>(ancestor);
+        const auto *groupItem = dynamic_cast<const GroupItem*>(ancestor);
 
         if (item->parent() == groupItem->currentItem()) {
             QPersistentModelIndex proxyIndex = createProxyIndex(
@@ -179,7 +175,7 @@ int ComponentProxyStrategy::parentVisibleRow(const SessionItem& item)
     if (!item.parent() || !item.isVisible())
         return result;
 
-    for (auto child : item.parent()->children()) {
+    for (auto *child : item.parent()->children()) {
         if (child->isVisible() && isPropertyRelated(child))
             ++result;
 
diff --git a/GUI/Model/Component/ComponentProxyStrategy.h b/GUI/Model/Component/ComponentProxyStrategy.h
index f17d5f0f612..52cafeb8b41 100644
--- a/GUI/Model/Component/ComponentProxyStrategy.h
+++ b/GUI/Model/Component/ComponentProxyStrategy.h
@@ -21,10 +21,10 @@
 
 class ComponentProxyStrategy : public ProxyModelStrategy {
 public:
-    void onDataChanged(SessionModel* source, ComponentProxyModel* proxy);
+    void onDataChanged(SessionModel* source, ComponentProxyModel* proxy) override;
 
 protected:
-    bool processSourceIndex(const QModelIndex& index);
+    bool processSourceIndex(const QModelIndex& index) override;
 
 private:
     bool isPropertyRelated(SessionItem* item);
diff --git a/GUI/Model/Component/ComponentUtils.cpp b/GUI/Model/Component/ComponentUtils.cpp
index 816407d8523..3ee2d5f421b 100644
--- a/GUI/Model/Component/ComponentUtils.cpp
+++ b/GUI/Model/Component/ComponentUtils.cpp
@@ -24,7 +24,7 @@ namespace {
 QList<const SessionItem*> groupItems(const GroupItem& item)
 {
     QList<const SessionItem*> result;
-    for (auto grandchild : item.children())
+    for (auto *grandchild : item.children())
         if (grandchild->isVisible())
             result += GUI::Model::ComponentUtils::componentItems(*grandchild);
     return result;
@@ -56,7 +56,7 @@ QList<const SessionItem*> GUI::Model::ComponentUtils::componentItems(const Sessi
 
     } else {
 
-        for (auto child : item.children()) {
+        for (auto *child : item.children()) {
             if (!child->isVisible())
                 continue;
 
diff --git a/GUI/Model/Component/ProxyModelStrategy.h b/GUI/Model/Component/ProxyModelStrategy.h
index b1ae351ed74..c418dd247ca 100644
--- a/GUI/Model/Component/ProxyModelStrategy.h
+++ b/GUI/Model/Component/ProxyModelStrategy.h
@@ -56,7 +56,7 @@ protected:
 
 class IndentityProxyStrategy : public ProxyModelStrategy {
 protected:
-    bool processSourceIndex(const QModelIndex& index);
+    bool processSourceIndex(const QModelIndex& index) override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_COMPONENT_PROXYMODELSTRATEGY_H
diff --git a/GUI/Model/Data/ApplicationModels.cpp b/GUI/Model/Data/ApplicationModels.cpp
index e25659d8410..606302e7b8c 100644
--- a/GUI/Model/Data/ApplicationModels.cpp
+++ b/GUI/Model/Data/ApplicationModels.cpp
@@ -104,14 +104,14 @@ void ApplicationModels::resetModels()
 
 void ApplicationModels::writeTo(QXmlStreamWriter* writer)
 {
-    for (auto model : modelList())
+    for (auto *model : modelList())
         model->writeTo(writer);
 }
 
 void ApplicationModels::readFrom(QXmlStreamReader* reader, MessageService* messageService)
 {
     try {
-        for (auto model : modelList()) {
+        for (auto *model : modelList()) {
             if (model->getModelTag() == reader->name()) {
                 model->readFrom(reader, messageService);
                 break;
diff --git a/GUI/Model/Data/ApplicationModels.h b/GUI/Model/Data/ApplicationModels.h
index b910e969335..765a37afcbe 100644
--- a/GUI/Model/Data/ApplicationModels.h
+++ b/GUI/Model/Data/ApplicationModels.h
@@ -31,7 +31,7 @@ class ApplicationModels : public QObject {
     Q_OBJECT
 public:
     explicit ApplicationModels(QObject* parent = nullptr);
-    ~ApplicationModels();
+    ~ApplicationModels() override;
 
     DocumentModel* documentModel() const;
     MaterialModel* materialModel() const;
diff --git a/GUI/Model/Data/AxesItems.h b/GUI/Model/Data/AxesItems.h
index 10507ea3932..2571a54a028 100644
--- a/GUI/Model/Data/AxesItems.h
+++ b/GUI/Model/Data/AxesItems.h
@@ -33,7 +33,7 @@ public:
     static constexpr auto M_TYPE{"BasicAxis"};
 
     BasicAxisItem();
-    virtual ~BasicAxisItem();
+    ~BasicAxisItem() override;
 
     int binCount() const;
     void setBinCount(int value);
diff --git a/GUI/Model/Data/Data1DViewItem.cpp b/GUI/Model/Data/Data1DViewItem.cpp
index 377361e12b7..4efc4a2abc7 100644
--- a/GUI/Model/Data/Data1DViewItem.cpp
+++ b/GUI/Model/Data/Data1DViewItem.cpp
@@ -34,10 +34,10 @@ Data1DViewItem::Data1DViewItem() : SessionItem(M_TYPE), m_job_item(nullptr)
 {
     addProperty(P_TITLE, QString())->setVisible(false);
 
-    auto basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
+    auto *basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
     basicAxis->binsItem()->setVisible(false);
 
-    auto amplitudeAxis = addProperty<AmplitudeAxisItem>(P_YAXIS);
+    auto *amplitudeAxis = addProperty<AmplitudeAxisItem>(P_YAXIS);
     amplitudeAxis->binsItem()->setVisible(false);
     amplitudeAxis->titleItem()->setVisible(true);
     amplitudeAxis->visibilityItem()->setValue(true);
@@ -176,7 +176,7 @@ JobItem* Data1DViewItem::jobItem()
     if (m_job_item != nullptr)
         return m_job_item; // returning preset job item
 
-    auto item = parent();
+    auto *item = parent();
     do {
         if (item->modelType() == JobItem::M_TYPE) {
             m_job_item = dynamic_cast<JobItem*>(item);
diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 486b285292e..def6a1c71cb 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -29,7 +29,7 @@ void DataItem::setRawDataVector(std::vector<double> data)
         throw Error("DataItem::setRawDataVector() -> Error. "
                     "Different data size.");
     std::unique_lock<std::mutex> lock(m_update_data_mutex);
-    m_data->setRawDataVector(std::move(data));
+    m_data->setRawDataVector(data);
     emitDataChanged();
 }
 
@@ -56,7 +56,7 @@ bool DataItem::containsNonXMLData() const
 bool DataItem::loadData(const QString& projectDir)
 {
     QString filename = fileName(projectDir);
-    auto data = IntensityDataIOFactory::readOutputData(filename.toStdString());
+    auto *data = IntensityDataIOFactory::readOutputData(filename.toStdString());
     if (!data)
         return false;
     setOutputData(data);
@@ -82,7 +82,7 @@ void DataItem::setLastModified(const QDateTime& dtime)
 
 QString DataItem::selectedCoords() const
 {
-    ComboProperty combo = getItemValue(DataItem::P_AXES_UNITS).value<ComboProperty>();
+    auto combo = getItemValue(DataItem::P_AXES_UNITS).value<ComboProperty>();
     return combo.getValue();
 }
 
diff --git a/GUI/Model/Data/DataItemUtils.cpp b/GUI/Model/Data/DataItemUtils.cpp
index 5eaf9b123ad..416ef818f8d 100644
--- a/GUI/Model/Data/DataItemUtils.cpp
+++ b/GUI/Model/Data/DataItemUtils.cpp
@@ -25,9 +25,9 @@ template <class DataItemType> DataItemType* dataItem(SessionItem* parent)
 
     if (parent->modelType() == JobItem::M_TYPE)
         return dynamic_cast<DataItemType*>(dynamic_cast<JobItem*>(parent)->dataItem());
-    if (auto real_data = dynamic_cast<RealDataItem*>(parent))
+    if (auto *real_data = dynamic_cast<RealDataItem*>(parent))
         return dynamic_cast<DataItemType*>(real_data->dataItem());
-    if (auto self = dynamic_cast<DataItemType*>(parent))
+    if (auto *self = dynamic_cast<DataItemType*>(parent))
         return self;
     ASSERT(0);
 }
diff --git a/GUI/Model/Data/DataProperties.cpp b/GUI/Model/Data/DataProperties.cpp
index e9b690accb7..958fcb8f28b 100644
--- a/GUI/Model/Data/DataProperties.cpp
+++ b/GUI/Model/Data/DataProperties.cpp
@@ -19,6 +19,7 @@
 #include "GUI/Util/ComboProperty.h"
 #include "GUI/Util/Error.h"
 #include <QColor>
+#include <utility>
 
 namespace {
 // set of simple colors for representation of 1D graphs
@@ -28,7 +29,7 @@ const std::vector<std::pair<QString, Qt::GlobalColor>> color_queue = {
     {"Gray", Qt::GlobalColor::darkGray}, {"Magenta", Qt::GlobalColor::darkMagenta}};
 
 struct ColorNameComparator {
-    ColorNameComparator(const QString& value_to_comp) : m_value_to_comp(value_to_comp) {}
+    ColorNameComparator(QString  value_to_comp) : m_value_to_comp(std::move(value_to_comp)) {}
     bool operator()(const std::pair<QString, Qt::GlobalColor>& value) const
     {
         return value.first == m_value_to_comp;
@@ -62,7 +63,7 @@ DataItem* DataProperties::dataItem()
         os << path.toStdString() << " is invalid" << std::endl;
         throw Error(QString::fromStdString(os.str()));
     }
-    auto item = hosting_model->itemForIndex(item_index);
+    auto *item = hosting_model->itemForIndex(item_index);
     return dynamic_cast<DataItem*>(item);
 }
 
@@ -109,7 +110,7 @@ namespace {
 ComboProperty defaultColorCombo()
 {
     ComboProperty result;
-    for (auto& color : color_queue)
+    for (const auto& color : color_queue)
         result << color.first;
     result.setValue(color_queue.front().first);
     return result;
diff --git a/GUI/Model/Data/DataPropertyContainer.cpp b/GUI/Model/Data/DataPropertyContainer.cpp
index f3abbfc1bf3..bdd1b363ec1 100644
--- a/GUI/Model/Data/DataPropertyContainer.cpp
+++ b/GUI/Model/Data/DataPropertyContainer.cpp
@@ -37,14 +37,14 @@ Data1DProperties* DataPropertyContainer::propertyItem(size_t i) const
     auto children = getItems();
     if (children.empty())
         return nullptr;
-    auto property_item = dynamic_cast<Data1DProperties*>(children[static_cast<int>(i)]);
+    auto *property_item = dynamic_cast<Data1DProperties*>(children[static_cast<int>(i)]);
     ASSERT(property_item);
     return property_item;
 }
 
 DataItem* DataPropertyContainer::basicDataItem() const
 {
-    auto basic_property_item = propertyItem(0);
+    auto *basic_property_item = propertyItem(0);
     if (!basic_property_item)
         return nullptr;
     return basic_property_item->dataItem();
@@ -60,7 +60,7 @@ void DataPropertyContainer::addItem(DataItem* data_item)
     if (!propertyItems().empty())
         previous_item = dynamic_cast<Data1DProperties*>(propertyItems().back());
 
-    auto property_item = new Data1DProperties();
+    auto *property_item = new Data1DProperties();
     insertItem(-1, property_item);
     property_item->setDataItem(data_item);
     property_item->setColorProperty(Data1DProperties::nextColorName(previous_item));
@@ -72,7 +72,7 @@ std::vector<DataItem*> DataPropertyContainer::dataItems()
     auto items = propertyItems();
     std::transform(items.begin(), items.end(), std::back_inserter(result),
                    [](Data1DProperties* item) {
-                       auto data_item = item->dataItem();
+                       auto *data_item = item->dataItem();
                        ASSERT(data_item);
                        return data_item;
                    });
diff --git a/GUI/Model/Data/DataViewUtils.cpp b/GUI/Model/Data/DataViewUtils.cpp
index cde2967c18d..a4d227ca655 100644
--- a/GUI/Model/Data/DataViewUtils.cpp
+++ b/GUI/Model/Data/DataViewUtils.cpp
@@ -24,7 +24,7 @@ namespace {
 
 ICoordSystem* getConverter(Data1DViewItem* view_item)
 {
-    auto job_item = view_item->jobItem();
+    auto *job_item = view_item->jobItem();
     ASSERT(job_item->instrumentItem());
 
     return job_item->instrumentItem()->createCoordSystem();
@@ -57,7 +57,7 @@ GUI::Model::DataViewUtils::getTranslatedData(Data1DViewItem* view_item, DataItem
     if (!data_item || !data_item->getOutputData())
         return result;
 
-    auto converter = getConverter(view_item);
+    auto *converter = getConverter(view_item);
     auto current_units = selectedUnits(view_item);
 
     result = converter->createOutputData(current_units);
diff --git a/GUI/Model/Data/ImportDataInfo.cpp b/GUI/Model/Data/ImportDataInfo.cpp
index 8948a766514..36631677ab0 100644
--- a/GUI/Model/Data/ImportDataInfo.cpp
+++ b/GUI/Model/Data/ImportDataInfo.cpp
@@ -13,6 +13,8 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Data/ImportDataInfo.h"
+
+#include <memory>
 #include "Device/Coord/AxisNames.h"
 #include "Device/Data/OutputData.h"
 #include "GUI/Model/IO/OutputDataUtils.h"
@@ -23,7 +25,7 @@ namespace {
 std::vector<Axes::Coords> specularUnits()
 {
     std::vector<Axes::Coords> result;
-    for (auto& pair : DataUtils::AxisNames::specAxis)
+    for (const auto& pair : DataUtils::AxisNames::specAxis)
         result.push_back(pair.first);
     return result;
 }
@@ -34,7 +36,7 @@ std::map<size_t, std::vector<Axes::Coords>> available_units = {{1u, specularUnit
 } // namespace
 
 ImportDataInfo::ImportDataInfo(ImportDataInfo&& other)
-    : m_data(std::move(other.m_data)), m_coords(other.m_coords)
+ noexcept     : m_data(std::move(other.m_data)), m_coords(other.m_coords)
 {
 }
 
@@ -53,7 +55,7 @@ ImportDataInfo::ImportDataInfo(std::unique_ptr<OutputData<double>> data, const Q
 }
 
 ImportDataInfo::ImportDataInfo(OutputData<double>&& data, Axes::Coords units)
-    : ImportDataInfo(std::unique_ptr<OutputData<double>>(new OutputData<double>(std::move(data))),
+    : ImportDataInfo(std::make_unique<OutputData<double>>(std::move(data)),
                      units)
 {
 }
diff --git a/GUI/Model/Data/ImportDataInfo.h b/GUI/Model/Data/ImportDataInfo.h
index 1111a7bb3f3..6c1860e296a 100644
--- a/GUI/Model/Data/ImportDataInfo.h
+++ b/GUI/Model/Data/ImportDataInfo.h
@@ -28,7 +28,7 @@ public:
     ImportDataInfo(std::unique_ptr<OutputData<double>> data, Axes::Coords units);
     ImportDataInfo(OutputData<double>&& data, Axes::Coords units);
     ImportDataInfo(std::unique_ptr<OutputData<double>> data, const QString& units);
-    ImportDataInfo(ImportDataInfo&& other);
+    ImportDataInfo(ImportDataInfo&& other) noexcept ;
     ~ImportDataInfo();
 
     //! True if the contained data is not nullptr (no info about empty data)
diff --git a/GUI/Model/Data/IntensityDataItem.cpp b/GUI/Model/Data/IntensityDataItem.cpp
index 26cc9743d0b..cf67fdbdd48 100644
--- a/GUI/Model/Data/IntensityDataItem.cpp
+++ b/GUI/Model/Data/IntensityDataItem.cpp
@@ -54,13 +54,13 @@ IntensityDataItem::IntensityDataItem() : DataItem(M_TYPE)
     addProperty(P_IS_INTERPOLATED, true);
     addProperty(P_GRADIENT, gradientCombo().variant());
 
-    auto basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
+    auto *basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
     basicAxis->binsItem()->setVisible(false);
 
     basicAxis = addProperty<BasicAxisItem>(P_YAXIS);
     basicAxis->binsItem()->setVisible(false);
 
-    auto amplitudeAxis = addProperty<AmplitudeAxisItem>(P_ZAXIS);
+    auto *amplitudeAxis = addProperty<AmplitudeAxisItem>(P_ZAXIS);
     amplitudeAxis->binsItem()->setVisible(false);
 
     setXaxisTitle(x_axis_default_name);
diff --git a/GUI/Model/Data/MaskItems.cpp b/GUI/Model/Data/MaskItems.cpp
index 4f62c9423d9..4adb3852bb2 100644
--- a/GUI/Model/Data/MaskItems.cpp
+++ b/GUI/Model/Data/MaskItems.cpp
@@ -146,7 +146,7 @@ RegionOfInterestItem::RegionOfInterestItem() : RectangleItem(M_TYPE)
 std::unique_ptr<IShape2D> RegionOfInterestItem::createShape(double scale) const
 {
     auto shape = RectangleItem::createShape(scale);
-    static_cast<Rectangle*>(shape.get())->setInverted(true);
+    dynamic_cast<Rectangle*>(shape.get())->setInverted(true);
     return shape;
 }
 
@@ -193,7 +193,7 @@ PolygonItem::PolygonItem() : MaskItem(M_TYPE)
 std::unique_ptr<IShape2D> PolygonItem::createShape(double scale) const
 {
     std::vector<double> x, y;
-    for (auto item : this->childrenOfType<PolygonPointItem>()) {
+    for (auto *item : this->childrenOfType<PolygonPointItem>()) {
         x.push_back(scale * item->posX());
         y.push_back(scale * item->posY());
     }
diff --git a/GUI/Model/Data/MaskItems.h b/GUI/Model/Data/MaskItems.h
index 1e145ac7763..80646388d41 100644
--- a/GUI/Model/Data/MaskItems.h
+++ b/GUI/Model/Data/MaskItems.h
@@ -62,7 +62,7 @@ public:
     static constexpr auto M_TYPE{"RectangleMask"};
 
     explicit RectangleItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 
     double xLow() const;
     void setXLow(double x_low);
@@ -82,7 +82,7 @@ public:
     static constexpr auto M_TYPE{"RegionOfInterest"};
 
     RegionOfInterestItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 };
 
 class PolygonPointItem : public SessionItem {
@@ -109,7 +109,7 @@ public:
     static constexpr auto M_TYPE{"PolygonMask"};
 
     PolygonItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 
     bool isClosed() const;
     void setIsClosed(bool closed);
@@ -123,7 +123,7 @@ public:
     static constexpr auto M_TYPE{"VerticalLineMask"};
 
     VerticalLineItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 
     double posX() const;
     void setPosX(double pos_x);
@@ -138,7 +138,7 @@ public:
     static constexpr auto M_TYPE{"HorizontalLineMask"};
 
     HorizontalLineItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 
     double posY() const;
     void setPosY(double pos_y);
@@ -157,7 +157,7 @@ public:
     static constexpr auto M_TYPE{"EllipseMask"};
 
     EllipseItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 
     double xCenter() const;
     void setXCenter(double x_center);
@@ -185,7 +185,7 @@ public:
     static constexpr auto M_TYPE{"MaskAllMask"};
 
     MaskAllItem();
-    virtual std::unique_ptr<IShape2D> createShape(double scale) const override;
+    std::unique_ptr<IShape2D> createShape(double scale) const override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_DATA_MASKITEMS_H
diff --git a/GUI/Model/Data/MaskUnitsConverter.cpp b/GUI/Model/Data/MaskUnitsConverter.cpp
index 920160acd83..93b431fdd90 100644
--- a/GUI/Model/Data/MaskUnitsConverter.cpp
+++ b/GUI/Model/Data/MaskUnitsConverter.cpp
@@ -64,7 +64,7 @@ void MaskUnitsConverter::convertMask(SessionItem* maskItem)
 {
     if (maskItem->modelType() == RectangleItem::M_TYPE
         || maskItem->modelType() == RegionOfInterestItem::M_TYPE) {
-        RectangleItem* rectItem = polymorphic_downcast<RectangleItem*>(maskItem);
+        auto* rectItem = polymorphic_downcast<RectangleItem*>(maskItem);
         rectItem->setXLow(convert(rectItem->xLow(), Axis::X));
         rectItem->setYLow(convert(rectItem->yLow(), Axis::Y));
         rectItem->setXUp(convert(rectItem->xUp(), Axis::X));
@@ -75,13 +75,13 @@ void MaskUnitsConverter::convertMask(SessionItem* maskItem)
             pointItem->setPosY(convert(pointItem->posY(), Axis::Y));
         }
     } else if (maskItem->modelType() == VerticalLineItem::M_TYPE) {
-        VerticalLineItem* vlineItem = polymorphic_downcast<VerticalLineItem*>(maskItem);
+        auto* vlineItem = polymorphic_downcast<VerticalLineItem*>(maskItem);
         vlineItem->setPosX(convert(vlineItem->posX(), Axis::X));
     } else if (maskItem->modelType() == HorizontalLineItem::M_TYPE) {
-        HorizontalLineItem* hlineItem = polymorphic_downcast<HorizontalLineItem*>(maskItem);
+        auto* hlineItem = polymorphic_downcast<HorizontalLineItem*>(maskItem);
         hlineItem->setPosY(convert(hlineItem->posY(), Axis::Y));
     } else if (maskItem->modelType() == EllipseItem::M_TYPE) {
-        EllipseItem* ellItem = polymorphic_downcast<EllipseItem*>(maskItem);
+        auto* ellItem = polymorphic_downcast<EllipseItem*>(maskItem);
         double xc = ellItem->xCenter();
         double yc = ellItem->yCenter();
         double xR = ellItem->xRadius();
@@ -124,7 +124,7 @@ void MaskUnitsConverter::convertCoordinate(SessionItem* maskItem, const QString&
 
 double MaskUnitsConverter::convert(double value, Axis axis)
 {
-    size_t axis_index = static_cast<size_t>(axis);
+    auto axis_index = static_cast<size_t>(axis);
 
     ASSERT(m_data);
     ASSERT(axis_index == 0 || axis_index == 1);
diff --git a/GUI/Model/Data/PointwiseAxisItem.cpp b/GUI/Model/Data/PointwiseAxisItem.cpp
index de4a0d87d23..86bb41d2e18 100644
--- a/GUI/Model/Data/PointwiseAxisItem.cpp
+++ b/GUI/Model/Data/PointwiseAxisItem.cpp
@@ -60,7 +60,7 @@ const IAxis* PointwiseAxisItem::axis() const
     return m_axis.get();
 }
 
-const QString PointwiseAxisItem::getUnitsLabel() const
+QString PointwiseAxisItem::getUnitsLabel() const
 {
     return getItemValue(P_NATIVE_AXIS_UNITS).toString();
 }
@@ -75,7 +75,7 @@ std::unique_ptr<IAxis> PointwiseAxisItem::createAxis(double scale) const
     if (!checkValidity())
         return nullptr;
 
-    const auto converter = m_instrument->createCoordSystem();
+    auto *const converter = m_instrument->createCoordSystem();
     const auto converted_axis = converter->createConvertedAxis(0, Axes::Coords::DEGREES);
 
     // applying scaling
@@ -88,7 +88,7 @@ std::unique_ptr<IAxis> PointwiseAxisItem::createAxis(double scale) const
 bool PointwiseAxisItem::loadData(const QString& projectDir)
 {
     QString filename = SaveLoadInterface::fileName(projectDir);
-    auto data = IntensityDataIOFactory::readOutputData(filename.toStdString());
+    auto *data = IntensityDataIOFactory::readOutputData(filename.toStdString());
     if (!data)
         return false;
 
@@ -138,7 +138,7 @@ void PointwiseAxisItem::findInstrument()
     SessionItem* parent_item = parent();
     while (parent_item && !parent_item->is<SpecularInstrumentItem>())
         parent_item = parent_item->parent();
-    m_instrument = static_cast<SpecularInstrumentItem*>(parent_item);
+    m_instrument = dynamic_cast<SpecularInstrumentItem*>(parent_item);
 }
 
 void PointwiseAxisItem::updateIndicators()
@@ -146,7 +146,7 @@ void PointwiseAxisItem::updateIndicators()
     if (!checkValidity())
         return;
 
-    const auto converter = m_instrument->createCoordSystem();
+    auto *const converter = m_instrument->createCoordSystem();
     setLowerBound(converter->calculateMin(0, Axes::Coords::DEGREES));
     setUpperBound(converter->calculateMax(0, Axes::Coords::DEGREES));
     setBinCount(static_cast<int>(m_axis->size()));
diff --git a/GUI/Model/Data/PointwiseAxisItem.h b/GUI/Model/Data/PointwiseAxisItem.h
index 32277a9bc88..84db6449d02 100644
--- a/GUI/Model/Data/PointwiseAxisItem.h
+++ b/GUI/Model/Data/PointwiseAxisItem.h
@@ -37,7 +37,7 @@ public:
     // setters, getters
     void init(const IAxis& axis, const QString& units_label);
     const IAxis* axis() const;
-    const QString getUnitsLabel() const;
+    QString getUnitsLabel() const;
     void setFileName(const QString& filename);
 
     // virtual function overloads
diff --git a/GUI/Model/Data/RealDataItem.cpp b/GUI/Model/Data/RealDataItem.cpp
index 7fcb466fa90..a349071954a 100644
--- a/GUI/Model/Data/RealDataItem.cpp
+++ b/GUI/Model/Data/RealDataItem.cpp
@@ -61,7 +61,7 @@ RealDataItem::RealDataItem() : SessionItem(M_TYPE)
     });
 
     mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
-        auto data_item = dynamic_cast<DataItem*>(item);
+        auto *data_item = dynamic_cast<DataItem*>(item);
         if (!data_item || DataItem::isAxesUnitsPropertyName(name) || !linkedInstrument())
             return;
 
@@ -276,7 +276,7 @@ InstrumentItem* RealDataItem::linkedInstrument() const
 
 std::vector<int> RealDataItem::shape() const
 {
-    auto data_item = dataItem();
+    const auto *data_item = dataItem();
     if (!data_item) {
         ASSERT(data_item);
         return {};
@@ -301,7 +301,7 @@ bool RealDataItem::hasImportErrors() const
 
 MaskContainerItem* RealDataItem::maskContainerItem()
 {
-    if (auto intensity_data = intensityDataItem())
+    if (auto *intensity_data = intensityDataItem())
         return intensity_data->maskContainerItem();
     return nullptr;
 }
@@ -405,16 +405,16 @@ void RealDataItem::rotateData()
     // -- first break instrument link, clear masks and projections
     clearInstrumentId();
 
-    if (auto maskContainer = intensityDataItem()->maskContainerItem())
+    if (auto *maskContainer = intensityDataItem()->maskContainerItem())
         maskContainer->model()->removeRows(0, maskContainer->numberOfChildren(),
                                            maskContainer->index());
 
-    if (auto projectionsContainer = intensityDataItem()->projectionContainerItem())
+    if (auto *projectionsContainer = intensityDataItem()->projectionContainerItem())
         projectionsContainer->model()->removeRows(0, projectionsContainer->numberOfChildren(),
                                                   projectionsContainer->index());
 
     // -- now rotate data
-    const auto input = intensityDataItem()->getOutputData();
+    auto *const input = intensityDataItem()->getOutputData();
     intensityDataItem()->setOutputData(
         DataUtils::Data::createRearrangedDataSet(*input, 1).release());
     intensityDataItem()->setAxesRangeToData();
@@ -451,8 +451,8 @@ void RealDataItem::updateToInstrument(const InstrumentItem* instrument)
             specularDataItem()->setOutputData(nullptr);
         }
     } else {
-        auto native_data_item = nativeData();
-        auto data_source = native_data_item ? native_data_item : data_item;
+        auto *native_data_item = nativeData();
+        auto *data_source = native_data_item ? native_data_item : data_item;
 
         std::unique_ptr<OutputData<double>> native_data(data_source->getOutputData()->clone());
         const QString units_label = nativeDataUnits();
diff --git a/GUI/Model/Data/RealDataItem.h b/GUI/Model/Data/RealDataItem.h
index c6f91b0efc2..5ad28fc9abd 100644
--- a/GUI/Model/Data/RealDataItem.h
+++ b/GUI/Model/Data/RealDataItem.h
@@ -78,7 +78,7 @@ public:
     void setNativeOutputData(OutputData<double>* data);
 
     void setOutputData(OutputData<double>* data);
-    void setImportData(ImportDataInfo data);
+    void setImportData(ImportDataInfo info);
     bool holdsDimensionalData() const;
 
     void updateToInstrument(const InstrumentItem* instrument);
@@ -102,8 +102,8 @@ public:
     void setNativeFileName(const QString& filename);
     QString nativeFileName() const;
 
-    virtual QByteArray serializeBinaryData() const override;
-    virtual void deserializeBinaryData(const QByteArray& data) override;
+    QByteArray serializeBinaryData() const override;
+    void deserializeBinaryData(const QByteArray& data) override;
 
     //! Takes ownership of loader
     void setDataLoader(AbstractDataLoader* loader);
diff --git a/GUI/Model/Data/RealDataModel.cpp b/GUI/Model/Data/RealDataModel.cpp
index ef50c6b245c..4c4ce2cf7a2 100644
--- a/GUI/Model/Data/RealDataModel.cpp
+++ b/GUI/Model/Data/RealDataModel.cpp
@@ -29,10 +29,10 @@ QVector<SessionItem*> RealDataModel::nonXMLItems() const
 {
     QVector<SessionItem*> result;
 
-    for (auto realData : topItems<RealDataItem>()) {
-        if (auto intensityItem = realData->dataItem())
+    for (auto *realData : topItems<RealDataItem>()) {
+        if (auto *intensityItem = realData->dataItem())
             result.push_back(intensityItem);
-        if (auto native_data_item = realData->nativeData())
+        if (auto *native_data_item = realData->nativeData())
             result.push_back(native_data_item);
     }
 
@@ -55,14 +55,14 @@ void RealDataModel::readFrom(QXmlStreamReader* reader, MessageService* messageSe
 
 RealDataItem* RealDataModel::insertSpecularDataItem()
 {
-    auto r = insertItem<RealDataItem>();
+    auto *r = insertItem<RealDataItem>();
     r->initAsSpecularItem();
     return r;
 }
 
 RealDataItem* RealDataModel::insertIntensityDataItem()
 {
-    auto r = insertItem<RealDataItem>();
+    auto *r = insertItem<RealDataItem>();
     r->initAsIntensityItem();
     return r;
 }
diff --git a/GUI/Model/Data/RealDataModel.h b/GUI/Model/Data/RealDataModel.h
index 5374ab9d13f..9356dbc065d 100644
--- a/GUI/Model/Data/RealDataModel.h
+++ b/GUI/Model/Data/RealDataModel.h
@@ -25,10 +25,10 @@ class RealDataModel : public SessionModel {
     Q_OBJECT
 
 public:
-    explicit RealDataModel(QObject* parent = 0);
+    explicit RealDataModel(QObject* parent = nullptr);
 
-    virtual QVector<SessionItem*> nonXMLItems() const override;
-    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0) override;
+    QVector<SessionItem*> nonXMLItems() const override;
+    void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr) override;
 
     RealDataItem* insertSpecularDataItem();
     RealDataItem* insertIntensityDataItem();
diff --git a/GUI/Model/Data/SpecularDataItem.cpp b/GUI/Model/Data/SpecularDataItem.cpp
index df7156b9931..502c3d75091 100644
--- a/GUI/Model/Data/SpecularDataItem.cpp
+++ b/GUI/Model/Data/SpecularDataItem.cpp
@@ -29,10 +29,10 @@ SpecularDataItem::SpecularDataItem() : DataItem(M_TYPE)
 {
     addProperty(P_TITLE, QString())->setVisible(false);
 
-    auto basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
+    auto *basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
     basicAxis->binsItem()->setVisible(false);
 
-    auto amplitudeAxis = addProperty<AmplitudeAxisItem>(P_YAXIS);
+    auto *amplitudeAxis = addProperty<AmplitudeAxisItem>(P_YAXIS);
     amplitudeAxis->binsItem()->setVisible(false);
     amplitudeAxis->titleItem()->setVisible(true);
 
diff --git a/GUI/Model/Fit/FitParameterHelper.cpp b/GUI/Model/Fit/FitParameterHelper.cpp
index 77d8fde858d..65f757c5761 100644
--- a/GUI/Model/Fit/FitParameterHelper.cpp
+++ b/GUI/Model/Fit/FitParameterHelper.cpp
@@ -30,10 +30,10 @@ void FitParameterHelper::createFitParameter(FitParameterContainerItem* container
 
     removeFromFitParameters(container, parameterItem);
 
-    auto model = container->model();
-    auto fitPar = model->insertItem<FitParameterItem>(container);
+    auto *model = container->model();
+    auto *fitPar = model->insertItem<FitParameterItem>(container);
     fitPar->setDisplayName("par");
-    auto link = model->insertItem<FitParameterLinkItem>(fitPar);
+    auto *link = model->insertItem<FitParameterLinkItem>(fitPar);
     fitPar->setStartValue(parameterItem->value().toDouble());
     link->setLink(getParameterItemPath(parameterItem));
 
@@ -48,7 +48,7 @@ void FitParameterHelper::removeFromFitParameters(FitParameterContainerItem* cont
     FitParameterItem* fitParItem = getFitParameterItem(container, parameterItem);
 
     if (fitParItem) {
-        for (auto linkItem : fitParItem->linkItems()) {
+        for (auto *linkItem : fitParItem->linkItems()) {
             if (getParameterItemPath(parameterItem) == linkItem->link()) {
                 fitParItem->model()->removeRow(linkItem->index().row(), linkItem->index().parent());
                 break;
@@ -68,7 +68,7 @@ void FitParameterHelper::addToFitParameter(FitParameterContainerItem* container,
     removeFromFitParameters(container, parameterItem);
     for (FitParameterItem* fitPar : container->fitParameterItems()) {
         if (fitPar->displayName() == fitParName) {
-            FitParameterLinkItem* link = fitPar->model()->insertItem<FitParameterLinkItem>(fitPar);
+            auto* link = fitPar->model()->insertItem<FitParameterLinkItem>(fitPar);
             link->setLink(getParameterItemPath(parameterItem));
             break;
         }
diff --git a/GUI/Model/Fit/FitParameterItems.cpp b/GUI/Model/Fit/FitParameterItems.cpp
index 8dbe38abc97..079d693ab45 100644
--- a/GUI/Model/Fit/FitParameterItems.cpp
+++ b/GUI/Model/Fit/FitParameterItems.cpp
@@ -192,7 +192,7 @@ SessionItem* FitParameterItem::typeItem() const
 
 QString FitParameterItem::parameterType() const
 {
-    ComboProperty partype = getItemValue(P_TYPE).value<ComboProperty>();
+    auto partype = getItemValue(P_TYPE).value<ComboProperty>();
     return partype.getValue();
 }
 
@@ -336,7 +336,7 @@ void FitParameterContainerItem::setValuesInParameterContainer(
             continue;
         for (FitParameterLinkItem* linkItem : link_list) {
             QString parPath = linkItem->link();
-            auto itemInTuningTree = dynamic_cast<ParameterItem*>(
+            auto *itemInTuningTree = dynamic_cast<ParameterItem*>(
                 GUI::Model::Path::getItemFromPath(parPath, parameterContainer));
             if (itemInTuningTree)
                 itemInTuningTree->propagateValueToLink(values[index]);
@@ -350,8 +350,8 @@ mumufit::Parameters FitParameterContainerItem::createParameters() const
     mumufit::Parameters result;
 
     int index(0);
-    for (auto item : getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
-        auto fitPar = dynamic_cast<FitParameterItem*>(item);
+    for (auto *item : getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
+        auto *fitPar = dynamic_cast<FitParameterItem*>(item);
         if (!fitPar->isValid()) {
             std::stringstream ss;
             ss << "FitParameterContainerItem::createParameters(): invalid starting value "
diff --git a/GUI/Model/Fit/FitParameterProxyModel.cpp b/GUI/Model/Fit/FitParameterProxyModel.cpp
index f79e4176d7e..b17ac159283 100644
--- a/GUI/Model/Fit/FitParameterProxyModel.cpp
+++ b/GUI/Model/Fit/FitParameterProxyModel.cpp
@@ -315,7 +315,7 @@ void FitParameterProxyModel::onSourceDataChanged(const QModelIndex& topLeft,
 {
     Q_UNUSED(bottomRight);
 
-    JobModel* sourceModel = qobject_cast<JobModel*>(sender());
+    auto* sourceModel = qobject_cast<JobModel*>(sender());
     ASSERT(sourceModel);
     SessionItem* sourceItem = sourceModel->itemForIndex(topLeft);
 
@@ -380,7 +380,7 @@ QModelIndex FitParameterProxyModel::indexOfItem(SessionItem* item) const
                 return createIndex(ParentRow(*item), 0, item);
             }
         } else if (parent_item->hasModelType<FitParameterItem>()) {
-            FitParameterItem* fitParam = polymorphic_downcast<FitParameterItem*>(parent_item);
+            auto* fitParam = polymorphic_downcast<FitParameterItem*>(parent_item);
             std::optional<int> col;
             if (item == fitParam->typeItem())
                 col = COL_TYPE;
diff --git a/GUI/Model/Fit/FitParameterProxyModel.h b/GUI/Model/Fit/FitParameterProxyModel.h
index 5f47ab1a486..fe73b86a710 100644
--- a/GUI/Model/Fit/FitParameterProxyModel.h
+++ b/GUI/Model/Fit/FitParameterProxyModel.h
@@ -33,7 +33,7 @@ public:
     explicit FitParameterProxyModel(FitParameterContainerItem* fitParContainer,
                                     QObject* parent = nullptr);
 
-    ~FitParameterProxyModel();
+    ~FitParameterProxyModel() override;
 
     enum EColumn { COL_NAME, COL_TYPE, COL_VALUE, COL_MIN, COL_MAX, NUM_COLUMNS };
 
diff --git a/GUI/Model/Fit/MinimizerItem.h b/GUI/Model/Fit/MinimizerItem.h
index 2c5b3483fb4..2eb74b3af68 100644
--- a/GUI/Model/Fit/MinimizerItem.h
+++ b/GUI/Model/Fit/MinimizerItem.h
@@ -43,7 +43,7 @@ public:
 
     MinimizerContainerItem();
 
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
     std::unique_ptr<ObjectiveMetric> createMetric() const;
 };
 
@@ -62,7 +62,7 @@ public:
     static constexpr auto M_TYPE{"Minuit2"};
 
     MinuitMinimizerItem();
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 //! The GSLMinimizerItem class represents settings for GSL MultiMin minimizer family.
@@ -76,7 +76,7 @@ public:
     static constexpr auto M_TYPE{"GSLMultiMin"};
 
     GSLMultiMinimizerItem();
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 //! The GeneticMinimizerItem class represents settings for TMVA/Genetic minimizer.
@@ -92,7 +92,7 @@ public:
     static constexpr auto M_TYPE{"Genetic"};
 
     GeneticMinimizerItem();
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 //! The SimAnMinimizerItem class represents settings for GSL's simulated annealing minimizer.
@@ -112,7 +112,7 @@ public:
 
     SimAnMinimizerItem();
 
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 //! The GSLLMAMinimizerItem class represents settings for GSL's version of Levenberg-Marquardt.
@@ -126,7 +126,7 @@ public:
     static constexpr auto M_TYPE{"GSLLMA"};
 
     GSLLMAMinimizerItem();
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 //! The TestMinimizerItem class represents domain's TestMinimizer to test whole chain
@@ -136,7 +136,7 @@ public:
     static constexpr auto M_TYPE{"Test"};
 
     TestMinimizerItem();
-    std::unique_ptr<IMinimizer> createMinimizer() const;
+    std::unique_ptr<IMinimizer> createMinimizer() const override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_FIT_MINIMIZERITEM_H
diff --git a/GUI/Model/Fit/ParameterTuningModel.h b/GUI/Model/Fit/ParameterTuningModel.h
index d0375c46a4a..3ac01ae1a5c 100644
--- a/GUI/Model/Fit/ParameterTuningModel.h
+++ b/GUI/Model/Fit/ParameterTuningModel.h
@@ -29,12 +29,12 @@ class ParameterTuningModel : public FilterPropertyProxy {
     Q_OBJECT
 
 public:
-    ParameterTuningModel(QObject* parent = 0);
+    ParameterTuningModel(QObject* parent = nullptr);
 
-    Qt::ItemFlags flags(const QModelIndex& proxyIndex) const;
-    QMimeData* mimeData(const QModelIndexList& proxyIndexes) const;
-    Qt::DropActions supportedDragActions() const;
-    Qt::DropActions supportedDropActions() const;
+    Qt::ItemFlags flags(const QModelIndex& proxyIndex) const override;
+    QMimeData* mimeData(const QModelIndexList& proxyIndexes) const override;
+    Qt::DropActions supportedDragActions() const override;
+    Qt::DropActions supportedDropActions() const override;
 
     ParameterItem* getParameterItem(const QModelIndex& proxyIndex) const;
 };
diff --git a/GUI/Model/From/FromDomain.cpp b/GUI/Model/From/FromDomain.cpp
index bbe77913987..ec93b087120 100644
--- a/GUI/Model/From/FromDomain.cpp
+++ b/GUI/Model/From/FromDomain.cpp
@@ -65,26 +65,26 @@ namespace {
 void setPDF1D(InterferenceRadialParaCrystalItem* item, const IFTDistribution1D* ipdf)
 {
     if (const auto* pdf = dynamic_cast<const FTDistribution1DCauchy*>(ipdf)) {
-        FTDistribution1DCauchyItem* pdfItem = item->setPDFType<FTDistribution1DCauchyItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DCauchyItem>();
         pdfItem->omega().set(pdf->omega());
-    } else if (const FTDistribution1DGauss* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDistribution1DGauss*>(ipdf)) {
-        FTDistribution1DGaussItem* pdfItem = item->setPDFType<FTDistribution1DGaussItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DGaussItem>();
         pdfItem->omega().set(pdf->omega());
     } else if (const auto* pdf = dynamic_cast<const FTDistribution1DGate*>(ipdf)) {
-        FTDistribution1DGateItem* pdfItem = item->setPDFType<FTDistribution1DGateItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DGateItem>();
         pdfItem->omega().set(pdf->omega());
-    } else if (const FTDistribution1DTriangle* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDistribution1DTriangle*>(ipdf)) {
-        FTDistribution1DTriangleItem* pdfItem = item->setPDFType<FTDistribution1DTriangleItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DTriangleItem>();
         pdfItem->omega().set(pdf->omega());
-    } else if (const FTDistribution1DCosine* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDistribution1DCosine*>(ipdf)) {
-        FTDistribution1DCosineItem* pdfItem = item->setPDFType<FTDistribution1DCosineItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DCosineItem>();
         pdfItem->omega().set(pdf->omega());
-    } else if (const FTDistribution1DVoigt* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDistribution1DVoigt*>(ipdf)) {
-        FTDistribution1DVoigtItem* pdfItem = item->setPDFType<FTDistribution1DVoigtItem>();
+        auto* pdfItem = item->setPDFType<FTDistribution1DVoigtItem>();
         pdfItem->omega().set(pdf->omega());
         pdfItem->eta().set(pdf->eta());
     } else
@@ -104,31 +104,31 @@ template <class T> struct SetterPDF2Type {
 template <template <class T> class setType>
 void setPDF2D(Interference2DParaCrystalItem* item, const IFTDistribution2D* pdf)
 {
-    if (const FTDistribution2DCauchy* pdf_cauchy =
+    if (const auto* pdf_cauchy =
             dynamic_cast<const FTDistribution2DCauchy*>(pdf)) {
         FTDistribution2DCauchyItem* pdfItem = setType<FTDistribution2DCauchyItem>()(item);
         pdfItem->setOmegaX(pdf_cauchy->omegaX());
         pdfItem->setOmegaY(pdf_cauchy->omegaY());
         pdfItem->setGamma(Units::rad2deg(pdf_cauchy->gamma()));
-    } else if (const FTDistribution2DGauss* pdf_gauss =
+    } else if (const auto* pdf_gauss =
                    dynamic_cast<const FTDistribution2DGauss*>(pdf)) {
         FTDistribution2DGaussItem* pdfItem = setType<FTDistribution2DGaussItem>()(item);
         pdfItem->setOmegaX(pdf_gauss->omegaX());
         pdfItem->setOmegaY(pdf_gauss->omegaY());
         pdfItem->setGamma(Units::rad2deg(pdf_gauss->gamma()));
-    } else if (const FTDistribution2DGate* pdf_gate =
+    } else if (const auto* pdf_gate =
                    dynamic_cast<const FTDistribution2DGate*>(pdf)) {
         FTDistribution2DGateItem* pdfItem = setType<FTDistribution2DGateItem>()(item);
         pdfItem->setOmegaX(pdf_gate->omegaX());
         pdfItem->setOmegaY(pdf_gate->omegaY());
         pdfItem->setGamma(Units::rad2deg(pdf_gate->gamma()));
-    } else if (const FTDistribution2DCone* pdf_cone =
+    } else if (const auto* pdf_cone =
                    dynamic_cast<const FTDistribution2DCone*>(pdf)) {
         FTDistribution2DConeItem* pdfItem = setType<FTDistribution2DConeItem>()(item);
         pdfItem->setOmegaX(pdf_cone->omegaX());
         pdfItem->setOmegaY(pdf_cone->omegaY());
         pdfItem->setGamma(Units::rad2deg(pdf_cone->gamma()));
-    } else if (const FTDistribution2DVoigt* pdf_voigt =
+    } else if (const auto* pdf_voigt =
                    dynamic_cast<const FTDistribution2DVoigt*>(pdf)) {
         FTDistribution2DVoigtItem* pdfItem = setType<FTDistribution2DVoigtItem>()(item);
         pdfItem->setOmegaX(pdf_voigt->omegaX());
@@ -142,22 +142,22 @@ void setPDF2D(Interference2DParaCrystalItem* item, const IFTDistribution2D* pdf)
 void setDecayFunction1D(Interference1DLatticeItem* item, const IFTDecayFunction1D* ipdf)
 {
     if (const auto* pdf = dynamic_cast<const FTDecayFunction1DCauchy*>(ipdf)) {
-        FTDecayFunction1DCauchyItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction1DCauchyItem>();
         pdfItem->decayLength().set(pdf->decayLength());
-    } else if (const FTDecayFunction1DGauss* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDecayFunction1DGauss*>(ipdf)) {
-        FTDecayFunction1DGaussItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction1DGaussItem>();
         pdfItem->decayLength().set(pdf->decayLength());
-    } else if (const FTDecayFunction1DTriangle* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDecayFunction1DTriangle*>(ipdf)) {
-        FTDecayFunction1DTriangleItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction1DTriangleItem>();
         pdfItem->decayLength().set(pdf->decayLength());
-    } else if (const FTDecayFunction1DVoigt* pdf =
+    } else if (const auto* pdf =
                    dynamic_cast<const FTDecayFunction1DVoigt*>(ipdf)) {
-        FTDecayFunction1DVoigtItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction1DVoigtItem>();
         pdfItem->decayLength().set(pdf->decayLength());
         pdfItem->eta().set(pdf->eta());
@@ -167,23 +167,23 @@ void setDecayFunction1D(Interference1DLatticeItem* item, const IFTDecayFunction1
 
 void setDecayFunction2D(Interference2DLatticeItem* item, const IFTDecayFunction2D* pdf)
 {
-    if (const FTDecayFunction2DCauchy* pdf_cauchy =
+    if (const auto* pdf_cauchy =
             dynamic_cast<const FTDecayFunction2DCauchy*>(pdf)) {
-        FTDecayFunction2DCauchyItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction2DCauchyItem>();
         pdfItem->setDecayLengthX(pdf_cauchy->decayLengthX());
         pdfItem->setDecayLengthY(pdf_cauchy->decayLengthY());
         pdfItem->setGamma(Units::rad2deg(pdf_cauchy->gamma()));
-    } else if (const FTDecayFunction2DGauss* pdf_gauss =
+    } else if (const auto* pdf_gauss =
                    dynamic_cast<const FTDecayFunction2DGauss*>(pdf)) {
-        FTDecayFunction2DGaussItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction2DGaussItem>();
         pdfItem->setDecayLengthX(pdf_gauss->decayLengthX());
         pdfItem->setDecayLengthY(pdf_gauss->decayLengthY());
         pdfItem->setGamma(Units::rad2deg(pdf_gauss->gamma()));
-    } else if (const FTDecayFunction2DVoigt* pdf_voigt =
+    } else if (const auto* pdf_voigt =
                    dynamic_cast<const FTDecayFunction2DVoigt*>(pdf)) {
-        FTDecayFunction2DVoigtItem* pdfItem =
+        auto* pdfItem =
             item->setDecayFunctionType<FTDecayFunction2DVoigtItem>();
         pdfItem->setDecayLengthX(pdf_voigt->decayLengthX());
         pdfItem->setDecayLengthY(pdf_voigt->decayLengthY());
@@ -197,15 +197,15 @@ void set2DLatticeParameters(Interference2DAbstractLatticeItem* item, const Latti
 {
     Lattice2DItem* latticeItem(nullptr);
     if (lattice.className() == "SquareLattice2D") {
-        SquareLattice2DItem* squareLatticeItem = item->setLatticeType<SquareLattice2DItem>();
+        auto* squareLatticeItem = item->setLatticeType<SquareLattice2DItem>();
         squareLatticeItem->setLatticeLength(lattice.length1());
         latticeItem = squareLatticeItem;
     } else if (lattice.className() == "HexagonalLattice2D") {
-        HexagonalLattice2DItem* hexLatticeItem = item->setLatticeType<HexagonalLattice2DItem>();
+        auto* hexLatticeItem = item->setLatticeType<HexagonalLattice2DItem>();
         hexLatticeItem->setLatticeLength(lattice.length1());
         latticeItem = hexLatticeItem;
     } else {
-        BasicLattice2DItem* basicLatticeItem = item->setLatticeType<BasicLattice2DItem>();
+        auto* basicLatticeItem = item->setLatticeType<BasicLattice2DItem>();
         basicLatticeItem->setLatticeLength1(lattice.length1());
         basicLatticeItem->setLatticeLength2(lattice.length2());
         basicLatticeItem->setLatticeAngle(Units::rad2deg(lattice.latticeAngle()));
@@ -227,41 +227,41 @@ void setDistribution(BeamDistributionItem* part_distr_item, ParameterDistributio
 
     DistributionItem* distItem = nullptr;
     if (const auto* distr = dynamic_cast<const DistributionGate*>(p_distribution)) {
-        DistributionGateItem* distr_gate_item =
+        auto* distr_gate_item =
             part_distr_item->setDistributionType<DistributionGateItem>();
         distr_gate_item->setRange(factor * distr->lowerBound(), factor * distr->upperBound());
         distItem = distr_gate_item;
-    } else if (const DistributionLorentz* distr =
+    } else if (const auto* distr =
                    dynamic_cast<const DistributionLorentz*>(p_distribution)) {
-        DistributionLorentzItem* distr_lorentz_item =
+        auto* distr_lorentz_item =
             part_distr_item->setDistributionType<DistributionLorentzItem>();
         distr_lorentz_item->setMean(factor * distr->getMean());
         distr_lorentz_item->setHWHM(factor * distr->getHWHM());
         distItem = distr_lorentz_item;
-    } else if (const DistributionGaussian* distr =
+    } else if (const auto* distr =
                    dynamic_cast<const DistributionGaussian*>(p_distribution)) {
-        DistributionGaussianItem* distr_gauss_item =
+        auto* distr_gauss_item =
             part_distr_item->setDistributionType<DistributionGaussianItem>();
         distr_gauss_item->setMean(factor * distr->getMean());
         distr_gauss_item->setStandardDeviation(factor * distr->getStdDev());
         distItem = distr_gauss_item;
-    } else if (const DistributionLogNormal* distr =
+    } else if (const auto* distr =
                    dynamic_cast<const DistributionLogNormal*>(p_distribution)) {
-        DistributionLogNormalItem* distr_lognorm_item =
+        auto* distr_lognorm_item =
             part_distr_item->setDistributionType<DistributionLogNormalItem>();
         distr_lognorm_item->setMedian(factor * distr->getMedian());
         distr_lognorm_item->setScaleParameter(distr->getScalePar());
         distItem = distr_lognorm_item;
-    } else if (const DistributionCosine* distr =
+    } else if (const auto* distr =
                    dynamic_cast<const DistributionCosine*>(p_distribution)) {
-        DistributionCosineItem* distr_cos_item =
+        auto* distr_cos_item =
             part_distr_item->setDistributionType<DistributionCosineItem>();
         distr_cos_item->setMean(factor * distr->getMean());
         distr_cos_item->setSigma(factor * distr->getSigma());
         distItem = distr_cos_item;
-    } else if (const DistributionTrapezoid* distr =
+    } else if (const auto* distr =
                    dynamic_cast<const DistributionTrapezoid*>(p_distribution)) {
-        DistributionTrapezoidItem* distr_trapez_item =
+        auto* distr_trapez_item =
             part_distr_item->setDistributionType<DistributionTrapezoidItem>();
         distr_trapez_item->setCenter(factor * distr->getMean());
         distr_trapez_item->setLeftWidth(factor * distr->getLeftWidth());
@@ -294,7 +294,7 @@ void addDistributionToBeamItem(ParameterDistribution::WhichParameter which,
 void addRangedDistributionToItem(SessionItem* item, const IRangedDistribution& ranged, double mean,
                                  double std_dev)
 {
-    auto distr_item = dynamic_cast<BeamDistributionItem*>(item);
+    auto *distr_item = dynamic_cast<BeamDistributionItem*>(item);
     if (!distr_item)
         return;
     ParameterDistribution par_distr(ParameterDistribution::None,
@@ -315,7 +315,7 @@ void GUI::Transform::FromDomain::set1DLatticeItem(Interference1DLatticeItem* ite
     item->length().set(sample.getLength());
     item->rotationAngle().set(Units::rad2deg(sample.getXi()));
 
-    auto pdf = OnlyChildOfType<IFTDecayFunction1D>(sample);
+    const auto *pdf = OnlyChildOfType<IFTDecayFunction1D>(sample);
     setDecayFunction1D(item, pdf);
     setPositionVariance(item, sample);
 }
@@ -327,7 +327,7 @@ void GUI::Transform::FromDomain::set2DLatticeItem(Interference2DLatticeItem* ite
 
     item->setXiIntegration(sample.integrationOverXi());
 
-    auto p_pdf = OnlyChildOfType<IFTDecayFunction2D>(sample);
+    const auto *p_pdf = OnlyChildOfType<IFTDecayFunction2D>(sample);
     setDecayFunction2D(item, p_pdf);
     setPositionVariance(item, sample);
 }
@@ -344,7 +344,7 @@ void GUI::Transform::FromDomain::set2DParaCrystalItem(Interference2DParaCrystalI
 
     auto pdfs = ChildNodesOfType<IFTDistribution2D>(sample);
 
-    if (pdfs.size() >= 1) {
+    if (!pdfs.empty()) {
         setPDF2D<SetterPDF1Type>(item, pdfs[0]);
         if (pdfs.size() >= 2)
             setPDF2D<SetterPDF2Type>(item, pdfs[1]);
@@ -379,7 +379,7 @@ void GUI::Transform::FromDomain::setRadialParaCrystalItem(
     item->domainSize().set(sample.domainSize());
     item->kappa().set(sample.kappa());
 
-    auto ipdf = OnlyChildOfType<IFTDistribution1D>(sample);
+    const auto *ipdf = OnlyChildOfType<IFTDistribution1D>(sample);
     setPDF1D(item, ipdf);
     setPositionVariance(item, sample);
 }
@@ -394,7 +394,7 @@ void GUI::Transform::FromDomain::setLayerItem(LayerItem* layerItem, const Layer*
     if (top_interface) {
         const LayerRoughness* roughness = top_interface->getRoughness();
         if (GUI::Transform::FromDomain::isValidRoughness(roughness)) {
-            LayerBasicRoughnessItem* roughnessItem =
+            auto* roughnessItem =
                 layerItem->setRoughnessType<LayerBasicRoughnessItem>();
             GUI::Transform::FromDomain::setRoughnessItem(roughnessItem, *roughness);
         }
@@ -466,7 +466,7 @@ void GUI::Transform::FromDomain::setSpecularBeamItem(SpecularBeamItem* beam_item
     beam_item->setInclinationAngle(0.0); // inclination angle is hardcoded
     beam_item->setAzimuthalAngle(0.0);   // azimuthal angle is hardcoded
 
-    auto axis_item = beam_item->inclinationAxis();
+    auto *axis_item = beam_item->inclinationAxis();
     GUI::Transform::FromDomain::setAxisItem(axis_item, *simulation.coordinateAxis(),
                                             1. / Units::deg);
 
@@ -476,7 +476,7 @@ void GUI::Transform::FromDomain::setSpecularBeamItem(SpecularBeamItem* beam_item
     if (!scan)
         return;
 
-    auto resolution = scan->wavelengthResolution();
+    const auto *resolution = scan->wavelengthResolution();
     if (!resolution->empty()) {
         double mean = scan->wavelength();
         double std_dev = resolution->stdDevs(mean, 1).front();
@@ -498,7 +498,7 @@ void GUI::Transform::FromDomain::setDetector(Instrument2DItem* instrument_item,
     const IDetector& detector = simulation.detector();
     setDetectorGeometry(instrument_item, detector);
 
-    auto detector_item = instrument_item->detector();
+    auto *detector_item = instrument_item->detector();
 
     setDetectorResolution(detector_item, detector);
     setDetectorMasks(detector_item, simulation);
@@ -508,11 +508,11 @@ void GUI::Transform::FromDomain::setDetector(Instrument2DItem* instrument_item,
 void GUI::Transform::FromDomain::setDetectorGeometry(Instrument2DItem* instrument_item,
                                                      const IDetector& detector)
 {
-    if (auto det = dynamic_cast<const SphericalDetector*>(&detector)) {
-        auto item = instrument_item->setDetectorType<SphericalDetectorItem>();
+    if (const auto *det = dynamic_cast<const SphericalDetector*>(&detector)) {
+        auto *item = instrument_item->setDetectorType<SphericalDetectorItem>();
         setSphericalDetector(item, *det);
-    } else if (auto det = dynamic_cast<const RectangularDetector*>(&detector)) {
-        auto item = instrument_item->setDetectorType<RectangularDetectorItem>();
+    } else if (const auto *det = dynamic_cast<const RectangularDetector*>(&detector)) {
+        auto *item = instrument_item->setDetectorType<RectangularDetectorItem>();
         setRectangularDetector(item, *det);
     } else {
         throw Error("GUI::Transform::FromDomain::setDetectorGeometry() -> Unknown detector type.");
@@ -527,10 +527,10 @@ void GUI::Transform::FromDomain::setDetectorResolution(DetectorItem* detector_it
     if (!p_resfunc)
         return;
 
-    if (auto p_convfunc = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) {
-        if (auto resfunc = dynamic_cast<const ResolutionFunction2DGaussian*>(
+    if (const auto *p_convfunc = dynamic_cast<const ConvolutionDetectorResolution*>(p_resfunc)) {
+        if (const auto *resfunc = dynamic_cast<const ResolutionFunction2DGaussian*>(
                 p_convfunc->getResolutionFunction2D())) {
-            ResolutionFunction2DGaussianItem* item =
+            auto* item =
                 detector_item->setResolutionFunctionType<ResolutionFunction2DGaussianItem>();
             double scale(1.0);
             if (detector_item->modelType() == SphericalDetectorItem::M_TYPE)
@@ -571,12 +571,12 @@ void GUI::Transform::FromDomain::setSphericalDetector(SphericalDetectorItem* det
     const IAxis& phi_axis = detector.axis(0);
     const IAxis& alpha_axis = detector.axis(1);
 
-    auto phiAxisItem = detector_item->phiAxisItem();
+    auto *phiAxisItem = detector_item->phiAxisItem();
     phiAxisItem->setBinCount(phi_axis.size());
     phiAxisItem->setLowerBound(Units::rad2deg(phi_axis.lowerBound()));
     phiAxisItem->setUpperBound(Units::rad2deg(phi_axis.upperBound()));
 
-    auto alphaAxisItem = detector_item->alphaAxisItem();
+    auto *alphaAxisItem = detector_item->alphaAxisItem();
     alphaAxisItem->setBinCount(alpha_axis.size());
     alphaAxisItem->setLowerBound(Units::rad2deg(alpha_axis.lowerBound()));
     alphaAxisItem->setUpperBound(Units::rad2deg(alpha_axis.upperBound()));
@@ -586,11 +586,11 @@ void GUI::Transform::FromDomain::setRectangularDetector(RectangularDetectorItem*
                                                         const RectangularDetector& detector)
 {
     // Axes
-    auto xAxisItem = detector_item->xAxisItem();
+    auto *xAxisItem = detector_item->xAxisItem();
     xAxisItem->setBinCount(detector.getNbinsX());
     xAxisItem->setUpperBound(detector.getWidth());
 
-    auto yAxisItem = detector_item->yAxisItem();
+    auto *yAxisItem = detector_item->yAxisItem();
     yAxisItem->setBinCount((int)detector.getNbinsY());
     yAxisItem->setUpperBound(detector.getHeight());
 
@@ -660,7 +660,7 @@ void GUI::Transform::FromDomain::setDetectorMasks(DetectorItem* detector_item,
 void GUI::Transform::FromDomain::setMaskContainer(MaskContainerItem* container_item,
                                                   const IDetector& detector, double scale)
 {
-    auto detectorMask = detector.detectorMask();
+    const auto *detectorMask = detector.detectorMask();
     for (size_t i_mask = 0; i_mask < detectorMask->numberOfMasks(); ++i_mask) {
         bool mask_value(false);
         const IShape2D* shape = detectorMask->getMaskShape(i_mask, mask_value);
@@ -765,9 +765,9 @@ void GUI::Transform::FromDomain::setItemFromSample(
 void GUI::Transform::FromDomain::setBackground(InstrumentItem* instrument_item,
                                                const ISimulation& simulation)
 {
-    auto p_bg = simulation.background();
-    if (auto p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) {
-        ConstantBackgroundItem* constant_bg_item =
+    const auto *p_bg = simulation.background();
+    if (const auto *p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) {
+        auto* constant_bg_item =
             instrument_item->setBackgroundType<ConstantBackgroundItem>();
         double value = p_constant_bg->backgroundValue();
         constant_bg_item->setBackgroundValue(value);
@@ -781,9 +781,9 @@ void GUI::Transform::FromDomain::setFootprintFactor(const IFootprintFactor* foot
 {
     if (!footprint)
         return;
-    if (const auto gaussian_fp = dynamic_cast<const FootprintGauss*>(footprint)) {
+    if (const auto *const gaussian_fp = dynamic_cast<const FootprintGauss*>(footprint)) {
         beam_item->setGaussianFootprint(gaussian_fp->widthRatio());
-    } else if (const auto square_fp = dynamic_cast<const FootprintSquare*>(footprint)) {
+    } else if (const auto *const square_fp = dynamic_cast<const FootprintSquare*>(footprint)) {
         beam_item->setSquareFootprint(square_fp->widthRatio());
     }
 }
diff --git a/GUI/Model/From/FromDomain.h b/GUI/Model/From/FromDomain.h
index 3843371f3bc..0287f2e4f71 100644
--- a/GUI/Model/From/FromDomain.h
+++ b/GUI/Model/From/FromDomain.h
@@ -75,7 +75,7 @@ void setHardDiskItem(InterferenceHardDiskItem* item, const InterferenceHardDisk&
 void setRadialParaCrystalItem(InterferenceRadialParaCrystalItem* item,
                               const InterferenceRadialParaCrystal& sample);
 
-void setLayerItem(LayerItem* layer_item, const Layer* layer, const LayerInterface* top_interface);
+void setLayerItem(LayerItem* layerItem, const Layer* layer, const LayerInterface* top_interface);
 
 void setRoughnessItem(LayerBasicRoughnessItem* item, const LayerRoughness& sample);
 
diff --git a/GUI/Model/From/GUIObjectBuilder.cpp b/GUI/Model/From/GUIObjectBuilder.cpp
index f6151a575dc..2c642f36c1a 100644
--- a/GUI/Model/From/GUIObjectBuilder.cpp
+++ b/GUI/Model/From/GUIObjectBuilder.cpp
@@ -30,7 +30,7 @@ GISASInstrumentItem* createGISASInstrumentItem(InstrumentModel* model,
                                                const GISASSimulation& simulation,
                                                const QString& name)
 {
-    auto result = model->insertItem<GISASInstrumentItem>();
+    auto *result = model->insertItem<GISASInstrumentItem>();
     result->setItemName(name);
     GUI::Transform::FromDomain::setGISASBeamItem(result->beamItem(), simulation);
     GUI::Transform::FromDomain::setDetector(result, simulation);
@@ -43,7 +43,7 @@ OffSpecularInstrumentItem* createOffSpecularInstrumentItem(InstrumentModel* mode
                                                            const OffSpecularSimulation& simulation,
                                                            const QString& name)
 {
-    auto result = model->insertItem<OffSpecularInstrumentItem>();
+    auto *result = model->insertItem<OffSpecularInstrumentItem>();
     result->setItemName(name);
     GUI::Transform::FromDomain::setOffSpecularBeamItem(result->beamItem(), simulation);
     GUI::Transform::FromDomain::setDetector(result, simulation);
@@ -60,7 +60,7 @@ SpecularInstrumentItem* createSpecularInstrumentItem(InstrumentModel* model,
                                                      const SpecularSimulation& simulation,
                                                      const QString& name)
 {
-    auto result = model->insertItem<SpecularInstrumentItem>();
+    auto *result = model->insertItem<SpecularInstrumentItem>();
     result->setItemName(name);
     GUI::Transform::FromDomain::setSpecularBeamItem(result->beamItem(), simulation);
     GUI::Transform::FromDomain::setBackground(result, simulation);
@@ -84,11 +84,11 @@ SessionItem* GUI::Model::ObjectBuilder::populateInstrumentModel(InstrumentModel*
                        ? QString::fromStdString(simulation.instrument().className())
                        : instrument_name;
 
-    if (auto gisasSimulation = dynamic_cast<const GISASSimulation*>(&simulation))
+    if (const auto *gisasSimulation = dynamic_cast<const GISASSimulation*>(&simulation))
         return createGISASInstrumentItem(p_instrument_model, *gisasSimulation, name);
-    if (auto offSpecSimulation = dynamic_cast<const OffSpecularSimulation*>(&simulation))
+    if (const auto *offSpecSimulation = dynamic_cast<const OffSpecularSimulation*>(&simulation))
         return createOffSpecularInstrumentItem(p_instrument_model, *offSpecSimulation, name);
-    if (auto spec_simulation = dynamic_cast<const SpecularSimulation*>(&simulation))
+    if (const auto *spec_simulation = dynamic_cast<const SpecularSimulation*>(&simulation))
         return createSpecularInstrumentItem(p_instrument_model, *spec_simulation, name);
     ASSERT(0);
 }
diff --git a/GUI/Model/From/GUIObjectBuilder.h b/GUI/Model/From/GUIObjectBuilder.h
index 1dad6408fc3..877bf3deb76 100644
--- a/GUI/Model/From/GUIObjectBuilder.h
+++ b/GUI/Model/From/GUIObjectBuilder.h
@@ -33,7 +33,7 @@ SessionItem* populateInstrumentModel(InstrumentModel* p_instrument_model,
                                      const ISimulation& simulation,
                                      const QString& instrument_name = "");
 
-SessionItem* populateDocumentModel(DocumentModel* p_documentModel, const ISimulation& simulation);
+SessionItem* populateDocumentModel(DocumentModel* p_document_model, const ISimulation& simulation);
 
 } // namespace GUI::Model::ObjectBuilder
 
diff --git a/GUI/Model/Group/DistributionItems.cpp b/GUI/Model/Group/DistributionItems.cpp
index 5b842cf197f..275788f75e3 100644
--- a/GUI/Model/Group/DistributionItems.cpp
+++ b/GUI/Model/Group/DistributionItems.cpp
@@ -34,7 +34,7 @@ createIRangedDistribution(const SymmetricDistributionItem& distr_item, double sc
     return std::make_unique<DistrType>(n_samples, n_sig, limits);
 }
 
-const GroupInfo createRealLimitsGroup()
+GroupInfo createRealLimitsGroup()
 {
     GroupInfo info;
     info.add(LimitlessItem::M_TYPE, "Unlimited");
diff --git a/GUI/Model/Group/DistributionItems.h b/GUI/Model/Group/DistributionItems.h
index f846f9fb9fb..6e2c3a3e10e 100644
--- a/GUI/Model/Group/DistributionItems.h
+++ b/GUI/Model/Group/DistributionItems.h
@@ -155,10 +155,10 @@ public:
     void showMean(bool flag) override;
 
     double median() const;
-    void setMedian(const double median);
+    void setMedian(double median);
 
     double scaleParameter() const;
-    void setScaleParameter(const double scale_par);
+    void setScaleParameter(double scale_par);
 };
 
 class DistributionCosineItem : public SymmetricDistributionItem {
diff --git a/GUI/Model/Group/FilterPropertyProxy.cpp b/GUI/Model/Group/FilterPropertyProxy.cpp
index 05ec4a1c6ae..4c36ade7a92 100644
--- a/GUI/Model/Group/FilterPropertyProxy.cpp
+++ b/GUI/Model/Group/FilterPropertyProxy.cpp
@@ -26,7 +26,7 @@ int FilterPropertyProxy::columnCount(const QModelIndex& parent) const
 
 QModelIndex FilterPropertyProxy::toSourceIndex(QModelIndex index)
 {
-    FilterPropertyProxy* proxy =
+    auto* proxy =
         dynamic_cast<FilterPropertyProxy*>(const_cast<QAbstractItemModel*>(index.model()));
     if (proxy)
         return proxy->mapToSource(index);
@@ -39,9 +39,6 @@ bool FilterPropertyProxy::filterAcceptsRow(int sourceRow, const QModelIndex& sou
     if (!sourceParent.isValid())
         return true;
     const QString modelType = index.data(SessionFlags::ModelTypeRole).toString();
-    if (modelType == PropertyItem::M_TYPE || modelType == GroupItem::M_TYPE
-        || modelType == VectorItem::M_TYPE)
-        return false;
-
-    return true; //! sourceModel()->data(index, Qt::DisplayRole).isValid();
+    return !(modelType == PropertyItem::M_TYPE || modelType == GroupItem::M_TYPE
+        || modelType == VectorItem::M_TYPE); //! sourceModel()->data(index, Qt::DisplayRole).isValid();
 }
diff --git a/GUI/Model/Group/FilterPropertyProxy.h b/GUI/Model/Group/FilterPropertyProxy.h
index b2ba9a55866..89fad39f08d 100644
--- a/GUI/Model/Group/FilterPropertyProxy.h
+++ b/GUI/Model/Group/FilterPropertyProxy.h
@@ -25,16 +25,16 @@ class FilterPropertyProxy : public QSortFilterProxyModel {
     Q_OBJECT
 
 public:
-    FilterPropertyProxy(int columns, QObject* parent = 0)
+    FilterPropertyProxy(int columns, QObject* parent = nullptr)
         : QSortFilterProxyModel(parent), m_columns(columns)
     {
     }
-    int columnCount(const QModelIndex& parent) const;
+    int columnCount(const QModelIndex& parent) const override;
 
     static QModelIndex toSourceIndex(QModelIndex index);
 
 protected:
-    bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const;
+    bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override;
 
 private:
     int m_columns;
diff --git a/GUI/Model/Group/GroupInfo.cpp b/GUI/Model/Group/GroupInfo.cpp
index efa9c989b33..8103ea1cb24 100644
--- a/GUI/Model/Group/GroupInfo.cpp
+++ b/GUI/Model/Group/GroupInfo.cpp
@@ -21,7 +21,7 @@ GroupInfo::GroupInfo(const QStringList& modelTypes, const QString& defaultType,
                      bool is_sorted /*= true*/)
     : GroupInfo(is_sorted)
 {
-    for (auto modelType : modelTypes)
+    for (const auto& modelType : modelTypes)
         add(modelType);
 
     setDefaultType(defaultType);
@@ -64,7 +64,7 @@ void GroupInfo::setDefaultType(const QString& modelType)
 QStringList GroupInfo::itemTypes() const
 {
     QStringList result;
-    for (auto& pair : m_info)
+    for (const auto& pair : m_info)
         result.append(pair.m_itemType);
 
     return result;
@@ -73,7 +73,7 @@ QStringList GroupInfo::itemTypes() const
 QStringList GroupInfo::itemLabels() const
 {
     QStringList result;
-    for (auto& pair : m_info)
+    for (const auto& pair : m_info)
         result.append(pair.m_itemLabel);
 
     return result;
@@ -81,7 +81,7 @@ QStringList GroupInfo::itemLabels() const
 
 bool GroupInfo::containsType(const QString& itemType) const
 {
-    for (auto& pair : m_info)
+    for (const auto& pair : m_info)
         if (itemType == pair.m_itemType)
             return true;
 
diff --git a/GUI/Model/Group/GroupItem.cpp b/GUI/Model/Group/GroupItem.cpp
index 61b58dfebe9..c7c1fbe9de2 100644
--- a/GUI/Model/Group/GroupItem.cpp
+++ b/GUI/Model/Group/GroupItem.cpp
@@ -72,7 +72,7 @@ void GroupItem::onValueChange()
     if (!value().canConvert<ComboProperty>())
         throw Error("GroupItem::onValueChange() -> Error. Wrong property type");
 
-    ComboProperty property = value().value<ComboProperty>();
+    auto property = value().value<ComboProperty>();
     if (property.currentIndex() != m_controller->currentIndex()) {
         m_controller->setCurrentIndex(property.currentIndex());
         // because of the delay between ComboProperty change and the change in GroupItem here,
diff --git a/GUI/Model/Group/GroupItem.h b/GUI/Model/Group/GroupItem.h
index 7971efe3141..9332f4ca67d 100644
--- a/GUI/Model/Group/GroupItem.h
+++ b/GUI/Model/Group/GroupItem.h
@@ -30,7 +30,7 @@ public:
     static constexpr auto M_TYPE{"GroupProperty"};
 
     GroupItem();
-    ~GroupItem();
+    ~GroupItem() override;
 
     void setGroupInfo(const GroupInfo& groupInfo);
     SessionItem* currentItem() const;
diff --git a/GUI/Model/Group/GroupItemController.cpp b/GUI/Model/Group/GroupItemController.cpp
index 2cf71f27a5b..5c3046bb6f8 100644
--- a/GUI/Model/Group/GroupItemController.cpp
+++ b/GUI/Model/Group/GroupItemController.cpp
@@ -13,12 +13,14 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Group/GroupItemController.h"
+
+#include <utility>
 #include "GUI/Model/Group/ItemFactory.h"
 #include "GUI/Model/Session/SessionItem.h"
 #include "GUI/Util/ComboProperty.h"
 
 GroupItemController::GroupItemController(SessionItem* groupItem, GroupInfo groupInfo)
-    : m_groupItem(groupItem), m_groupInfo(groupInfo)
+    : m_groupItem(groupItem), m_groupInfo(std::move(groupInfo))
 {
     m_current_type = m_groupInfo.defaultType();
     m_groupItem->insertItem(-1, createCorrespondingItem());
@@ -39,11 +41,11 @@ void GroupItemController::setCurrentType(const QString& type)
     if (type == currentType())
         return;
 
-    auto prevItem = currentItem();
+    auto *prevItem = currentItem();
     m_current_type = type;
 
     if (m_groupItem) {
-        if (auto item = m_groupItem->getChildOfType(m_current_type)) {
+        if (auto *item = m_groupItem->getChildOfType(m_current_type)) {
             item->setVisible(true);
             item->setEnabled(true);
         } else {
@@ -63,7 +65,7 @@ SessionItem* GroupItemController::getItemOfType(const QString& type)
 {
     if (!m_groupItem)
         return nullptr;
-    if (auto item = m_groupItem->getChildOfType(type))
+    if (auto *item = m_groupItem->getChildOfType(type))
         return item;
     SessionItem* new_item = addItem(type);
     if (type != currentType()) {
diff --git a/GUI/Model/Group/SelectionDescriptor.h b/GUI/Model/Group/SelectionDescriptor.h
index 54ac83313ae..9f4f34fd8e9 100644
--- a/GUI/Model/Group/SelectionDescriptor.h
+++ b/GUI/Model/Group/SelectionDescriptor.h
@@ -64,7 +64,7 @@ public:
         label = item->displayName();
         options = item->value().value<ComboProperty>().getValues();
         currentIndexSetter = [=](int index) {
-            ComboProperty comboProperty = item->value().value<ComboProperty>();
+            auto comboProperty = item->value().value<ComboProperty>();
 
             if (comboProperty.currentIndex() != index) {
                 comboProperty.setCurrentIndex(index);
@@ -77,9 +77,9 @@ public:
             currentItem = [=] { return dynamic_cast<T>(item->currentItem()); };
     }
 
-    virtual void setCurrentIndex(int newIndex) const override { currentIndexSetter(newIndex); }
+    void setCurrentIndex(int newIndex) const override { currentIndexSetter(newIndex); }
 
-    virtual int currentIndex() const override { return currentIndexGetter(); }
+    int currentIndex() const override { return currentIndexGetter(); }
 
     QString label;                          //!< A label text (short, no trailing colon)
     QString tooltip;                        //!< Tooltip text
diff --git a/GUI/Model/IO/AbstractDataLoader.h b/GUI/Model/IO/AbstractDataLoader.h
index f7eaad03773..fdb6a123b68 100644
--- a/GUI/Model/IO/AbstractDataLoader.h
+++ b/GUI/Model/IO/AbstractDataLoader.h
@@ -30,7 +30,7 @@ class AbstractDataLoaderResultModel;
 class AbstractDataLoader : public QObject {
     Q_OBJECT
 public:
-    virtual ~AbstractDataLoader() = default;
+    ~AbstractDataLoader() override = default;
 
     //! The name shown in the format selection combo
     virtual QString name() const = 0;
diff --git a/GUI/Model/IO/AbstractDataLoaderResultModel.h b/GUI/Model/IO/AbstractDataLoaderResultModel.h
index c3544e0c389..06e57988a7f 100644
--- a/GUI/Model/IO/AbstractDataLoaderResultModel.h
+++ b/GUI/Model/IO/AbstractDataLoaderResultModel.h
@@ -29,10 +29,10 @@ public:
 
     // overrides of QAbstractTableModel
 public:
-    virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override;
-    virtual int rowCount(const QModelIndex& parent) const override;
-    virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
-    virtual QVariant headerData(int section, Qt::Orientation orientation,
+    int columnCount(const QModelIndex& parent = QModelIndex()) const override;
+    int rowCount(const QModelIndex& parent) const override;
+    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+    QVariant headerData(int section, Qt::Orientation orientation,
                                 int role = Qt::DisplayRole) const override;
 
 public:
diff --git a/GUI/Model/IO/DataLoaders1D.cpp b/GUI/Model/IO/DataLoaders1D.cpp
index fe23e2c0fab..1da1d43caf0 100644
--- a/GUI/Model/IO/DataLoaders1D.cpp
+++ b/GUI/Model/IO/DataLoaders1D.cpp
@@ -52,7 +52,7 @@ QVector<AbstractDataLoader1D*> DataLoaders1D::recentlyUsedLoaders() const
 
 AbstractDataLoader1D* DataLoaders1D::createFromPersistentName(const QString& persistentClassName)
 {
-    std::map<QString, std::function<AbstractDataLoader1D*()>>::const_iterator it =
+    auto it =
         m_createLoaders.find(persistentClassName);
 
     if (it != m_createLoaders.end())
diff --git a/GUI/Model/IO/OutputDataIOHistory.cpp b/GUI/Model/IO/OutputDataIOHistory.cpp
index 7a5a0450394..f58ebb287a6 100644
--- a/GUI/Model/IO/OutputDataIOHistory.cpp
+++ b/GUI/Model/IO/OutputDataIOHistory.cpp
@@ -76,7 +76,7 @@ QStringList OutputDataDirHistory::savedFileNames() const
 {
     QStringList result;
 
-    for (auto& info : m_history)
+    for (const auto& info : m_history)
         result.append(info.fileName());
 
     return result;
@@ -84,7 +84,7 @@ QStringList OutputDataDirHistory::savedFileNames() const
 
 OutputDataSaveInfo OutputDataDirHistory::itemInfo(const SaveLoadInterface* item) const
 {
-    for (auto& info : m_history) {
+    for (const auto& info : m_history) {
         if (info.item() == item)
             return info;
     }
diff --git a/GUI/Model/IO/OutputDataIOHistory.h b/GUI/Model/IO/OutputDataIOHistory.h
index b34d8fb902e..a912b9b5f7c 100644
--- a/GUI/Model/IO/OutputDataIOHistory.h
+++ b/GUI/Model/IO/OutputDataIOHistory.h
@@ -47,7 +47,7 @@ private:
 
 class OutputDataDirHistory {
 public:
-    OutputDataDirHistory() {}
+    OutputDataDirHistory() = default;
 
     void markAsSaved(const SaveLoadInterface* item);
 
diff --git a/GUI/Model/Instrument/BackgroundItems.h b/GUI/Model/Instrument/BackgroundItems.h
index 1af041e96e5..e1291969ae3 100644
--- a/GUI/Model/Instrument/BackgroundItems.h
+++ b/GUI/Model/Instrument/BackgroundItems.h
@@ -31,7 +31,7 @@ public:
     static constexpr auto M_TYPE{"NoBackground"};
 
     NoBackgroundItem();
-    std::unique_ptr<IBackground> createBackground() const;
+    std::unique_ptr<IBackground> createBackground() const override;
 };
 
 class ConstantBackgroundItem : public BackgroundItem {
@@ -42,7 +42,7 @@ public:
     static constexpr auto M_TYPE{"ConstantBackground"};
 
     ConstantBackgroundItem();
-    std::unique_ptr<IBackground> createBackground() const;
+    std::unique_ptr<IBackground> createBackground() const override;
 
     double backgroundValue() const;
     void setBackgroundValue(double value);
@@ -53,7 +53,7 @@ public:
     static constexpr auto M_TYPE{"PoissonNoiseBackground"};
 
     PoissonNoiseBackgroundItem();
-    std::unique_ptr<IBackground> createBackground() const;
+    std::unique_ptr<IBackground> createBackground() const override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_INSTRUMENT_BACKGROUNDITEMS_H
diff --git a/GUI/Model/Instrument/BeamDistributionItem.cpp b/GUI/Model/Instrument/BeamDistributionItem.cpp
index dbd1bc0a3f9..b1fe4580e47 100644
--- a/GUI/Model/Instrument/BeamDistributionItem.cpp
+++ b/GUI/Model/Instrument/BeamDistributionItem.cpp
@@ -20,7 +20,7 @@
 namespace {
 
 // create a GroupInfo containing all distributions
-const GroupInfo createAllDistributionsGroup()
+GroupInfo createAllDistributionsGroup()
 {
     GroupInfo info;
     info.add(DistributionNoneItem::M_TYPE, "None");
@@ -35,7 +35,7 @@ const GroupInfo createAllDistributionsGroup()
 }
 
 // create a GroupInfo containing all symmetric distributions
-const GroupInfo createSymmetricDistributionsGroup()
+GroupInfo createSymmetricDistributionsGroup()
 {
     GroupInfo info;
     info.add(DistributionNoneItem::M_TYPE, "None");
@@ -61,7 +61,7 @@ std::unique_ptr<ParameterDistribution> BeamDistributionItem::getParameterDistrib
     ParameterDistribution::WhichParameter which) const
 {
     std::unique_ptr<ParameterDistribution> P_par_distr{};
-    if (auto distributionItem = dynamic_cast<DistributionItem*>(getGroupItem(P_DISTRIBUTION))) {
+    if (auto *distributionItem = dynamic_cast<DistributionItem*>(getGroupItem(P_DISTRIBUTION))) {
         auto P_distribution = createDistribution1D();
 
         if (P_distribution) {
@@ -87,10 +87,10 @@ std::unique_ptr<ParameterDistribution> BeamDistributionItem::getParameterDistrib
 
 void BeamDistributionItem::initDistributionItem(bool show_mean)
 {
-    auto groupItem = item<GroupItem>(P_DISTRIBUTION);
+    auto *groupItem = item<GroupItem>(P_DISTRIBUTION);
 
     DistributionNoneItem* distributionNone = nullptr;
-    for (auto item : groupItem->groupItems()) {
+    for (auto *item : groupItem->groupItems()) {
         if (item->modelType() == DistributionNoneItem::M_TYPE) {
             distributionNone = dynamic_cast<DistributionNoneItem*>(item);
             break;
@@ -103,7 +103,7 @@ void BeamDistributionItem::initDistributionItem(bool show_mean)
     const RealLimits limits = distributionNone->meanItem()->limits();
     const QString editor_type = distributionNone->meanItem()->editorType();
 
-    for (auto item : groupItem->groupItems()) {
+    for (auto *item : groupItem->groupItems()) {
         auto* distrItem = dynamic_cast<DistributionItem*>(item);
         distrItem->showMean(show_mean);
 
@@ -111,7 +111,7 @@ void BeamDistributionItem::initDistributionItem(bool show_mean)
             continue;
 
         distrItem->init_parameters(distributionNone->mean(), limits);
-        if (auto symmetric_distr = dynamic_cast<SymmetricDistributionItem*>(distrItem))
+        if (auto *symmetric_distr = dynamic_cast<SymmetricDistributionItem*>(distrItem))
             symmetric_distr->meanItem()->setEditorType(editor_type).setLimits(limits);
 
         // hiding limits from the editor
@@ -161,7 +161,7 @@ DistributionItem* BeamDistributionItem::setDistributionType(const QString& model
            || model_type == DistributionLorentzItem::M_TYPE
            || model_type == DistributionNoneItem::M_TYPE);
 
-    return static_cast<DistributionItem*>(setGroupProperty(P_DISTRIBUTION, model_type));
+    return dynamic_cast<DistributionItem*>(setGroupProperty(P_DISTRIBUTION, model_type));
 }
 
 SessionItem* BeamDistributionItem::distributionItem() const
@@ -183,7 +183,7 @@ void BeamDistributionItem::register_distribution_group(const Distributions distr
 
 std::unique_ptr<IDistribution1D> BeamDistributionItem::createDistribution1D() const
 {
-    if (auto distItem = dynamic_cast<DistributionItem*>(getGroupItem(P_DISTRIBUTION)))
+    if (auto *distItem = dynamic_cast<DistributionItem*>(getGroupItem(P_DISTRIBUTION)))
         return distItem->createDistribution(scaleFactor());
 
     return {};
diff --git a/GUI/Model/Instrument/BeamDistributionItem.h b/GUI/Model/Instrument/BeamDistributionItem.h
index 436f03a7830..2c23943cf28 100644
--- a/GUI/Model/Instrument/BeamDistributionItem.h
+++ b/GUI/Model/Instrument/BeamDistributionItem.h
@@ -45,7 +45,7 @@ public:
 
 protected:
     enum class Distributions { All, Symmetric };
-    void register_distribution_group(const Distributions distributions);
+    void register_distribution_group(Distributions distributions);
     void initDistributionItem(bool show_mean);
 
     virtual std::unique_ptr<IDistribution1D> createDistribution1D() const;
diff --git a/GUI/Model/Instrument/BeamItems.cpp b/GUI/Model/Instrument/BeamItems.cpp
index a03a90c1ec1..0603697b809 100644
--- a/GUI/Model/Instrument/BeamItems.cpp
+++ b/GUI/Model/Instrument/BeamItems.cpp
@@ -28,7 +28,7 @@ namespace {
 // defines wavelength limits according to given maximum q value
 RealLimits getLimits(double max_q);
 
-const GroupInfo createFootprintGroup()
+GroupInfo createFootprintGroup()
 {
     GroupInfo info;
     info.add(FootprintNoneItem::M_TYPE, "None");
@@ -148,7 +148,7 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem(M_TYPE)
     azimuthalAngleItem()->setVisible(false);
 
     static const GroupInfo footprintGroup = createFootprintGroup();
-    auto item = addGroupProperty(P_FOOTPRINT, footprintGroup);
+    auto *item = addGroupProperty(P_FOOTPRINT, footprintGroup);
     item->setDisplayName(footprint_group_label);
     item->setToolTip("Footprint type");
 
@@ -156,7 +156,7 @@ SpecularBeamItem::SpecularBeamItem() : BeamItem(M_TYPE)
         [this](SessionItem*, QString property) {
             if (!SymmetricDistributionItem::isMeanPropertyName(property))
                 return;
-            if (auto axis_item = dynamic_cast<PointwiseAxisItem*>(inclinationAxis()))
+            if (auto *axis_item = dynamic_cast<PointwiseAxisItem*>(inclinationAxis()))
                 axis_item->updateIndicators();
         },
         this);
@@ -223,13 +223,13 @@ void SpecularBeamItem::updateToData(const IAxis& axis, QString units) const
 {
     if (units == "nbins") {
         inclinationAxisGroup()->setCurrentType(BasicAxisItem::M_TYPE);
-        auto axis_item = inclinationAxis();
+        auto *axis_item = inclinationAxis();
         axis_item->setBinCount(static_cast<int>(axis.size()));
         return;
     }
 
-    auto axis_group = inclinationAxisGroup();
-    auto axis_item = axis_group->firstChildOfType<PointwiseAxisItem>();
+    auto *axis_group = inclinationAxisGroup();
+    auto *axis_item = axis_group->firstChildOfType<PointwiseAxisItem>();
     axis_item->init(axis, units);
     axis_group->setCurrentType(PointwiseAxisItem::M_TYPE); // calls updateWavelength()
     axis_item->updateIndicators();
@@ -237,10 +237,10 @@ void SpecularBeamItem::updateToData(const IAxis& axis, QString units) const
 
 void SpecularBeamItem::updateWavelength()
 {
-    auto item = inclinationAxisGroup()->currentItem();
-    auto wl_item = static_cast<SpecularBeamWavelengthItem*>(wavelengthItem());
-    if (auto axis_item = dynamic_cast<PointwiseAxisItem*>(item)) {
-        auto axis = axis_item->axis();
+    auto *item = inclinationAxisGroup()->currentItem();
+    auto *wl_item = dynamic_cast<SpecularBeamWavelengthItem*>(wavelengthItem());
+    if (auto *axis_item = dynamic_cast<PointwiseAxisItem*>(item)) {
+        const auto *axis = axis_item->axis();
         if (axis && axis_item->getUnitsLabel() == "q-space")
             wl_item->setToRange(getLimits(axis->upperBound()));
     } else
diff --git a/GUI/Model/Instrument/DetectorItems.cpp b/GUI/Model/Instrument/DetectorItems.cpp
index 97953045241..e6cec0d8857 100644
--- a/GUI/Model/Instrument/DetectorItems.cpp
+++ b/GUI/Model/Instrument/DetectorItems.cpp
@@ -25,7 +25,7 @@
 namespace {
 const QString res_func_group_label = "Type";
 
-const GroupInfo createResolutionFunctionGroup()
+GroupInfo createResolutionFunctionGroup()
 {
     GroupInfo info;
     info.add(ResolutionFunctionNoneItem::M_TYPE, "None");
@@ -49,7 +49,7 @@ std::unique_ptr<IDetector2D> DetectorItem::createDetector() const
 
 void DetectorItem::clearMasks()
 {
-    if (auto maskContainer = maskContainerItem())
+    if (auto *maskContainer = maskContainerItem())
         delete takeRow(rowOfChild(maskContainer));
 }
 
@@ -96,7 +96,7 @@ DetectorItem::DetectorItem(const QString& modelType) : SessionItem(modelType)
 void DetectorItem::register_resolution_function()
 {
     static const GroupInfo resolutionFunctionGroup = createResolutionFunctionGroup();
-    auto item = addGroupProperty(P_RESOLUTION_FUNCTION, resolutionFunctionGroup);
+    auto *item = addGroupProperty(P_RESOLUTION_FUNCTION, resolutionFunctionGroup);
     item->setDisplayName(res_func_group_label);
     item->setToolTip("Detector resolution function");
 }
@@ -108,7 +108,7 @@ void DetectorItem::update_resolution_function_tooltips()
     if (resfuncItem.modelType() == ResolutionFunction2DGaussianItem::M_TYPE) {
         QString units = modelType() == SphericalDetectorItem::M_TYPE ? "deg" : "mm";
 
-        ResolutionFunction2DGaussianItem& resfuncGaussItem =
+        auto& resfuncGaussItem =
             dynamic_cast<ResolutionFunction2DGaussianItem&>(resfuncItem);
         resfuncGaussItem.sigmaXItem()->setToolTip("Resolution along horizontal axis (in " + units
                                                   + ")");
@@ -125,7 +125,7 @@ std::unique_ptr<IResolutionFunction2D> DetectorItem::createResolutionFunction()
 
 void DetectorItem::addMasksToDomain(IDetector2D* detector) const
 {
-    auto maskContainer = maskContainerItem();
+    auto *maskContainer = maskContainerItem();
 
     if (!maskContainer)
         return;
@@ -133,10 +133,10 @@ void DetectorItem::addMasksToDomain(IDetector2D* detector) const
     const double scale = axesToDomainUnitsFactor();
 
     for (int i_row = maskContainer->children().size(); i_row > 0; --i_row) {
-        if (auto maskItem = dynamic_cast<MaskItem*>(maskContainer->children().at(i_row - 1))) {
+        if (auto *maskItem = dynamic_cast<MaskItem*>(maskContainer->children().at(i_row - 1))) {
 
             if (maskItem->modelType() == RegionOfInterestItem::M_TYPE) {
-                auto* rectItem = static_cast<RectangleItem*>(maskItem);
+                auto* rectItem = dynamic_cast<RectangleItem*>(maskItem);
                 double xlow = scale * rectItem->xLow();
                 double ylow = scale * rectItem->yLow();
                 double xup = scale * rectItem->xUp();
diff --git a/GUI/Model/Instrument/FootprintItems.h b/GUI/Model/Instrument/FootprintItems.h
index 0610f0170fc..a847eee16e7 100644
--- a/GUI/Model/Instrument/FootprintItems.h
+++ b/GUI/Model/Instrument/FootprintItems.h
@@ -21,7 +21,7 @@ class IFootprintFactor;
 
 class BA_CORE_API_ FootprintItem : public SessionItem {
 public:
-    virtual ~FootprintItem();
+    ~FootprintItem() override;
     virtual std::unique_ptr<IFootprintFactor> createFootprint() const = 0;
 
 protected:
@@ -33,7 +33,7 @@ public:
     static constexpr auto M_TYPE{"NoFootprint"};
 
     FootprintNoneItem();
-    virtual ~FootprintNoneItem();
+    ~FootprintNoneItem() override;
     std::unique_ptr<IFootprintFactor> createFootprint() const override;
 };
 
@@ -45,7 +45,7 @@ public:
     static constexpr auto M_TYPE{"GaussianFootrpint"};
 
     FootprintGaussianItem();
-    virtual ~FootprintGaussianItem();
+    ~FootprintGaussianItem() override;
     std::unique_ptr<IFootprintFactor> createFootprint() const override;
     double gaussianFootprintValue() const;
     void setGaussianFootprintValue(double value);
@@ -59,7 +59,7 @@ public:
     static constexpr auto M_TYPE{"SquareFootprint"};
 
     FootprintSquareItem();
-    virtual ~FootprintSquareItem();
+    ~FootprintSquareItem() override;
     std::unique_ptr<IFootprintFactor> createFootprint() const override;
     double squareFootprintValue() const;
     void setSquareFootprintValue(double value);
diff --git a/GUI/Model/Instrument/InstrumentItems.cpp b/GUI/Model/Instrument/InstrumentItems.cpp
index 8532988bb89..2a70d1cd04f 100644
--- a/GUI/Model/Instrument/InstrumentItems.cpp
+++ b/GUI/Model/Instrument/InstrumentItems.cpp
@@ -41,7 +41,7 @@ const QString background_group_label = "Type";
 
 BasicAxisItem* addAxisGroupProperty(SessionItem* parent, const QString& tag)
 {
-    BasicAxisItem* axisItem = parent->addProperty<BasicAxisItem>(tag);
+    auto* axisItem = parent->addProperty<BasicAxisItem>(tag);
     axisItem->setToolTip("Incoming alpha range [deg]");
     axisItem->titleItem()->setVisible(false);
     axisItem->binsItem()->setToolTip("Number of points in scan");
@@ -55,7 +55,7 @@ BasicAxisItem* addAxisGroupProperty(SessionItem* parent, const QString& tag)
     return axisItem;
 }
 
-const GroupInfo createDetectorGroup()
+GroupInfo createDetectorGroup()
 {
     GroupInfo info;
     info.add(SphericalDetectorItem::M_TYPE, "Spherical detector");
@@ -64,7 +64,7 @@ const GroupInfo createDetectorGroup()
     return info;
 }
 
-const GroupInfo createBackgroundGroup()
+GroupInfo createBackgroundGroup()
 {
     GroupInfo info;
     info.add(NoBackgroundItem::M_TYPE, "None");
@@ -148,7 +148,7 @@ void InstrumentItem::setWithPolarizerAnalyzer(bool with)
     setItemValue(P_WITH_POLARIZER_ANALYZER, with);
 }
 
-const R3 InstrumentItem::polarization() const
+R3 InstrumentItem::polarization() const
 {
     return item<VectorItem>(P_POLARIZATION)->getVector();
 }
@@ -163,7 +163,7 @@ VectorItem* InstrumentItem::polarizationItem() const
     return item<VectorItem>(P_POLARIZATION);
 }
 
-const R3 InstrumentItem::analyzerDirection() const
+R3 InstrumentItem::analyzerDirection() const
 {
     return item<VectorItem>(P_ANALYZER_DIRECTION)->getVector();
 }
@@ -213,7 +213,7 @@ InstrumentItem::InstrumentItem(const QString& modelType) : SessionItem(modelType
 void InstrumentItem::initBackgroundGroup()
 {
     static const GroupInfo backgroundGroup = createBackgroundGroup();
-    auto item = addGroupProperty(P_BACKGROUND, backgroundGroup);
+    auto *item = addGroupProperty(P_BACKGROUND, backgroundGroup);
     item->setDisplayName(background_group_label);
     item->setToolTip("Background type");
 }
@@ -250,7 +250,7 @@ SpecularInstrumentItem::~SpecularInstrumentItem() = default;
 
 std::vector<int> SpecularInstrumentItem::shape() const
 {
-    const auto axis_item = beamItem()->inclinationAxis();
+    auto *const axis_item = beamItem()->inclinationAxis();
     return {axis_item->binCount()};
 }
 
@@ -271,13 +271,13 @@ bool SpecularInstrumentItem::alignedWith(const RealDataItem* item) const
         return beamItem()->inclinationAxis()->modelType() == BasicAxisItem::M_TYPE
                && shape() == item->shape();
     }
-    auto axis_item = dynamic_cast<PointwiseAxisItem*>(beamItem()->inclinationAxis());
+    auto *axis_item = dynamic_cast<PointwiseAxisItem*>(beamItem()->inclinationAxis());
     if (!axis_item)
         return false;
     if (axis_item->getUnitsLabel() != native_units)
         return false;
 
-    auto instrument_axis = axis_item->axis();
+    const auto *instrument_axis = axis_item->axis();
     if (!instrument_axis)
         return false;
 
@@ -293,8 +293,8 @@ ICoordSystem* SpecularInstrumentItem::createCoordSystem() const
     std::unique_ptr<Instrument> instrument(new Instrument);
     instrument->setBeam(*beamItem()->createBeam());
     // \todo setPolFilters ?
-    auto axis_item = beamItem()->inclinationAxis();
-    if (auto pointwise_axis = dynamic_cast<PointwiseAxisItem*>(axis_item)) {
+    auto *axis_item = beamItem()->inclinationAxis();
+    if (auto *pointwise_axis = dynamic_cast<PointwiseAxisItem*>(axis_item)) {
         if (!pointwise_axis->containsNonXMLData()) // workaround for loading project
             return nullptr;
         Axes::Coords native_units =
@@ -320,12 +320,12 @@ DepthProbeInstrumentItem::DepthProbeInstrumentItem() : InstrumentItem(M_TYPE)
 {
     addBeam<SpecularBeamItem>();
 
-    auto axisItem = beamItem()->inclinationAxis();
+    auto *axisItem = beamItem()->inclinationAxis();
     axisItem->setLowerBound(0.0);
     axisItem->setUpperBound(1.0);
     axisItem->setBinCount(500);
 
-    auto axis = addProperty<BasicAxisItem>(P_Z_AXIS);
+    auto *axis = addProperty<BasicAxisItem>(P_Z_AXIS);
     axis->setLowerBound(-100.0);
     axis->setUpperBound(100.0);
     axis->titleItem()->setVisible(false);
@@ -358,14 +358,14 @@ std::unique_ptr<DepthProbeSimulation> DepthProbeInstrumentItem::createSimulation
 {
     std::unique_ptr<DepthProbeSimulation> simulation = std::make_unique<DepthProbeSimulation>();
 
-    const auto axis_item = beamItem()->inclinationAxis();
+    auto *const axis_item = beamItem()->inclinationAxis();
 
     auto axis = axis_item->createAxis(Units::deg);
 
     simulation->setBeamParameters(beamItem()->wavelength(), static_cast<int>(axis->size()),
                                   axis->lowerBound(), axis->upperBound());
 
-    auto depthAxisItem = dynamic_cast<BasicAxisItem*>(getItem(P_Z_AXIS));
+    auto *depthAxisItem = dynamic_cast<BasicAxisItem*>(getItem(P_Z_AXIS));
     auto depthAxis = depthAxisItem->createAxis(1.0);
     simulation->setZSpan(depthAxis->size(), depthAxis->lowerBound(), depthAxis->upperBound());
 
@@ -449,7 +449,7 @@ GISASInstrumentItem::GISASInstrumentItem() : Instrument2DItem(M_TYPE) {}
 
 std::vector<int> GISASInstrumentItem::shape() const
 {
-    auto detector_item = detector();
+    auto *detector_item = detector();
     return {detector_item->xSize(), detector_item->ySize()};
 }
 
@@ -485,8 +485,8 @@ ICoordSystem* GISASInstrumentItem::createCoordSystem() const
 OffSpecularInstrumentItem::OffSpecularInstrumentItem() : Instrument2DItem(M_TYPE)
 {
     BasicAxisItem* axis_item = addAxisGroupProperty(this, P_ALPHA_AXIS);
-    auto inclination_item = axis_item->lowerBoundItem();
-    auto beam_item = beamItem();
+    auto *inclination_item = axis_item->lowerBoundItem();
+    auto *beam_item = beamItem();
     beam_item->setInclinationAngle(inclination_item->value().toDouble());
     beam_item->inclinationAngleItem()->setEnabled(false);
     inclination_item->mapper()->setOnValueChange([beam_item, inclination_item]() {
@@ -497,7 +497,7 @@ OffSpecularInstrumentItem::OffSpecularInstrumentItem() : Instrument2DItem(M_TYPE
 std::vector<int> OffSpecularInstrumentItem::shape() const
 {
     const int x_size = item<BasicAxisItem>(P_ALPHA_AXIS)->binCount();
-    auto detector_item = detector();
+    auto *detector_item = detector();
     return {x_size, detector_item->ySize()};
 }
 
@@ -524,8 +524,8 @@ ICoordSystem* OffSpecularInstrumentItem::createCoordSystem() const
 {
     const auto instrument = createInstrument();
     instrument->initDetector();
-    const auto axis_item = item<BasicAxisItem>(OffSpecularInstrumentItem::P_ALPHA_AXIS);
-    const auto detector2d = dynamic_cast<const IDetector2D*>(instrument->getDetector());
+    auto *const axis_item = item<BasicAxisItem>(OffSpecularInstrumentItem::P_ALPHA_AXIS);
+    const auto *const detector2d = dynamic_cast<const IDetector2D*>(instrument->getDetector());
     const auto axes = detector2d->axesClippedToRegionOfInterest();
     ASSERT(axes.size() == 2);
     const IAxis& yAxis = *axes[1];
diff --git a/GUI/Model/Instrument/InstrumentItems.h b/GUI/Model/Instrument/InstrumentItems.h
index 48add155e12..c09e1d0c00a 100644
--- a/GUI/Model/Instrument/InstrumentItems.h
+++ b/GUI/Model/Instrument/InstrumentItems.h
@@ -70,19 +70,19 @@ public:
     bool withPolarizerAnalyzer() const;
     void setWithPolarizerAnalyzer(bool with);
 
-    const R3 polarization() const;
+    R3 polarization() const;
     void setPolarization(const R3& value);
     VectorItem* polarizationItem() const;
 
-    const R3 analyzerDirection() const;
-    void setAnalyzerDirection(const R3& directorion);
+    R3 analyzerDirection() const;
+    void setAnalyzerDirection(const R3& direction);
     VectorItem* analyzerDirectionItem() const;
 
     double analyzerEfficiency() const;
     void setAnalyzerEfficiency(double efficiency);
 
     double analyzerTotalTransmission() const;
-    void setAnalyzerTotalTransmission(double efficiency);
+    void setAnalyzerTotalTransmission(double transmission);
 
 protected:
     explicit InstrumentItem(const QString& modelType);
@@ -106,7 +106,7 @@ public:
     std::vector<int> shape() const override;
     void updateToRealData(const RealDataItem* item) override;
     bool alignedWith(const RealDataItem* item) const override;
-    virtual QString defaultName() const override;
+    QString defaultName() const override;
 
     ICoordSystem* createCoordSystem() const override;
 };
@@ -125,7 +125,7 @@ public:
 
     std::vector<int> shape() const override;
     void updateToRealData(const RealDataItem* item) override;
-    virtual QString defaultName() const override;
+    QString defaultName() const override;
 
     // FIXME switch to base ISimulation class after InstrumentItem refactoring and
     // after ISimulation gets createCoordSystem method
@@ -167,7 +167,7 @@ public:
     GISASInstrumentItem();
     std::vector<int> shape() const override;
     void updateToRealData(const RealDataItem* item) override;
-    virtual QString defaultName() const override;
+    QString defaultName() const override;
 
     ICoordSystem* createCoordSystem() const override;
 };
@@ -183,7 +183,7 @@ public:
     OffSpecularInstrumentItem();
     std::vector<int> shape() const override;
     void updateToRealData(const RealDataItem* item) override;
-    virtual QString defaultName() const override;
+    QString defaultName() const override;
 
     ICoordSystem* createCoordSystem() const override;
 
diff --git a/GUI/Model/Instrument/InstrumentModel.cpp b/GUI/Model/Instrument/InstrumentModel.cpp
index 66b9703697a..87feabe385d 100644
--- a/GUI/Model/Instrument/InstrumentModel.cpp
+++ b/GUI/Model/Instrument/InstrumentModel.cpp
@@ -40,10 +40,10 @@ QVector<SessionItem*> InstrumentModel::nonXMLItems() const
 {
     QVector<SessionItem*> result;
 
-    for (auto instrument_item : topItems<SpecularInstrumentItem>()) {
-        auto axis_group = instrument_item->beamItem()->inclinationAngleItem()->alphaAxisItem();
+    for (auto *instrument_item : topItems<SpecularInstrumentItem>()) {
+        auto *axis_group = instrument_item->beamItem()->inclinationAngleItem()->alphaAxisItem();
 
-        if (auto pointwise_axis = axis_group->firstChildOfType<PointwiseAxisItem>())
+        if (auto *pointwise_axis = axis_group->firstChildOfType<PointwiseAxisItem>())
             result.push_back(pointwise_axis);
     }
 
@@ -60,7 +60,7 @@ void InstrumentModel::readFrom(QXmlStreamReader* reader, MessageService* message
 
     connect(this, &SessionModel::rowsInserted, this, &InstrumentModel::onRowsChange);
 
-    for (auto instrumentItem : instrumentItems()) {
+    for (auto *instrumentItem : instrumentItems()) {
         instrumentItem->mapper()->setOnPropertyChange(
             [this, instrumentItem](const QString& name) {
                 onInstrumentPropertyChange(instrumentItem, name);
@@ -77,21 +77,21 @@ void InstrumentModel::readFrom(QXmlStreamReader* reader, MessageService* message
 
 InstrumentItem* InstrumentModel::insertCopy(const InstrumentItem& source)
 {
-    auto* copy = static_cast<InstrumentItem*>(insertNewItem(source.modelType()));
+    auto* copy = dynamic_cast<InstrumentItem*>(insertNewItem(source.modelType()));
     const QString idBackup = copy->id(); // will be overwritten by the following
-    for (auto child : source.children()) {
+    for (auto *child : source.children()) {
         auto tag = source.tagFromItem(child);
         copyItem(child, copy, tag);
     }
     copy->setId(idBackup);
 
     // copying non-uniform axis data
-    if (auto specularSource = dynamic_cast<const SpecularInstrumentItem*>(&source)) {
-        auto axis_group = specularSource->beamItem()->inclinationAxisGroup();
+    if (const auto *specularSource = dynamic_cast<const SpecularInstrumentItem*>(&source)) {
+        auto *axis_group = specularSource->beamItem()->inclinationAxisGroup();
 
-        auto donor_axis = axis_group->itemOfType<PointwiseAxisItem>();
+        auto *donor_axis = axis_group->itemOfType<PointwiseAxisItem>();
         if (donor_axis->containsNonXMLData()) {
-            auto acceptor_axis = dynamic_cast<SpecularInstrumentItem*>(copy)
+            auto *acceptor_axis = dynamic_cast<SpecularInstrumentItem*>(copy)
                                      ->beamItem()
                                      ->inclinationAxisGroup()
                                      ->itemOfType<PointwiseAxisItem>();
@@ -131,7 +131,7 @@ QVector<Instrument2DItem*> InstrumentModel::instrument2DItems() const
 
 InstrumentItem* InstrumentModel::findInstrumentById(const QString& instrumentId) const
 {
-    for (auto instrument : instrumentItems())
+    for (auto *instrument : instrumentItems())
         if (instrument->id() == instrumentId)
             return instrument;
 
@@ -156,7 +156,7 @@ void InstrumentModel::onRowsChange(const QModelIndex& parent, int, int)
     if (parent.isValid())
         return;
 
-    for (auto instrumentItem : instrumentItems()) {
+    for (auto *instrumentItem : instrumentItems()) {
         instrumentItem->mapper()->unsubscribe(this);
 
         instrumentItem->mapper()->setOnPropertyChange(
diff --git a/GUI/Model/Instrument/InstrumentModel.h b/GUI/Model/Instrument/InstrumentModel.h
index 79baea51066..a39b9aeb76b 100644
--- a/GUI/Model/Instrument/InstrumentModel.h
+++ b/GUI/Model/Instrument/InstrumentModel.h
@@ -30,12 +30,12 @@ public:
 
     InstrumentModel* createCopy(SessionItem* parent = nullptr) override;
     QVector<SessionItem*> nonXMLItems() const override;
-    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0) override;
+    void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr) override;
 
     //! Inserts a deep copy (also of any non xml data in a pointwise axis)
     //! The id will not be copied, but a new unique one will be created
     //! Returns the newly created instrument.
-    InstrumentItem* insertCopy(const InstrumentItem& instrument);
+    InstrumentItem* insertCopy(const InstrumentItem& source);
 
     QVector<InstrumentItem*> instrumentItems() const;
     QVector<Instrument2DItem*> instrument2DItems() const;
@@ -45,7 +45,7 @@ public:
 
     void removeInstrument(InstrumentItem* instrument);
 
-    QString suggestInstrumentName(const QString& currentName) const;
+    QString suggestInstrumentName(const QString& baseName) const;
 
     QVector<InstrumentItem*>
     instrumentItems(std::function<bool(const InstrumentItem*)> accept) const;
diff --git a/GUI/Model/Instrument/InstrumentsTreeModel.cpp b/GUI/Model/Instrument/InstrumentsTreeModel.cpp
index eadd50a476c..f9080f8b646 100644
--- a/GUI/Model/Instrument/InstrumentsTreeModel.cpp
+++ b/GUI/Model/Instrument/InstrumentsTreeModel.cpp
@@ -154,7 +154,7 @@ QModelIndex InstrumentsTreeModel::parent(const QModelIndex& index) const
     if (index.internalPointer() == nullptr) // index is headline => no parent
         return QModelIndex();
 
-    auto item = itemForIndex(index);
+    auto *item = itemForIndex(index);
     for (auto type : visibleTypes())
         if (instruments(type).contains(item))
             return indexOfHeadline(type);
@@ -226,7 +226,7 @@ QVariant InstrumentsTreeModel::data(const QModelIndex& index, int role) const
         }
     }
 
-    const auto item = itemForIndex(index);
+    auto *const item = itemForIndex(index);
 
     if (role == Qt::ToolTipRole)
         return item->description();
diff --git a/GUI/Model/Instrument/InstrumentsTreeModel.h b/GUI/Model/Instrument/InstrumentsTreeModel.h
index e481b23b64d..2cbc1c61af9 100644
--- a/GUI/Model/Instrument/InstrumentsTreeModel.h
+++ b/GUI/Model/Instrument/InstrumentsTreeModel.h
@@ -39,15 +39,15 @@ public:
     void enableEmptyHeadlines(bool b);
     void setTypeEnabled(InstrumentType type, bool b);
 
-    virtual QModelIndex index(int row, int column,
+    QModelIndex index(int row, int column,
                               const QModelIndex& parent = QModelIndex()) const override;
 
-    virtual QModelIndex parent(const QModelIndex& index) const override;
-    virtual int columnCount(const QModelIndex& parent = QModelIndex()) const override;
-    virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
-    virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
-    virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
-    virtual bool setData(const QModelIndex& index, const QVariant& value, int role) override;
+    QModelIndex parent(const QModelIndex& index) const override;
+    int columnCount(const QModelIndex& parent = QModelIndex()) const override;
+    int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+    Qt::ItemFlags flags(const QModelIndex& index) const override;
+    bool setData(const QModelIndex& index, const QVariant& value, int role) override;
     InstrumentItem* itemForIndex(const QModelIndex& index) const;
     QModelIndex indexForItem(InstrumentItem* item) const;
 
diff --git a/GUI/Model/Instrument/LinkInstrumentManager.cpp b/GUI/Model/Instrument/LinkInstrumentManager.cpp
index 06e2bff4aaa..57ed9b4fb04 100644
--- a/GUI/Model/Instrument/LinkInstrumentManager.cpp
+++ b/GUI/Model/Instrument/LinkInstrumentManager.cpp
@@ -60,7 +60,7 @@ QString printShapeMessage(const std::vector<int>& instrument_shape,
     message_string += "], data [";
     message_string += to_str(data_shape);
     message_string += "]";
-    return QString::fromStdString(std::move(message_string));
+    return QString::fromStdString(message_string);
 }
 
 } // namespace
@@ -79,7 +79,7 @@ LinkInstrumentManager::LinkInstrumentManager(InstrumentModel* instrumentModel,
 bool LinkInstrumentManager::canLinkDataToInstrument(const RealDataItem* realDataItem,
                                                     const QString& identifier, QWidget* parent)
 {
-    auto instrumentItem = m_instrumentModel->findInstrumentById(identifier);
+    auto *instrumentItem = m_instrumentModel->findInstrumentById(identifier);
 
     // linking to null instrument is possible, it means unlinking from currently linked
     if (!instrumentItem)
@@ -116,7 +116,7 @@ void LinkInstrumentManager::onInstrumentChanged(const InstrumentItem* instrument
 {
     // Run through all RealDataItem and refresh linking to match possible change in detector
     // axes definition.
-    for (auto realDataItem : m_realDataModel->realDataItems())
+    for (auto *realDataItem : m_realDataModel->realDataItems())
         if (realDataItem->instrumentId() == instrument->id()) {
             if (!instrument->alignedWith(realDataItem))
                 realDataItem->clearInstrumentId();
@@ -128,7 +128,7 @@ void LinkInstrumentManager::onInstrumentChanged(const InstrumentItem* instrument
 void LinkInstrumentManager::onInstrumentAddedOrRemoved()
 {
     // remove links in realDataItems (in case of a linked instrument was removed)
-    for (auto realDataItem : m_realDataModel->realDataItems())
+    for (auto *realDataItem : m_realDataModel->realDataItems())
         if (!m_instrumentModel->instrumentExists(realDataItem->instrumentId()))
             realDataItem->clearInstrumentId();
 }
diff --git a/GUI/Model/Instrument/RectangularDetectorItem.cpp b/GUI/Model/Instrument/RectangularDetectorItem.cpp
index 4d73c24153d..f2d25df1912 100644
--- a/GUI/Model/Instrument/RectangularDetectorItem.cpp
+++ b/GUI/Model/Instrument/RectangularDetectorItem.cpp
@@ -63,7 +63,7 @@ ComboProperty alignmentCombo()
 RectangularDetectorItem::RectangularDetectorItem() : DetectorItem(M_TYPE), m_is_constructed(false)
 {
     // axes parameters
-    auto axisItem = addProperty<BasicAxisItem>(P_X_AXIS);
+    auto *axisItem = addProperty<BasicAxisItem>(P_X_AXIS);
     axisItem->titleItem()->setVisible(false);
     axisItem->lowerBoundItem()->setVisible(false);
     axisItem->setUpperBound(default_detector_width);
@@ -81,11 +81,11 @@ RectangularDetectorItem::RectangularDetectorItem() : DetectorItem(M_TYPE), m_is_
     addProperty(P_ALIGNMENT, alignmentCombo().variant());
 
     // alignment parameters
-    auto normalItem = addProperty<VectorItem>(P_NORMAL);
+    auto *normalItem = addProperty<VectorItem>(P_NORMAL);
     normalItem->setX(default_detector_distance);
 
     // direction
-    auto directionItem = addProperty<VectorItem>(P_DIRECTION);
+    auto *directionItem = addProperty<VectorItem>(P_DIRECTION);
     directionItem->setY(-1.0);
 
     addProperty(P_U0, default_detector_width / 2.)
@@ -113,7 +113,7 @@ RectangularDetectorItem::RectangularDetectorItem() : DetectorItem(M_TYPE), m_is_
 
 void RectangularDetectorItem::setDetectorAlignment(const QString& alignment)
 {
-    ComboProperty combo_property =
+    auto combo_property =
         getItemValue(RectangularDetectorItem::P_ALIGNMENT).value<ComboProperty>();
 
     if (!combo_property.getValues().contains(alignment))
@@ -298,7 +298,7 @@ std::unique_ptr<IDetector2D> RectangularDetectorItem::createDomainDetector() con
     double dbeam_v0 = getItemValue(P_DBEAM_V0).toDouble();
     double distance = getItemValue(P_DISTANCE).toDouble();
 
-    ComboProperty alignment = getItemValue(P_ALIGNMENT).value<ComboProperty>();
+    auto alignment = getItemValue(P_ALIGNMENT).value<ComboProperty>();
 
     if (alignment.getValue() == "Generic") {
         result->setPosition(normalVector(), u0, v0, directionVector());
@@ -319,10 +319,10 @@ std::unique_ptr<IDetector2D> RectangularDetectorItem::createDomainDetector() con
 void RectangularDetectorItem::update_properties_appearance()
 {
     // hiding all alignment properties
-    ComboProperty alignment = getItemValue(P_ALIGNMENT).value<ComboProperty>();
+    auto alignment = getItemValue(P_ALIGNMENT).value<ComboProperty>();
     QStringList prop_list;
     prop_list << P_NORMAL << P_DIRECTION << P_U0 << P_V0 << P_DBEAM_U0 << P_DBEAM_V0 << P_DISTANCE;
-    for (auto prop : prop_list)
+    for (const auto& prop : prop_list)
         getItem(prop)->setVisible(false);
 
     // enabling some properties back, depending from detector alignment mode
diff --git a/GUI/Model/Instrument/ResolutionFunctionItems.h b/GUI/Model/Instrument/ResolutionFunctionItems.h
index 63fff411d8b..0a4211a7fac 100644
--- a/GUI/Model/Instrument/ResolutionFunctionItems.h
+++ b/GUI/Model/Instrument/ResolutionFunctionItems.h
@@ -26,7 +26,7 @@ protected:
     explicit ResolutionFunctionItem(const QString& name);
 
 public:
-    virtual ~ResolutionFunctionItem() {}
+    ~ResolutionFunctionItem() override = default;
 
     virtual std::unique_ptr<IResolutionFunction2D>
     createResolutionFunction(double scale = 1.0) const = 0;
@@ -38,7 +38,7 @@ public:
     static constexpr auto M_TYPE{"ResolutionFunctionNone"};
 
     ResolutionFunctionNoneItem();
-    std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const;
+    std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const override;
 };
 
 class ResolutionFunction2DGaussianItem : public ResolutionFunctionItem {
@@ -50,7 +50,7 @@ public:
     static constexpr auto M_TYPE{"ResolutionFunction2DGaussian"};
 
     ResolutionFunction2DGaussianItem();
-    std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const;
+    std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const override;
 
     SessionItem* sigmaXItem() const;
     double sigmaX() const;
diff --git a/GUI/Model/Instrument/SpecularBeamInclinationItem.cpp b/GUI/Model/Instrument/SpecularBeamInclinationItem.cpp
index e5a42fcee5e..60ca3fe0461 100644
--- a/GUI/Model/Instrument/SpecularBeamInclinationItem.cpp
+++ b/GUI/Model/Instrument/SpecularBeamInclinationItem.cpp
@@ -21,7 +21,7 @@ namespace {
 void setupDistributionMean(SessionItem* distribution);
 void setAxisPresentationDefaults(SessionItem* axis_item, const QString& type);
 
-const GroupInfo createAxesGroup()
+GroupInfo createAxesGroup()
 {
     GroupInfo info;
     info.add(BasicAxisItem::M_TYPE, "Uniform axis");
@@ -51,8 +51,8 @@ double SpecularBeamInclinationItem::scaleFactor() const
 
 void SpecularBeamInclinationItem::updateFileName(const QString& filename)
 {
-    auto group_item = item<GroupItem>(P_ALPHA_AXIS);
-    PointwiseAxisItem* axis_item = group_item->firstChildOfType<PointwiseAxisItem>();
+    auto *group_item = item<GroupItem>(P_ALPHA_AXIS);
+    auto* axis_item = group_item->firstChildOfType<PointwiseAxisItem>();
     ASSERT(axis_item);
     axis_item->setFileName(filename);
 }
@@ -70,7 +70,7 @@ GroupItem* SpecularBeamInclinationItem::alphaAxisItem() const
 void SpecularBeamInclinationItem::setupAxisGroup()
 {
     static const GroupInfo axesGroup = createAxesGroup();
-    auto group_item = dynamic_cast<GroupItem*>(this->addGroupProperty(P_ALPHA_AXIS, axesGroup));
+    auto *group_item = dynamic_cast<GroupItem*>(this->addGroupProperty(P_ALPHA_AXIS, axesGroup));
 
     // Both underlying axis items are created, since it
     // strongly simplifies their representation and state
@@ -109,7 +109,7 @@ void setupDistributionMean(SessionItem* distribution)
 
 void setAxisPresentationDefaults(SessionItem* item, const QString& type)
 {
-    auto axis_item = dynamic_cast<BasicAxisItem*>(item);
+    auto *axis_item = dynamic_cast<BasicAxisItem*>(item);
     Q_ASSERT(axis_item);
 
     axis_item->titleItem()->setVisible(false);
diff --git a/GUI/Model/Instrument/SphericalDetectorItem.cpp b/GUI/Model/Instrument/SphericalDetectorItem.cpp
index aaa94d8d35b..0d10645da7f 100644
--- a/GUI/Model/Instrument/SphericalDetectorItem.cpp
+++ b/GUI/Model/Instrument/SphericalDetectorItem.cpp
@@ -19,7 +19,7 @@
 
 SphericalDetectorItem::SphericalDetectorItem() : DetectorItem(M_TYPE)
 {
-    auto phiAxis = addProperty<BasicAxisItem>(P_PHI_AXIS);
+    auto *phiAxis = addProperty<BasicAxisItem>(P_PHI_AXIS);
     phiAxis->titleItem()->setVisible(false);
     phiAxis->setLowerBound(-1.0);
     phiAxis->setUpperBound(1.0);
@@ -28,7 +28,7 @@ SphericalDetectorItem::SphericalDetectorItem() : DetectorItem(M_TYPE)
     phiAxis->lowerBoundItem()->setToolTip("Low edge of first phi-bin (in deg)");
     phiAxis->upperBoundItem()->setToolTip("Upper edge of last phi-bin (in deg)");
 
-    auto alphaAxis = addProperty<BasicAxisItem>(P_ALPHA_AXIS);
+    auto *alphaAxis = addProperty<BasicAxisItem>(P_ALPHA_AXIS);
     alphaAxis->titleItem()->setVisible(false);
     alphaAxis->setLowerBound(0.0);
     alphaAxis->setUpperBound(2.0);
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index f18323e7f06..0fd79ad1bbf 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -325,7 +325,7 @@ RealDataItem* JobItem::createRealDataItem()
 
 MaterialItemContainer* JobItem::materialContainerItem() const
 {
-    return static_cast<MaterialItemContainer*>(getItem(JobItem::T_MATERIAL_CONTAINER));
+    return dynamic_cast<MaterialItemContainer*>(getItem(JobItem::T_MATERIAL_CONTAINER));
 }
 
 MaterialItemContainer* JobItem::createMaterialContainer()
@@ -368,7 +368,7 @@ void JobItem::setInstrumentName(const QString& name)
     getItem(P_INSTRUMENT_NAME)->setValue(name);
 }
 
-const QString JobItem::presentationType() const
+QString JobItem::presentationType() const
 {
     return getItemValue(P_PRESENTATION_TYPE).toString();
 }
diff --git a/GUI/Model/Job/JobItem.h b/GUI/Model/Job/JobItem.h
index 2e47e4e310c..af3cd967702 100644
--- a/GUI/Model/Job/JobItem.h
+++ b/GUI/Model/Job/JobItem.h
@@ -74,7 +74,7 @@ public:
     void addDataItem(DataItem* data);
 
     JobStatus getStatus() const;
-    void setStatus(const JobStatus status);
+    void setStatus(JobStatus status);
     static bool isStatusPropertyName(const QString& name);
 
     bool isIdle() const;
@@ -145,7 +145,7 @@ public:
     QString instrumentName() const;
     void setInstrumentName(const QString& name);
 
-    const QString presentationType() const;
+    QString presentationType() const;
     void setPresentationType(const QString& type);
 
 private:
diff --git a/GUI/Model/Job/JobItemUtils.cpp b/GUI/Model/Job/JobItemUtils.cpp
index cfa1beb9865..2d20de5ba1b 100644
--- a/GUI/Model/Job/JobItemUtils.cpp
+++ b/GUI/Model/Job/JobItemUtils.cpp
@@ -62,7 +62,7 @@ void GUI::Model::JobItemUtils::updateDataAxes(DataItem* intensityItem,
 
     Axes::Coords requested_units = coordsFromName(intensityItem->selectedCoords());
 
-    const auto converter = instrumentItem->createCoordSystem();
+    auto *const converter = instrumentItem->createCoordSystem();
     auto newData = converter->createOutputData(requested_units);
     newData->setRawDataVector(intensityItem->getOutputData()->getRawDataVector());
 
@@ -93,7 +93,7 @@ Axes::Coords GUI::Model::JobItemUtils::coordsFromName(const QString& name)
 void GUI::Model::JobItemUtils::setIntensityItemCoords(DataItem* intensityItem,
                                                       const InstrumentItem* instrumentItem)
 {
-    const auto converter = instrumentItem->createCoordSystem();
+    auto *const converter = instrumentItem->createCoordSystem();
     if (!converter)
         return;
     setIntensityItemCoords(intensityItem, *converter);
@@ -109,7 +109,7 @@ void GUI::Model::JobItemUtils::setIntensityItemCoords(DataItem* intensityItem,
 void GUI::Model::JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem,
                                                         const Instrument2DItem* instrumentItem)
 {
-    const auto converter = instrumentItem->createCoordSystem();
+    auto *const converter = instrumentItem->createCoordSystem();
     auto output_data = converter->createOutputData(converter->defaultUnits());
     intensityItem->setOutputData(output_data.release());
     setIntensityItemCoords(intensityItem, *converter);
diff --git a/GUI/Model/Job/JobModel.cpp b/GUI/Model/Job/JobModel.cpp
index 8593e5bc1de..180cb2e8f95 100644
--- a/GUI/Model/Job/JobModel.cpp
+++ b/GUI/Model/Job/JobModel.cpp
@@ -75,7 +75,7 @@ JobItem* JobModel::addJob(const MultiLayerItem* multiLayerItem,
     ASSERT(instrumentItem);
     ASSERT(optionItem);
 
-    auto jobItem = insertItem<JobItem>();
+    auto *jobItem = insertItem<JobItem>();
     jobItem->setItemName(generateJobName());
     jobItem->setIdentifier(QUuid::createUuid().toString());
 
@@ -113,7 +113,7 @@ void JobModel::restore(JobItem* jobItem)
 bool JobModel::hasUnfinishedJobs()
 {
     bool result = m_queue_data->hasUnfinishedJobs();
-    for (auto jobItem : topItems<JobItem>()) {
+    for (auto *jobItem : topItems<JobItem>()) {
         if (jobItem->getStatus() == JobStatus::Fitting)
             result = true;
     }
@@ -123,7 +123,7 @@ bool JobModel::hasUnfinishedJobs()
 
 void JobModel::clear()
 {
-    for (auto item : topItems())
+    for (auto *item : topItems())
         removeJob(item->index());
 
     SessionModel::clear();
@@ -133,20 +133,20 @@ QVector<SessionItem*> JobModel::nonXMLItems() const
 {
     QVector<SessionItem*> result;
 
-    for (auto jobItem : topItems<JobItem>()) {
-        if (auto intensityItem = jobItem->dataItem())
+    for (auto *jobItem : topItems<JobItem>()) {
+        if (auto *intensityItem = jobItem->dataItem())
             result.push_back(intensityItem);
 
-        if (auto real_data = dynamic_cast<RealDataItem*>(jobItem->realDataItem())) {
-            if (auto data_item = real_data->dataItem())
+        if (auto *real_data = dynamic_cast<RealDataItem*>(jobItem->realDataItem())) {
+            if (auto *data_item = real_data->dataItem())
                 result.push_back(data_item);
-            if (auto native_data = real_data->nativeData())
+            if (auto *native_data = real_data->nativeData())
                 result.push_back(native_data);
         }
 
-        auto instrument = dynamic_cast<SpecularInstrumentItem*>(jobItem->instrumentItem());
+        auto *instrument = dynamic_cast<SpecularInstrumentItem*>(jobItem->instrumentItem());
         if (instrument) {
-            auto axis_group = instrument->beamItem()->inclinationAxisGroup();
+            auto *axis_group = instrument->beamItem()->inclinationAxisGroup();
             result.push_back(axis_group->firstChildOfType<PointwiseAxisItem>());
         }
     }
@@ -160,7 +160,7 @@ void JobModel::readFrom(QXmlStreamReader* reader, MessageService* messageService
 
     // Set & check instrument links. JobItem and realDataItem have to reference the same instrument
     // (which is the one contained in this job item, not contained in the instrument model)
-    for (auto jobItem : jobItems())
+    for (auto *jobItem : jobItems())
         if (RealDataItem* refItem = jobItem->realDataItem()) {
             refItem->setInstrumentId(jobItem->instrumentItem()->id());
             ASSERT(refItem->linkedInstrument() == jobItem->instrumentItem());
@@ -220,6 +220,6 @@ void JobModel::restoreItem(SessionItem* item)
     if (auto* parameter = dynamic_cast<ParameterItem*>(item))
         parameter->restoreFromBackup();
 
-    for (auto child : item->children())
+    for (auto *child : item->children())
         restoreItem(child);
 }
diff --git a/GUI/Model/Job/JobModel.h b/GUI/Model/Job/JobModel.h
index c1361086057..b11a3a3d597 100644
--- a/GUI/Model/Job/JobModel.h
+++ b/GUI/Model/Job/JobModel.h
@@ -27,8 +27,8 @@ class JobModel : public SessionModel {
     Q_OBJECT
 
 public:
-    explicit JobModel(QObject* parent = 0);
-    virtual ~JobModel();
+    explicit JobModel(QObject* parent = nullptr);
+    ~JobModel() override;
 
     const JobItem* getJobItemForIndex(const QModelIndex& index) const;
     JobItem* getJobItemForIndex(const QModelIndex& index);
@@ -46,7 +46,7 @@ public:
 
     void clear() override;
     QVector<SessionItem*> nonXMLItems() const override;
-    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0) override;
+    void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr) override;
 
 signals:
     void aboutToDeleteJobItem(JobItem* item);
diff --git a/GUI/Model/Job/JobModelFunctions.cpp b/GUI/Model/Job/JobModelFunctions.cpp
index 5c6a2146cd7..790fe4a2a28 100644
--- a/GUI/Model/Job/JobModelFunctions.cpp
+++ b/GUI/Model/Job/JobModelFunctions.cpp
@@ -58,7 +58,7 @@ void processInstrumentLink(JobItem* jobItem)
 //! Copies masks and ROI from RealDataItem on board of instrument.
 void copyMasksToInstrument(JobItem* jobItem)
 {
-    auto mask_container = jobItem->realDataItem()->maskContainerItem();
+    auto *mask_container = jobItem->realDataItem()->maskContainerItem();
     jobItem->instrumentItem()->importMasks(mask_container);
 }
 
@@ -74,12 +74,12 @@ void cropRealData(JobItem* jobItem)
 
     std::unique_ptr<OutputData<double>> origData(intensityItem->getOutputData()->clone());
 
-    auto instrument_item = jobItem->instrument2DItem();
+    auto *instrument_item = jobItem->instrument2DItem();
     GUI::Model::JobItemUtils::createDefaultDetectorMap(intensityItem, instrument_item);
 
     instrument_item->createInstrument()->getDetector()->iterateOverNonMaskedPoints(
         [&](IDetector::const_iterator it) {
-            auto cropped_data = intensityItem->getOutputData();
+            auto *cropped_data = intensityItem->getOutputData();
             (*cropped_data)[it.roiIndex()] = (*origData)[it.detectorIndex()];
         });
 
@@ -112,16 +112,16 @@ void GUI::Model::JobFunctions::initDataView(JobItem* job_item)
     ASSERT(job_item->instrumentItem() && job_item->instrumentItem()->is<SpecularInstrumentItem>());
     ASSERT(!job_item->dataItemView());
 
-    auto view_item = job_item->createDataViewItem();
+    auto *view_item = job_item->createDataViewItem();
 
-    auto property_container = view_item->createPropertyContainerItem();
+    auto *property_container = view_item->createPropertyContainerItem();
 
     property_container->addItem(job_item->realDataItem()->dataItem());
     property_container->addItem(job_item->dataItem());
 
     // also triggers Data1DViewItem::setAxesRangeToData and
     // GUI::Model::DataViewUtils::updateAxesTitle by setting new value of P_AXES_UNITS.
-    auto converter = job_item->instrumentItem()->createCoordSystem();
+    auto *converter = job_item->instrumentItem()->createCoordSystem();
     view_item->setAxesUnits(GUI::Model::JobItemUtils::availableUnits(*converter));
 }
 
@@ -137,11 +137,11 @@ void GUI::Model::JobFunctions::setupJobItemSampleData(JobItem* jobItem,
     std::map<MaterialItem*, MaterialItem*> materials;
     for (auto* itemWithMaterial : multilayer->itemsWithMaterial()) {
         auto materialIdentifier = itemWithMaterial->materialIdentifier();
-        auto material = GUI::MaterialUtil::findMaterial(materialIdentifier);
+        auto *material = GUI::MaterialUtil::findMaterial(materialIdentifier);
 
         auto iter = materials.find(material);
         if (iter == materials.end()) {
-            auto materialCopy = container->insertCopy(material);
+            auto *materialCopy = container->insertCopy(material);
             materials[material] = materialCopy;
             itemWithMaterial->setMaterial(materialCopy);
         } else
@@ -151,12 +151,12 @@ void GUI::Model::JobFunctions::setupJobItemSampleData(JobItem* jobItem,
 
 void GUI::Model::JobFunctions::setupJobItemInstrument(JobItem* jobItem, const InstrumentItem* from)
 {
-    auto copiedInstrument = jobItem->copyInstrumentIntoJob(from);
+    auto *copiedInstrument = jobItem->copyInstrumentIntoJob(from);
     copiedInstrument->setItemName(from->modelType());
     copiedInstrument->setId(QUuid::createUuid().toString());
     jobItem->setInstrumentName(from->itemName());
 
-    auto spec_to = dynamic_cast<SpecularInstrumentItem*>(copiedInstrument);
+    auto *spec_to = dynamic_cast<SpecularInstrumentItem*>(copiedInstrument);
     if (!spec_to)
         return;
 
@@ -165,8 +165,8 @@ void GUI::Model::JobFunctions::setupJobItemInstrument(JobItem* jobItem, const In
     spec_to->beamItem()->updateFileName(filename);
 
     // copying axis data
-    const auto spec_from = static_cast<const SpecularInstrumentItem*>(from);
-    auto axis_origin = getPointwiseAxisItem(spec_from);
+    const auto *const spec_from = dynamic_cast<const SpecularInstrumentItem*>(from);
+    auto *axis_origin = getPointwiseAxisItem(spec_from);
     const QString current_axis_type = spec_from->beamItem()->inclinationAxisGroup()->currentType();
     if (current_axis_type == PointwiseAxisItem::M_TYPE)
         spec_to->beamItem()->updateToData(*axis_origin->axis(), axis_origin->getUnitsLabel());
@@ -250,5 +250,5 @@ const JobItem* GUI::Model::JobFunctions::findJobItem(const SessionItem* item)
 {
     while (item && item->modelType() != JobItem::M_TYPE)
         item = item->parent();
-    return static_cast<const JobItem*>(item);
+    return dynamic_cast<const JobItem*>(item);
 }
diff --git a/GUI/Model/Job/JobModelFunctions.h b/GUI/Model/Job/JobModelFunctions.h
index 8b62568cdd8..8fe40c9b3b3 100644
--- a/GUI/Model/Job/JobModelFunctions.h
+++ b/GUI/Model/Job/JobModelFunctions.h
@@ -27,7 +27,7 @@ class SessionItem;
 namespace GUI::Model::JobFunctions {
 
 //! Initializes Data1DViewItem and assigns it to the passed JobItem
-void initDataView(JobItem* jobItem);
+void initDataView(JobItem* job_item);
 
 //! Properly copies sample and materials into JobItem
 void setupJobItemSampleData(JobItem* jobItem, const MultiLayerItem* sampleItem);
diff --git a/GUI/Model/Job/JobQueueData.cpp b/GUI/Model/Job/JobQueueData.cpp
index 7252311ed2f..abb39b8b3ac 100644
--- a/GUI/Model/Job/JobQueueData.cpp
+++ b/GUI/Model/Job/JobQueueData.cpp
@@ -29,7 +29,7 @@ JobQueueData::JobQueueData(JobModel* jobModel) : m_jobModel(jobModel) {}
 
 bool JobQueueData::hasUnfinishedJobs()
 {
-    return m_simulations.size();
+    return !m_simulations.empty();
 }
 
 //! Submits job and run it in a thread.
@@ -59,10 +59,10 @@ void JobQueueData::runJob(JobItem* jobItem)
         return;
     }
 
-    auto worker = new JobWorker(identifier, m_simulations[identifier]);
+    auto *worker = new JobWorker(identifier, m_simulations[identifier]);
     m_workers[identifier] = worker;
 
-    auto thread = new QThread;
+    auto *thread = new QThread;
     worker->moveToThread(thread);
     m_threads[identifier] = thread;
 
@@ -102,9 +102,9 @@ void JobQueueData::removeJob(const QString& identifier)
 
 void JobQueueData::onStartedJob()
 {
-    auto worker = qobject_cast<JobWorker*>(sender());
+    auto *worker = qobject_cast<JobWorker*>(sender());
 
-    auto jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
+    auto *jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
     jobItem->setProgress(0);
     jobItem->setStatus(JobStatus::Running);
     jobItem->setBeginTime(worker->simulationStart());
@@ -115,9 +115,9 @@ void JobQueueData::onStartedJob()
 
 void JobQueueData::onFinishedJob()
 {
-    auto worker = qobject_cast<JobWorker*>(sender());
+    auto *worker = qobject_cast<JobWorker*>(sender());
 
-    auto jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
+    auto *jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
     processFinishedJob(worker, jobItem);
 
     // I tell to the thread to exit here (instead of connecting JobRunner::finished
@@ -135,14 +135,14 @@ void JobQueueData::onFinishedJob()
 
 void JobQueueData::onFinishedThread()
 {
-    auto thread = qobject_cast<QThread*>(sender());
+    auto *thread = qobject_cast<QThread*>(sender());
     assignForDeletion(thread);
 }
 
 void JobQueueData::onProgressUpdate()
 {
-    auto worker = qobject_cast<JobWorker*>(sender());
-    auto jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
+    auto *worker = qobject_cast<JobWorker*>(sender());
+    auto *jobItem = m_jobModel->getJobItemForIdentifier(worker->identifier());
     jobItem->setProgress(worker->progress());
     updateGlobalProgress();
 }
@@ -214,7 +214,7 @@ void JobQueueData::assignForDeletion(JobWorker* worker)
 
 void JobQueueData::clearSimulation(const QString& identifier)
 {
-    auto simulation = getSimulation(identifier);
+    auto *simulation = getSimulation(identifier);
     m_simulations.remove(identifier);
     delete simulation;
 }
@@ -230,7 +230,7 @@ void JobQueueData::processFinishedJob(JobWorker* worker, JobItem* jobItem)
         jobItem->setComments(worker->failureMessage());
     } else {
         // propagating simulation results
-        auto simulation = getSimulation(worker->identifier());
+        auto *simulation = getSimulation(worker->identifier());
         jobItem->setResults(simulation);
     }
     jobItem->setStatus(worker->status());
diff --git a/GUI/Model/Job/JobWorker.cpp b/GUI/Model/Job/JobWorker.cpp
index eace8a30aa2..e72ee7716e8 100644
--- a/GUI/Model/Job/JobWorker.cpp
+++ b/GUI/Model/Job/JobWorker.cpp
@@ -16,9 +16,10 @@
 #include "Core/Simulation/GISASSimulation.h"
 #include <QDateTime>
 #include <memory>
+#include <utility>
 
-JobWorker::JobWorker(const QString& identifier, ISimulation* simulation)
-    : m_identifier(identifier)
+JobWorker::JobWorker(QString  identifier, ISimulation* simulation)
+    : m_identifier(std::move(identifier))
     , m_simulation(simulation)
     , m_percentage_done(0)
     , m_job_status(JobStatus::Idle)
diff --git a/GUI/Model/Job/JobWorker.h b/GUI/Model/Job/JobWorker.h
index d293de018b8..103ee426f64 100644
--- a/GUI/Model/Job/JobWorker.h
+++ b/GUI/Model/Job/JobWorker.h
@@ -26,7 +26,7 @@ class ISimulation;
 class JobWorker : public QObject {
     Q_OBJECT
 public:
-    JobWorker(const QString& identifier, ISimulation* simulation);
+    JobWorker(QString  identifier, ISimulation* simulation);
 
     QString identifier() const;
 
diff --git a/GUI/Model/Job/ParameterTreeUtils.cpp b/GUI/Model/Job/ParameterTreeUtils.cpp
index 343cad3d5b5..cdcb0231237 100644
--- a/GUI/Model/Job/ParameterTreeUtils.cpp
+++ b/GUI/Model/Job/ParameterTreeUtils.cpp
@@ -42,7 +42,7 @@ void handleItem(SessionItem* tree, const SessionItem* source)
         QString path = GUI::Model::Path::getPathFromIndex(source->index());
         int firstSlash = path.indexOf('/');
         path = path.mid(firstSlash + 1);
-        ParameterItem* parItem = polymorphic_downcast<ParameterItem*>(tree);
+        auto* parItem = polymorphic_downcast<ParameterItem*>(tree);
         parItem->setLink(path);
         parItem->setBackup(sourceValue);
         return;
@@ -55,18 +55,18 @@ void handleItem(SessionItem* tree, const SessionItem* source)
         if (child->isVisible() && child->isEnabled()) {
             if (child->hasModelType<PropertyItem>()) {
                 if (child->value().type() == QVariant::Double) {
-                    auto branch = tree->model()->insertItem<ParameterItem>(tree);
+                    auto *branch = tree->model()->insertItem<ParameterItem>(tree);
                     handleItem(branch, child);
                 }
 
             } else if (child->hasModelType<GroupItem>()) {
                 SessionItem* currentItem = dynamic_cast<GroupItem*>(child)->currentItem();
                 if (currentItem && currentItem->numberOfChildren() > 0) {
-                    auto branch = tree->model()->insertItem<ParameterLabelItem>(tree);
+                    auto *branch = tree->model()->insertItem<ParameterLabelItem>(tree);
                     handleItem(branch, currentItem);
                 }
             } else {
-                auto branch = tree->model()->insertItem<ParameterLabelItem>(tree);
+                auto *branch = tree->model()->insertItem<ParameterLabelItem>(tree);
                 handleItem(branch, child);
             }
         }
@@ -82,7 +82,7 @@ void populateParameterContainer(SessionItem* container, const SessionItem* sourc
         throw Error("GUI::Model::ParameterTreeUtils::populateParameterContainer() -> Error. "
                     "Not a ParameterContainerType.");
 
-    auto sourceLabel = container->model()->insertItem<ParameterLabelItem>(container);
+    auto *sourceLabel = container->model()->insertItem<ParameterLabelItem>(container);
     handleItem(sourceLabel, source);
 }
 
@@ -90,7 +90,7 @@ void populateParameterContainer(SessionItem* container, const SessionItem* sourc
 
 void GUI::Model::ParameterTreeUtils::createParameterTree(JobItem* jobItem)
 {
-    auto container = jobItem->createParameterContainerItem();
+    auto *container = jobItem->createParameterContainerItem();
 
     populateParameterContainer(container, jobItem->materialContainerItem());
 
diff --git a/GUI/Model/Material/MaterialItem.cpp b/GUI/Model/Material/MaterialItem.cpp
index 153823fd82e..5c7453b833c 100644
--- a/GUI/Model/Material/MaterialItem.cpp
+++ b/GUI/Model/Material/MaterialItem.cpp
@@ -49,7 +49,7 @@ MaterialItem::MaterialItem() : SessionItem(M_TYPE)
 
 void MaterialItem::setRefractiveIndex(const double delta, const double beta)
 {
-    auto refractiveData = setGroupProperty(P_MATERIAL_DATA, MaterialRefractiveDataItem::M_TYPE);
+    auto *refractiveData = setGroupProperty(P_MATERIAL_DATA, MaterialRefractiveDataItem::M_TYPE);
     refractiveData->setItemValue(MaterialRefractiveDataItem::P_DELTA, delta);
     refractiveData->setItemValue(MaterialRefractiveDataItem::P_BETA, beta);
 }
@@ -58,7 +58,7 @@ void MaterialItem::setRefractiveIndex(const double delta, const double beta)
 
 void MaterialItem::setScatteringLengthDensity(const complex_t sld)
 {
-    auto sldData = setGroupProperty(P_MATERIAL_DATA, MaterialSLDDataItem::M_TYPE);
+    auto *sldData = setGroupProperty(P_MATERIAL_DATA, MaterialSLDDataItem::M_TYPE);
     sldData->setItemValue(MaterialSLDDataItem::P_SLD_REAL, sld.real());
     sldData->setItemValue(MaterialSLDDataItem::P_SLD_IMAG, sld.imag());
 }
@@ -162,7 +162,7 @@ void MaterialItem::hideMagnetization()
 
 std::unique_ptr<Material> MaterialItem::createMaterial() const
 {
-    auto dataItem = getGroupItem(P_MATERIAL_DATA);
+    auto *dataItem = getGroupItem(P_MATERIAL_DATA);
     auto magnetization = item<VectorItem>(P_MAGNETIZATION)->getVector();
     auto name = itemName().toStdString();
 
diff --git a/GUI/Model/Material/MaterialItem.h b/GUI/Model/Material/MaterialItem.h
index 9332b5bfe3f..7e95cf61a1e 100644
--- a/GUI/Model/Material/MaterialItem.h
+++ b/GUI/Model/Material/MaterialItem.h
@@ -36,8 +36,8 @@ public:
     MaterialItem();
 
     /// set refractive index as in 1 - delta + i * beta
-    void setRefractiveIndex(const double delta, const double beta);
-    void setScatteringLengthDensity(const complex_t index);
+    void setRefractiveIndex(double delta, double beta);
+    void setScatteringLengthDensity(complex_t sld);
 
     DoubleDescriptor delta();
     DoubleDescriptor beta();
diff --git a/GUI/Model/Material/MaterialItemContainer.cpp b/GUI/Model/Material/MaterialItemContainer.cpp
index b6056c94870..ba699b2c377 100644
--- a/GUI/Model/Material/MaterialItemContainer.cpp
+++ b/GUI/Model/Material/MaterialItemContainer.cpp
@@ -40,8 +40,8 @@ MaterialItem* MaterialItemContainer::findMaterialById(QString id)
 const MaterialItem* MaterialItemContainer::findMaterialById(QString id) const
 {
     auto materials = getItems(T_MATERIALS);
-    for (auto item : materials) {
-        auto material = dynamic_cast<MaterialItem*>(item);
+    for (auto *item : materials) {
+        auto *material = dynamic_cast<MaterialItem*>(item);
         if (material->identifier() == id)
             return material;
     }
diff --git a/GUI/Model/Material/MaterialItemUtils.cpp b/GUI/Model/Material/MaterialItemUtils.cpp
index 4b2dd603d25..6ebc0441d16 100644
--- a/GUI/Model/Material/MaterialItemUtils.cpp
+++ b/GUI/Model/Material/MaterialItemUtils.cpp
@@ -65,7 +65,7 @@ MaterialItem* GUI::MaterialUtil::findMaterial(const QString& materialIdentifier)
         throw Error("GUI::MaterialUtil::findMaterial() -> Error. "
                     "Attempt to access non-existing material model");
 
-    auto material =
+    auto *material =
         GUI::Model::MaterialModelStore::materialModel()->materialFromIdentifier(materialIdentifier);
 
     if (!material)
diff --git a/GUI/Model/Material/MaterialModel.cpp b/GUI/Model/Material/MaterialModel.cpp
index d4781673ed7..bac35e95617 100644
--- a/GUI/Model/Material/MaterialModel.cpp
+++ b/GUI/Model/Material/MaterialModel.cpp
@@ -59,7 +59,7 @@ MaterialModel* MaterialModel::createCopy(SessionItem* parent)
 
 MaterialItem* MaterialModel::addRefractiveMaterial(const QString& name, double delta, double beta)
 {
-    auto materialItem = insertItem<MaterialItem>();
+    auto *materialItem = insertItem<MaterialItem>();
     materialItem->setItemName(name);
     materialItem->setColor(suggestMaterialColor(name));
     materialItem->setRefractiveIndex(delta, beta);
@@ -68,7 +68,7 @@ MaterialItem* MaterialModel::addRefractiveMaterial(const QString& name, double d
 
 MaterialItem* MaterialModel::addSLDMaterial(const QString& name, double sld, double abs_term)
 {
-    auto materialItem = insertItem<MaterialItem>();
+    auto *materialItem = insertItem<MaterialItem>();
     materialItem->setItemName(name);
     materialItem->setColor(suggestMaterialColor(name));
     materialItem->setScatteringLengthDensity(complex_t(sld, abs_term));
@@ -77,7 +77,7 @@ MaterialItem* MaterialModel::addSLDMaterial(const QString& name, double sld, dou
 
 MaterialItem* MaterialModel::materialFromName(const QString& name)
 {
-    for (auto materialItem : topItems<MaterialItem>())
+    for (auto *materialItem : topItems<MaterialItem>())
         if (materialItem->itemName() == name)
             return materialItem;
 
@@ -86,7 +86,7 @@ MaterialItem* MaterialModel::materialFromName(const QString& name)
 
 MaterialItem* MaterialModel::materialFromIdentifier(const QString& identifier)
 {
-    for (auto materialItem : topItems<MaterialItem>())
+    for (auto *materialItem : topItems<MaterialItem>())
         if (materialItem->identifier() == identifier)
             return materialItem;
 
@@ -98,7 +98,7 @@ MaterialItem* MaterialModel::cloneMaterial(MaterialItem* material)
     if (!material)
         return nullptr;
 
-    auto clonedMaterial = copyItem(material, nullptr);
+    auto *clonedMaterial = copyItem(material, nullptr);
     clonedMaterial->setIdentifier(QUuid::createUuid().toString());
     clonedMaterial->setItemName(material->itemName() + " (copy)");
     return clonedMaterial;
@@ -141,7 +141,7 @@ void MaterialModel::readFrom(QXmlStreamReader* reader, MessageService* messageSe
 
     connect(this, &SessionModel::rowsInserted, this, &MaterialModel::onRowsChange);
 
-    for (auto materialItem : materialItems()) {
+    for (auto *materialItem : materialItems()) {
         materialItem->mapper()->setOnAnyChildChange(
             [this, materialItem](SessionItem*) { materialChanged(materialItem); }, this);
     }
@@ -153,7 +153,7 @@ void MaterialModel::initFrom(SessionModel* model, SessionItem* parent)
 
     QStringList identifiersOfChangedMaterials;
     auto* sourceModel = dynamic_cast<MaterialModel*>(model);
-    for (auto destItem : materialItems()) {
+    for (auto *destItem : materialItems()) {
         auto* srcItem = sourceModel->findMaterialItem(destItem->identifier());
         if (srcItem && (*srcItem != *destItem))
             identifiersOfChangedMaterials << destItem->identifier();
diff --git a/GUI/Model/Material/MaterialModel.h b/GUI/Model/Material/MaterialModel.h
index a88ce27b825..7dda708b871 100644
--- a/GUI/Model/Material/MaterialModel.h
+++ b/GUI/Model/Material/MaterialModel.h
@@ -24,7 +24,7 @@ class MaterialModel : public SessionModel {
 
 public:
     explicit MaterialModel(QObject* parent = nullptr);
-    ~MaterialModel();
+    ~MaterialModel() override;
 
     MaterialModel* createCopy(SessionItem* parent = nullptr) override;
 
@@ -43,8 +43,8 @@ public:
     void removeMaterial(const QString& identifier);
     void removeMaterial(MaterialItem* materialItem);
 
-    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0) override;
-    virtual void initFrom(SessionModel* model, SessionItem* parent) override;
+    void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr) override;
+    void initFrom(SessionModel* model, SessionItem* parent) override;
 
     //! Compares for complete equality (same material identifiers, same order of materials,...)
     bool operator==(const MaterialModel& other) const;
diff --git a/GUI/Model/Project/OutputDataIOService.cpp b/GUI/Model/Project/OutputDataIOService.cpp
index bf31ba5a5ab..e8430b323c2 100644
--- a/GUI/Model/Project/OutputDataIOService.cpp
+++ b/GUI/Model/Project/OutputDataIOService.cpp
@@ -75,7 +75,7 @@ void OutputDataIOService::loadDataFiles(const QString& projectDir, MessageServic
             item->loadData(projectDir);
             newHistory.markAsSaved(item);
             // handling crash of GUI during job run and non-existing file
-            if (auto jobItem = parentJobItem(item)) {
+            if (auto *jobItem = parentJobItem(item)) {
                 if (jobItem->isRunning()) {
                     jobItem->setComments("Possible GUI crash while job was running");
                     jobItem->setStatus(JobStatus::Failed);
@@ -83,7 +83,7 @@ void OutputDataIOService::loadDataFiles(const QString& projectDir, MessageServic
             }
 
         } catch (const std::exception& ex) {
-            if (auto jobItem = parentJobItem(item)) {
+            if (auto *jobItem = parentJobItem(item)) {
                 // Handling corrupted file on disk
                 jobItem->setComments(
                     QString("Load of the data from disk failed with '%1'").arg(QString(ex.what())));
@@ -106,8 +106,8 @@ QVector<SaveLoadInterface*> OutputDataIOService::dataInterfaces() const
     if (!m_applicationModels)
         return result;
 
-    for (auto item : m_applicationModels->nonXMLItems())
-        if (auto non_xml_item = dynamic_cast<SaveLoadInterface*>(item))
+    for (auto *item : m_applicationModels->nonXMLItems())
+        if (auto *non_xml_item = dynamic_cast<SaveLoadInterface*>(item))
             result.push_back(non_xml_item);
 
     return result;
@@ -120,15 +120,15 @@ void OutputDataIOService::cleanOldFiles(const QString& projectDir, const QString
                                         const QStringList& newSaves)
 {
     const auto toRemove = oldSaves.toSet().subtract(newSaves.toSet());
-    for (auto& name : toRemove)
+    for (const auto& name : toRemove)
         QFile::remove(projectDir + "/" + name);
 }
 
 namespace {
 JobItem* parentJobItem(SaveLoadInterface* item)
 {
-    auto session_item = dynamic_cast<SessionItem*>(item); // sidecast
-    auto jobItem =
+    auto *session_item = dynamic_cast<SessionItem*>(item); // sidecast
+    const auto *jobItem =
         dynamic_cast<const JobItem*>(GUI::Model::Path::ancestor(session_item, JobItem::M_TYPE));
     return const_cast<JobItem*>(jobItem);
 }
diff --git a/GUI/Model/Project/ProjectDocument.cpp b/GUI/Model/Project/ProjectDocument.cpp
index a711d358669..a92dcc46c34 100644
--- a/GUI/Model/Project/ProjectDocument.cpp
+++ b/GUI/Model/Project/ProjectDocument.cpp
@@ -25,6 +25,7 @@
 #include <QElapsedTimer>
 #include <QStandardPaths>
 #include <QXmlStreamReader>
+#include <memory>
 
 namespace {
 
@@ -44,7 +45,7 @@ ProjectDocument::ProjectDocument(const QString& projectFileName)
     , m_singleSampleMode(false)
     , m_functionalities(All)
 {
-    m_linkManager.reset(new LinkInstrumentManager(instrumentModel(), realDataModel()));
+    m_linkManager = std::make_unique<LinkInstrumentManager>(instrumentModel(), realDataModel());
     setObjectName("ProjectDocument");
     if (!projectFileName.isEmpty())
         setProjectFileName(projectFileName);
@@ -199,7 +200,7 @@ ProjectDocument::ReadResult ProjectDocument::loadProjectFile(const QString& proj
         m_dataService->loadDataFiles(projectDir(), &messageService);
         connectModels();
 
-        if (messageService.warnings().size() > 0)
+        if (!messageService.warnings().empty())
             result = ReadResult::warning;
         return result;
 
diff --git a/GUI/Model/Project/ProjectDocument.h b/GUI/Model/Project/ProjectDocument.h
index b1bd44097c7..406f9d2851a 100644
--- a/GUI/Model/Project/ProjectDocument.h
+++ b/GUI/Model/Project/ProjectDocument.h
@@ -56,7 +56,7 @@ public:
     Q_FLAG(Functionalities)
 
     ProjectDocument(const QString& projectFileName = "");
-    ~ProjectDocument();
+    ~ProjectDocument() override;
 
     QString projectName() const;
     void setProjectName(const QString& text);
@@ -67,7 +67,7 @@ public:
     QString userExportDir() const;
 
     QString projectFileName() const;
-    void setProjectFileName(const QString& text);
+    void setProjectFileName(const QString& projectFileName);
 
     InstrumentModel* instrumentModel() const;
     SampleModel* sampleModel() const;
diff --git a/GUI/Model/Sample/FTDecayFunctionItems.h b/GUI/Model/Sample/FTDecayFunctionItems.h
index 3aa44f818e6..975a6e3f429 100644
--- a/GUI/Model/Sample/FTDecayFunctionItems.h
+++ b/GUI/Model/Sample/FTDecayFunctionItems.h
@@ -26,7 +26,7 @@ private:
 
 public:
     virtual std::unique_ptr<IFTDecayFunction1D> createFTDecayFunction() const = 0;
-    virtual ~FTDecayFunction1DItem() {}
+    ~FTDecayFunction1DItem() override = default;
 
     DoubleDescriptor decayLength() const;
 
@@ -72,7 +72,7 @@ public:
     std::unique_ptr<IFTDecayFunction1D> createFTDecayFunction() const override;
 
     DoubleDescriptor eta() const;
-    virtual DoubleDescriptors valueDescriptors() const override;
+    DoubleDescriptors valueDescriptors() const override;
 };
 
 // --------------------------------------------------------------------------------------------- //
@@ -86,7 +86,7 @@ private:
 
 public:
     virtual std::unique_ptr<IFTDecayFunction2D> createFTDecayFunction() const = 0;
-    virtual ~FTDecayFunction2DItem() {}
+    ~FTDecayFunction2DItem() override = default;
 
     double decayLengthX() const;
     void setDecayLengthX(double decay_length_x);
diff --git a/GUI/Model/Sample/FTDistributionItems.h b/GUI/Model/Sample/FTDistributionItems.h
index 123ff7da402..4b5d37859b7 100644
--- a/GUI/Model/Sample/FTDistributionItems.h
+++ b/GUI/Model/Sample/FTDistributionItems.h
@@ -26,7 +26,7 @@ private:
 
 public:
     virtual std::unique_ptr<IFTDistribution1D> createFTDistribution() const = 0;
-    virtual ~FTDistribution1DItem() {}
+    ~FTDistribution1DItem() override = default;
 
     DoubleDescriptor omega() const;
 
@@ -88,7 +88,7 @@ public:
     std::unique_ptr<IFTDistribution1D> createFTDistribution() const override;
 
     DoubleDescriptor eta() const;
-    virtual DoubleDescriptors valueDescriptors() const override;
+    DoubleDescriptors valueDescriptors() const override;
 };
 
 // --------------------------------------------------------------------------------------------- //
diff --git a/GUI/Model/Sample/FormFactorItems.h b/GUI/Model/Sample/FormFactorItems.h
index 69840f57bcb..5b09896615f 100644
--- a/GUI/Model/Sample/FormFactorItems.h
+++ b/GUI/Model/Sample/FormFactorItems.h
@@ -53,7 +53,7 @@ public:
     void setHeight(double height);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height(), alpha()};
     }
@@ -79,7 +79,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -105,7 +105,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -131,7 +131,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -157,7 +157,7 @@ public:
     void setHeight(double height);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {radius(), height(), alpha()};
     }
@@ -183,7 +183,7 @@ public:
     void setHeight(double height);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {baseEdge(), height(), alpha()};
     }
@@ -212,7 +212,7 @@ public:
     void setHeightRatio(double height_ratio);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), height(), heightRatio(), alpha()};
     }
@@ -238,7 +238,7 @@ public:
     SessionItem* radiusItem() const;
     SessionItem* heightItem() const;
 
-    virtual DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
+    DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
 };
 
 class DodecahedronItem : public FormFactorItem {
@@ -255,7 +255,7 @@ public:
 
     void setEdge(double edge);
 
-    virtual DoubleDescriptors geometryValues() const override { return {edge()}; }
+    DoubleDescriptors geometryValues() const override { return {edge()}; }
 };
 
 class EllipsoidalCylinderItem : public FormFactorItem {
@@ -278,7 +278,7 @@ public:
     void setRadiusY(double radius_y);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {radiusX(), radiusY(), height()};
     }
@@ -298,7 +298,7 @@ public:
     void setRadius(double radius);
     SessionItem* radiusItem() const;
 
-    virtual DoubleDescriptors geometryValues() const override { return {radius()}; }
+    DoubleDescriptors geometryValues() const override { return {radius()}; }
 };
 
 class FullSpheroidItem : public FormFactorItem {
@@ -318,7 +318,7 @@ public:
     void setRadius(double radius);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
+    DoubleDescriptors geometryValues() const override { return {radius(), height()}; }
 };
 
 class HemiEllipsoidItem : public FormFactorItem {
@@ -341,7 +341,7 @@ public:
     void setRadiusY(double radius_y);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {radiusX(), radiusY(), height()};
     }
@@ -361,7 +361,7 @@ public:
 
     void setEdge(double edge);
 
-    virtual DoubleDescriptors geometryValues() const override { return {edge()}; }
+    DoubleDescriptors geometryValues() const override { return {edge()}; }
 };
 
 class Prism3Item : public FormFactorItem {
@@ -381,7 +381,7 @@ public:
     void setBaseEdge(double base_edge);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
+    DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
 };
 
 class Prism6Item : public FormFactorItem {
@@ -401,7 +401,7 @@ public:
     void setBaseEdge(double base_edge);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
+    DoubleDescriptors geometryValues() const override { return {baseEdge(), height()}; }
 };
 
 class PyramidItem : public FormFactorItem {
@@ -424,7 +424,7 @@ public:
     void setHeight(double height);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {baseEdge(), height(), alpha()};
     }
@@ -450,7 +450,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -476,7 +476,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -502,7 +502,7 @@ public:
     void setWidth(double width);
     void setHeight(double height);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height()};
     }
@@ -531,7 +531,7 @@ public:
     void setHeight(double height);
     void setAsymmetry(double asymmetry);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height(), asymmetry()};
     }
@@ -560,7 +560,7 @@ public:
     void setHeight(double height);
     void setAsymmetry(double asymmetry);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height(), asymmetry()};
     }
@@ -589,7 +589,7 @@ public:
     void setHeight(double height);
     void setAsymmetry(double asymmetry);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), width(), height(), asymmetry()};
     }
@@ -615,7 +615,7 @@ public:
     void setHeight(double height);
     void setAlpha(double alpha);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {baseEdge(), height(), alpha()};
     }
@@ -638,7 +638,7 @@ public:
     void setLength(double length);
     void setRemovedLength(double removed_length);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {length(), removedLength()};
     }
@@ -664,7 +664,7 @@ public:
     void setHeight(double height);
     void setRemovedTop(double removed_top);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {radius(), height(), removedTop()};
     }
@@ -693,7 +693,7 @@ public:
     void setHeightFlattening(double height_flattening);
     void setRemovedTop(double removed_top);
 
-    virtual DoubleDescriptors geometryValues() const override
+    DoubleDescriptors geometryValues() const override
     {
         return {radius(), height(), heightFlattening(), removedTop()};
     }
diff --git a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
index 4a9e617e648..2c0aa36c8d6 100644
--- a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
+++ b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
@@ -100,7 +100,7 @@ SessionItem* GUIDomainSampleVisitor::populateSampleModel(SampleModel* sampleMode
 void GUIDomainSampleVisitor::visit(const ParticleLayout* node)
 {
     SessionItem* parent = m_levelToParentItem[depth() - 1];
-    auto layout_item = m_sampleModel->insertItem<ParticleLayoutItem>(parent);
+    auto *layout_item = m_sampleModel->insertItem<ParticleLayoutItem>(parent);
     layout_item->totalDensity().set(node->totalParticleSurfaceDensity());
     layout_item->weight().set(node->weight());
     m_levelToParentItem[depth()] = layout_item;
@@ -117,7 +117,7 @@ void GUIDomainSampleVisitor::visit(const Layer* node)
     const LayerInterface* top_interface =
         i_layer == 0 ? nullptr : multilayer->layerInterface(i_layer - 1);
 
-    LayerItem* layer_item = m_sampleModel->insertItem<LayerItem>(parent);
+    auto* layer_item = m_sampleModel->insertItem<LayerItem>(parent);
     layer_item->setMaterial(createMaterialFromDomain(node->material()));
 
     GUI::Transform::FromDomain::setLayerItem(layer_item, node, top_interface);
@@ -127,7 +127,7 @@ void GUIDomainSampleVisitor::visit(const Layer* node)
 
 void GUIDomainSampleVisitor::visit(const MultiLayer* node)
 {
-    auto multilayer_item = m_sampleModel->insertItem<MultiLayerItem>();
+    auto *multilayer_item = m_sampleModel->insertItem<MultiLayerItem>();
     multilayer_item->setItemName(node->sampleName().c_str());
     multilayer_item->crossCorrLength().set(node->crossCorrLength());
     multilayer_item->setExternalField(node->externalField());
@@ -137,7 +137,7 @@ void GUIDomainSampleVisitor::visit(const MultiLayer* node)
 
 void GUIDomainSampleVisitor::visit(const Particle* node)
 {
-    ParticleItem* particle_item = InsertIParticle<ParticleItem>(node);
+    auto* particle_item = InsertIParticle<ParticleItem>(node);
     particle_item->setMaterial(createMaterialFromDomain(node->material()));
 }
 
@@ -164,7 +164,7 @@ void GUIDomainSampleVisitor::visit(const Crystal* node)
         throw Error("GUI::Model::ObjectBuilder::visit(const Crystal*) "
                     "-> Error. Parent is not a MesoCrystal");
     }
-    MesoCrystalItem* mesocrystal_item = polymorphic_cast<MesoCrystalItem*>(item);
+    auto* mesocrystal_item = polymorphic_cast<MesoCrystalItem*>(item);
     auto lattice = node->transformedLattice();
     auto vector_a = lattice.getBasisVectorA();
     auto vector_b = lattice.getBasisVectorB();
@@ -181,7 +181,7 @@ void GUIDomainSampleVisitor::visit(const Crystal* node)
 void GUIDomainSampleVisitor::visit(const FormFactorAnisoPyramid* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    AnisoPyramidItem* ff_item = AddFormFactorItem<AnisoPyramidItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<AnisoPyramidItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -192,7 +192,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorAnisoPyramid* node)
 void GUIDomainSampleVisitor::visit(const FormFactorBarGauss* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    BarGaussItem* ff_item = AddFormFactorItem<BarGaussItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<BarGaussItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -202,7 +202,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorBarGauss* node)
 void GUIDomainSampleVisitor::visit(const FormFactorBarLorentz* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    BarLorentzItem* ff_item = AddFormFactorItem<BarLorentzItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<BarLorentzItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -212,7 +212,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorBarLorentz* node)
 void GUIDomainSampleVisitor::visit(const FormFactorBox* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    BoxItem* ff_item = AddFormFactorItem<BoxItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<BoxItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -222,7 +222,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorBox* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCone* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    ConeItem* ff_item = AddFormFactorItem<ConeItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<ConeItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     ff_item->setHeight(node->getHeight());
     ff_item->setAlpha(Units::rad2deg(node->getAlpha()));
@@ -232,7 +232,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCone* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCone6* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    Cone6Item* ff_item = AddFormFactorItem<Cone6Item>(particle_item);
+    auto* ff_item = AddFormFactorItem<Cone6Item>(particle_item);
     ff_item->setBaseEdge(node->getBaseEdge());
     ff_item->setHeight(node->getHeight());
     ff_item->setAlpha(Units::rad2deg(node->getAlpha()));
@@ -242,7 +242,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCone6* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCuboctahedron* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    CuboctahedronItem* ff_item = AddFormFactorItem<CuboctahedronItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<CuboctahedronItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setHeight(node->getHeight());
     ff_item->setHeightRatio(node->getHeightRatio());
@@ -253,7 +253,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCuboctahedron* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCylinder* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    CylinderItem* ff_item = AddFormFactorItem<CylinderItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<CylinderItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     ff_item->setHeight(node->getHeight());
     m_levelToParentItem[depth()] = particle_item;
@@ -262,7 +262,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCylinder* node)
 void GUIDomainSampleVisitor::visit(const FormFactorDodecahedron* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    DodecahedronItem* ff_item = AddFormFactorItem<DodecahedronItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<DodecahedronItem>(particle_item);
     ff_item->setEdge(node->getEdge());
     m_levelToParentItem[depth()] = particle_item;
 }
@@ -270,7 +270,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorDodecahedron* node)
 void GUIDomainSampleVisitor::visit(const FormFactorEllipsoidalCylinder* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    EllipsoidalCylinderItem* ff_item = AddFormFactorItem<EllipsoidalCylinderItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<EllipsoidalCylinderItem>(particle_item);
     ff_item->setRadiusX(node->getRadiusX());
     ff_item->setRadiusY(node->getRadiusY());
     ff_item->setHeight(node->getHeight());
@@ -280,7 +280,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorEllipsoidalCylinder* node)
 void GUIDomainSampleVisitor::visit(const FormFactorFullSphere* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    FullSphereItem* ff_item = AddFormFactorItem<FullSphereItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<FullSphereItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     m_levelToParentItem[depth()] = particle_item;
 }
@@ -288,7 +288,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorFullSphere* node)
 void GUIDomainSampleVisitor::visit(const FormFactorFullSpheroid* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    FullSpheroidItem* ff_item = AddFormFactorItem<FullSpheroidItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<FullSpheroidItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     ff_item->setHeight(node->getHeight());
     m_levelToParentItem[depth()] = particle_item;
@@ -297,7 +297,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorFullSpheroid* node)
 void GUIDomainSampleVisitor::visit(const FormFactorIcosahedron* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    IcosahedronItem* ff_item = AddFormFactorItem<IcosahedronItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<IcosahedronItem>(particle_item);
     ff_item->setEdge(node->getEdge());
     m_levelToParentItem[depth()] = particle_item;
 }
@@ -305,7 +305,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorIcosahedron* node)
 void GUIDomainSampleVisitor::visit(const FormFactorHemiEllipsoid* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    HemiEllipsoidItem* ff_item = AddFormFactorItem<HemiEllipsoidItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<HemiEllipsoidItem>(particle_item);
     ff_item->setRadiusX(node->getRadiusX());
     ff_item->setRadiusY(node->getRadiusY());
     ff_item->setHeight(node->getHeight());
@@ -315,7 +315,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorHemiEllipsoid* node)
 void GUIDomainSampleVisitor::visit(const FormFactorPrism3* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    Prism3Item* ff_item = AddFormFactorItem<Prism3Item>(particle_item);
+    auto* ff_item = AddFormFactorItem<Prism3Item>(particle_item);
     ff_item->setBaseEdge(node->getBaseEdge());
     ff_item->setHeight(node->getHeight());
     m_levelToParentItem[depth()] = particle_item;
@@ -324,7 +324,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorPrism3* node)
 void GUIDomainSampleVisitor::visit(const FormFactorPrism6* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    Prism6Item* ff_item = AddFormFactorItem<Prism6Item>(particle_item);
+    auto* ff_item = AddFormFactorItem<Prism6Item>(particle_item);
     ff_item->setBaseEdge(node->getBaseEdge());
     ff_item->setHeight(node->getHeight());
     m_levelToParentItem[depth()] = particle_item;
@@ -333,7 +333,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorPrism6* node)
 void GUIDomainSampleVisitor::visit(const FormFactorPyramid* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    PyramidItem* ff_item = AddFormFactorItem<PyramidItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<PyramidItem>(particle_item);
     ff_item->setBaseEdge(node->getBaseEdge());
     ff_item->setHeight(node->getHeight());
     ff_item->setAlpha(Units::rad2deg(node->getAlpha()));
@@ -343,7 +343,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorPyramid* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleBox* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    CosineRippleBoxItem* ff_item = AddFormFactorItem<CosineRippleBoxItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<CosineRippleBoxItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -353,7 +353,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleBox* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleGauss* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    CosineRippleGaussItem* ff_item = AddFormFactorItem<CosineRippleGaussItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<CosineRippleGaussItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -363,7 +363,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleGauss* node)
 void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleLorentz* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    CosineRippleLorentzItem* ff_item = AddFormFactorItem<CosineRippleLorentzItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<CosineRippleLorentzItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -373,7 +373,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorCosineRippleLorentz* node)
 void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleBox* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    SawtoothRippleBoxItem* ff_item = AddFormFactorItem<SawtoothRippleBoxItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<SawtoothRippleBoxItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -384,7 +384,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleBox* node)
 void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleGauss* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    SawtoothRippleGaussItem* ff_item = AddFormFactorItem<SawtoothRippleGaussItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<SawtoothRippleGaussItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
     ff_item->setHeight(node->getHeight());
@@ -395,7 +395,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleGauss* node)
 void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleLorentz* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    SawtoothRippleLorentzItem* ff_item =
+    auto* ff_item =
         AddFormFactorItem<SawtoothRippleLorentzItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setWidth(node->getWidth());
@@ -407,7 +407,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorSawtoothRippleLorentz* node)
 void GUIDomainSampleVisitor::visit(const FormFactorTetrahedron* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    TetrahedronItem* ff_item = AddFormFactorItem<TetrahedronItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<TetrahedronItem>(particle_item);
     ff_item->setBaseEdge(node->getBaseEdge());
     ff_item->setHeight(node->getHeight());
     ff_item->setAlpha(Units::rad2deg(node->getAlpha()));
@@ -417,7 +417,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorTetrahedron* node)
 void GUIDomainSampleVisitor::visit(const FormFactorTruncatedCube* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    TruncatedCubeItem* ff_item = AddFormFactorItem<TruncatedCubeItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<TruncatedCubeItem>(particle_item);
     ff_item->setLength(node->getLength());
     ff_item->setRemovedLength(node->getRemovedLength());
     m_levelToParentItem[depth()] = particle_item;
@@ -426,7 +426,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorTruncatedCube* node)
 void GUIDomainSampleVisitor::visit(const FormFactorTruncatedSphere* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    TruncatedSphereItem* ff_item = AddFormFactorItem<TruncatedSphereItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<TruncatedSphereItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     ff_item->setHeight(node->getHeight());
     ff_item->setRemovedTop(node->getRemovedTop());
@@ -436,7 +436,7 @@ void GUIDomainSampleVisitor::visit(const FormFactorTruncatedSphere* node)
 void GUIDomainSampleVisitor::visit(const FormFactorTruncatedSpheroid* node)
 {
     SessionItem* particle_item = m_levelToParentItem[depth() - 1];
-    TruncatedSpheroidItem* ff_item = AddFormFactorItem<TruncatedSpheroidItem>(particle_item);
+    auto* ff_item = AddFormFactorItem<TruncatedSpheroidItem>(particle_item);
     ff_item->setRadius(node->getRadius());
     ff_item->setHeight(node->getHeight());
     ff_item->setHeightFlattening(node->getHeightFlattening());
@@ -449,7 +449,7 @@ void GUIDomainSampleVisitor::visit(const Interference1DLattice* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<Interference1DLatticeItem>();
+    auto *item = parent->createInterference<Interference1DLatticeItem>();
     GUI::Transform::FromDomain::set1DLatticeItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -459,7 +459,7 @@ void GUIDomainSampleVisitor::visit(const Interference2DLattice* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<Interference2DLatticeItem>();
+    auto *item = parent->createInterference<Interference2DLatticeItem>();
     GUI::Transform::FromDomain::set2DLatticeItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -469,7 +469,7 @@ void GUIDomainSampleVisitor::visit(const Interference2DParaCrystal* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<Interference2DParaCrystalItem>();
+    auto *item = parent->createInterference<Interference2DParaCrystalItem>();
     GUI::Transform::FromDomain::set2DParaCrystalItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -479,7 +479,7 @@ void GUIDomainSampleVisitor::visit(const InterferenceFinite2DLattice* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<InterferenceFinite2DLatticeItem>();
+    auto *item = parent->createInterference<InterferenceFinite2DLatticeItem>();
     GUI::Transform::FromDomain::setFinite2DLatticeItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -489,7 +489,7 @@ void GUIDomainSampleVisitor::visit(const InterferenceHardDisk* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<InterferenceHardDiskItem>();
+    auto *item = parent->createInterference<InterferenceHardDiskItem>();
     GUI::Transform::FromDomain::setHardDiskItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -499,7 +499,7 @@ void GUIDomainSampleVisitor::visit(const InterferenceRadialParaCrystal* node)
     ParticleLayoutItem* parent =
         dynamic_cast<ParticleLayoutItem*>(m_levelToParentItem[depth() - 1]);
     ASSERT(parent);
-    auto item = parent->createInterference<InterferenceRadialParaCrystalItem>();
+    auto *item = parent->createInterference<InterferenceRadialParaCrystalItem>();
     GUI::Transform::FromDomain::setRadialParaCrystalItem(item, *node);
     m_levelToParentItem[depth()] = item;
 }
@@ -510,7 +510,7 @@ void GUIDomainSampleVisitor::visit(const RotationX* node)
     ASSERT(parent);
 
     TransformationItem* transformation_item = parent->createTransformationItem();
-    XRotationItem* rot_item = transformation_item->setRotationType<XRotationItem>();
+    auto* rot_item = transformation_item->setRotationType<XRotationItem>();
     rot_item->angle().set(Units::rad2deg(node->getAngle()));
     m_levelToParentItem[depth()] = transformation_item;
 }
@@ -521,7 +521,7 @@ void GUIDomainSampleVisitor::visit(const RotationY* node)
     ASSERT(parent);
 
     TransformationItem* transformation_item = parent->createTransformationItem();
-    YRotationItem* rot_item = transformation_item->setRotationType<YRotationItem>();
+    auto* rot_item = transformation_item->setRotationType<YRotationItem>();
     rot_item->angle().set(Units::rad2deg(node->getAngle()));
     m_levelToParentItem[depth()] = transformation_item;
 }
@@ -532,7 +532,7 @@ void GUIDomainSampleVisitor::visit(const RotationZ* node)
     ASSERT(parent);
 
     TransformationItem* transformation_item = parent->createTransformationItem();
-    ZRotationItem* rot_item = transformation_item->setRotationType<ZRotationItem>();
+    auto* rot_item = transformation_item->setRotationType<ZRotationItem>();
     rot_item->angle().set(Units::rad2deg(node->getAngle()));
     m_levelToParentItem[depth()] = transformation_item;
 }
@@ -543,7 +543,7 @@ void GUIDomainSampleVisitor::visit(const RotationEuler* node)
     ASSERT(parent);
 
     TransformationItem* transformation_item = parent->createTransformationItem();
-    EulerRotationItem* rot_item = transformation_item->setRotationType<EulerRotationItem>();
+    auto* rot_item = transformation_item->setRotationType<EulerRotationItem>();
     rot_item->alpha().set(Units::rad2deg(node->getAlpha()));
     rot_item->beta().set(Units::rad2deg(node->getBeta()));
     rot_item->gamma().set(Units::rad2deg(node->getGamma()));
@@ -559,7 +559,7 @@ MaterialItem* GUIDomainSampleVisitor::createMaterialFromDomain(const Material* m
     QString materialName =
         m_topSampleName + QString("_") + QString(material->materialName().c_str());
 
-    if (auto materialItem = m_materialModel->materialFromName(materialName))
+    if (auto *materialItem = m_materialModel->materialFromName(materialName))
         return materialItem;
 
     complex_t material_data = material->materialData();
@@ -592,10 +592,10 @@ ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent,
                                                       const IParticle* particle)
 {
     if (parent->hasModelType<ParticleCoreShellItem>()) {
-        const ParticleCoreShell* coreshell =
+        const auto* coreshell =
             dynamic_cast<const ParticleCoreShell*>(m_itemToSample[parent]);
         ASSERT(coreshell);
-        ParticleCoreShellItem* parentCoreShell = polymorphic_cast<ParticleCoreShellItem*>(parent);
+        auto* parentCoreShell = polymorphic_cast<ParticleCoreShellItem*>(parent);
         if (particle == coreshell->coreParticle())
             return parentCoreShell->createCore();
         if (particle == coreshell->shellParticle())
@@ -608,7 +608,7 @@ ParticleItem* GUIDomainSampleVisitor::CreateIParticle(SessionItem* parent,
 // Used only in this file
 template <typename T> T* GUIDomainSampleVisitor::InsertIParticle(const IParticle* particle)
 {
-    auto parent = m_levelToParentItem[depth() - 1];
+    auto *parent = m_levelToParentItem[depth() - 1];
     ASSERT(parent);
 
     T* particle_item = CreateIParticle<T>(parent, particle);
diff --git a/GUI/Model/Sample/GUIDomainSampleVisitor.h b/GUI/Model/Sample/GUIDomainSampleVisitor.h
index 8d1824eef29..94480dba912 100644
--- a/GUI/Model/Sample/GUIDomainSampleVisitor.h
+++ b/GUI/Model/Sample/GUIDomainSampleVisitor.h
@@ -31,64 +31,64 @@ class MaterialItem;
 class GUIDomainSampleVisitor : public INodeVisitor {
 public:
     GUIDomainSampleVisitor();
-    ~GUIDomainSampleVisitor();
+    ~GUIDomainSampleVisitor() override;
 
     SessionItem* populateSampleModel(SampleModel* sampleModel, MaterialModel* materialModel,
-                                     const MultiLayer& sample, const QString& sample_name = "");
+                                     const MultiLayer& node, const QString& node_name = "");
 
     using INodeVisitor::visit;
 
-    void visit(const ParticleLayout*);
-
-    void visit(const Layer*);
-
-    void visit(const MultiLayer*);
-
-    void visit(const Particle*);
-    void visit(const ParticleCoreShell*);
-    void visit(const ParticleComposition*);
-    void visit(const MesoCrystal*);
-    void visit(const Crystal*);
-
-    void visit(const FormFactorAnisoPyramid*);
-    void visit(const FormFactorBarGauss*);
-    void visit(const FormFactorBarLorentz*);
-    void visit(const FormFactorBox*);
-    void visit(const FormFactorCone*);
-    void visit(const FormFactorCone6*);
-    void visit(const FormFactorCuboctahedron*);
-    void visit(const FormFactorCylinder*);
-    void visit(const FormFactorDodecahedron*);
-    void visit(const FormFactorEllipsoidalCylinder*);
-    void visit(const FormFactorFullSphere*);
-    void visit(const FormFactorFullSpheroid*);
-    void visit(const FormFactorHemiEllipsoid*);
-    void visit(const FormFactorIcosahedron*);
-    void visit(const FormFactorPrism3*);
-    void visit(const FormFactorPrism6*);
-    void visit(const FormFactorPyramid*);
-    void visit(const FormFactorCosineRippleBox*);
-    void visit(const FormFactorCosineRippleGauss*);
-    void visit(const FormFactorCosineRippleLorentz*);
-    void visit(const FormFactorSawtoothRippleBox*);
-    void visit(const FormFactorSawtoothRippleGauss*);
-    void visit(const FormFactorSawtoothRippleLorentz*);
-    void visit(const FormFactorTetrahedron*);
-    void visit(const FormFactorTruncatedCube*);
-    void visit(const FormFactorTruncatedSphere*);
-    void visit(const FormFactorTruncatedSpheroid*);
-
-    void visit(const Interference1DLattice*);
-    void visit(const Interference2DLattice*);
-    void visit(const Interference2DParaCrystal*);
-    void visit(const InterferenceFinite2DLattice*);
-    void visit(const InterferenceHardDisk*);
-    void visit(const InterferenceRadialParaCrystal*);
-
-    void visit(const RotationX*);
-    void visit(const RotationY*);
-    void visit(const RotationZ*);
-    void visit(const RotationEuler*);
+    void visit(const ParticleLayout*) override;
+
+    void visit(const Layer*) override;
+
+    void visit(const MultiLayer*) override;
+
+    void visit(const Particle*) override;
+    void visit(const ParticleCoreShell*) override;
+    void visit(const ParticleComposition*) override;
+    void visit(const MesoCrystal*) override;
+    void visit(const Crystal*) override;
+
+    void visit(const FormFactorAnisoPyramid*) override;
+    void visit(const FormFactorBarGauss*) override;
+    void visit(const FormFactorBarLorentz*) override;
+    void visit(const FormFactorBox*) override;
+    void visit(const FormFactorCone*) override;
+    void visit(const FormFactorCone6*) override;
+    void visit(const FormFactorCuboctahedron*) override;
+    void visit(const FormFactorCylinder*) override;
+    void visit(const FormFactorDodecahedron*) override;
+    void visit(const FormFactorEllipsoidalCylinder*) override;
+    void visit(const FormFactorFullSphere*) override;
+    void visit(const FormFactorFullSpheroid*) override;
+    void visit(const FormFactorHemiEllipsoid*) override;
+    void visit(const FormFactorIcosahedron*) override;
+    void visit(const FormFactorPrism3*) override;
+    void visit(const FormFactorPrism6*) override;
+    void visit(const FormFactorPyramid*) override;
+    void visit(const FormFactorCosineRippleBox*) override;
+    void visit(const FormFactorCosineRippleGauss*) override;
+    void visit(const FormFactorCosineRippleLorentz*) override;
+    void visit(const FormFactorSawtoothRippleBox*) override;
+    void visit(const FormFactorSawtoothRippleGauss*) override;
+    void visit(const FormFactorSawtoothRippleLorentz*) override;
+    void visit(const FormFactorTetrahedron*) override;
+    void visit(const FormFactorTruncatedCube*) override;
+    void visit(const FormFactorTruncatedSphere*) override;
+    void visit(const FormFactorTruncatedSpheroid*) override;
+
+    void visit(const Interference1DLattice*) override;
+    void visit(const Interference2DLattice*) override;
+    void visit(const Interference2DParaCrystal*) override;
+    void visit(const InterferenceFinite2DLattice*) override;
+    void visit(const InterferenceHardDisk*) override;
+    void visit(const InterferenceRadialParaCrystal*) override;
+
+    void visit(const RotationX*) override;
+    void visit(const RotationY*) override;
+    void visit(const RotationZ*) override;
+    void visit(const RotationEuler*) override;
 
 private:
     void buildAbundanceInfo(SessionItem* particleItem);
diff --git a/GUI/Model/Sample/InterferenceItems.cpp b/GUI/Model/Sample/InterferenceItems.cpp
index 531604cb194..b6227999c9e 100644
--- a/GUI/Model/Sample/InterferenceItems.cpp
+++ b/GUI/Model/Sample/InterferenceItems.cpp
@@ -63,7 +63,7 @@ std::unique_ptr<IInterference> Interference1DLatticeItem::createInterference() c
     auto result = std::make_unique<Interference1DLattice>(
         getItemValue(P_LENGTH).toDouble(),
         Units::deg2rad(getItemValue(P_ROTATION_ANGLE).toDouble()));
-    auto pdfItem = dynamic_cast<FTDecayFunction1DItem*>(
+    auto *pdfItem = dynamic_cast<FTDecayFunction1DItem*>(
         getGroupItem(Interference1DLatticeItem::P_DECAY_FUNCTION));
     result->setDecayFunction(*pdfItem->createFTDecayFunction());
     result->setPositionVariance(positionVariance());
@@ -93,7 +93,7 @@ SelectionDescriptor<FTDecayFunction1DItem*> Interference1DLatticeItem::decayFunc
 
 Lattice2DItem* Interference2DAbstractLatticeItem::latticeType() const
 {
-    return static_cast<Lattice2DItem*>(getGroupItem(P_LATTICE_TYPE));
+    return dynamic_cast<Lattice2DItem*>(getGroupItem(P_LATTICE_TYPE));
 }
 
 bool Interference2DAbstractLatticeItem::xiIntegration() const
@@ -138,9 +138,9 @@ Interference2DAbstractLatticeItem::Interference2DAbstractLatticeItem(const QStri
 
 void Interference2DAbstractLatticeItem::update_rotation_availability()
 {
-    auto p_lattice_item = latticeType();
+    auto *p_lattice_item = latticeType();
     if (p_lattice_item) {
-        auto angle_item = p_lattice_item->latticeRotationAngleItem();
+        auto *angle_item = p_lattice_item->latticeRotationAngleItem();
         angle_item->setEnabled(!getItemValue(P_XI_INTEGRATION).toBool());
     }
 }
diff --git a/GUI/Model/Sample/InterferenceItems.h b/GUI/Model/Sample/InterferenceItems.h
index 2560eb90df6..2c78309736f 100644
--- a/GUI/Model/Sample/InterferenceItems.h
+++ b/GUI/Model/Sample/InterferenceItems.h
@@ -31,7 +31,7 @@ private:
     static constexpr auto P_POSITION_VARIANCE{"PositionVariance"};
 
 public:
-    virtual ~InterferenceItem();
+    ~InterferenceItem() override;
     virtual std::unique_ptr<IInterference> createInterference() const = 0;
 
     DoubleDescriptor positionVariance() const;
diff --git a/GUI/Model/Sample/ItemWithMaterial.cpp b/GUI/Model/Sample/ItemWithMaterial.cpp
index ce4d1138dbd..092e38a7ae9 100644
--- a/GUI/Model/Sample/ItemWithMaterial.cpp
+++ b/GUI/Model/Sample/ItemWithMaterial.cpp
@@ -42,7 +42,7 @@ void ItemWithMaterial::setMaterialUndefined()
 
 QColor ItemWithMaterial::materialColor() const
 {
-    const auto parentJob = GUI::Model::JobFunctions::findJobItem(this);
+    const auto *const parentJob = GUI::Model::JobFunctions::findJobItem(this);
     if (parentJob)
         return parentJob->materialContainerItem()->findMaterialById(materialIdentifier())->color();
 
@@ -51,7 +51,7 @@ QColor ItemWithMaterial::materialColor() const
 
 QString ItemWithMaterial::materialName() const
 {
-    const auto parentJob = GUI::Model::JobFunctions::findJobItem(this);
+    const auto *const parentJob = GUI::Model::JobFunctions::findJobItem(this);
     if (parentJob)
         return parentJob->materialContainerItem()
             ->findMaterialById(materialIdentifier())
@@ -74,7 +74,7 @@ ItemWithMaterial::ItemWithMaterial(const QString& model_type) : SessionGraphicsI
 
 std::unique_ptr<Material> ItemWithMaterial::domainMaterial() const
 {
-    auto parent_job = GUI::Model::JobFunctions::findJobItem(this);
+    const auto *parent_job = GUI::Model::JobFunctions::findJobItem(this);
     const MaterialItemContainer* container =
         parent_job ? parent_job->materialContainerItem() : nullptr;
     return container ? GUI::MaterialUtil::createDomainMaterial(materialIdentifier(), *container)
diff --git a/GUI/Model/Sample/ItemWithParticles.cpp b/GUI/Model/Sample/ItemWithParticles.cpp
index 194ca3ea589..032ff957345 100644
--- a/GUI/Model/Sample/ItemWithParticles.cpp
+++ b/GUI/Model/Sample/ItemWithParticles.cpp
@@ -37,7 +37,7 @@ SessionItem* ItemWithParticles::abundanceItem() const
     return getItem(P_ABUNDANCE);
 }
 
-const R3 ItemWithParticles::position() const
+R3 ItemWithParticles::position() const
 {
     return item<VectorItem>(P_POSITION)->getVector();
 }
@@ -80,7 +80,7 @@ bool ItemWithParticles::isTransformationTagName(const QString& name)
 
 Transform3D ItemWithParticles::rotation() const
 {
-    const auto item = rotationItem();
+    auto *const item = rotationItem();
     return item ? item->rotation() : Transform3D();
 }
 
@@ -105,14 +105,14 @@ SelectionDescriptor<RotationItem*> ItemWithParticles::rotationMethod()
     d.currentItem = [=]() -> RotationItem* { return rotationItem(); };
 
     d.currentIndexSetter = [=](int current) {
-        if (auto item = getItem(T_TRANSFORMATION))
+        if (auto *item = getItem(T_TRANSFORMATION))
             model()->removeItem(item);
         if (current > 0)
             createTransformationItem()->setRotationType(map[current].second);
     };
 
     d.currentIndexGetter = [=]() {
-        auto item = rotationItem();
+        auto *item = rotationItem();
         if (item == nullptr)
             return 0;
         for (int i = 1; i < map.size(); i++)
@@ -142,7 +142,7 @@ ItemWithParticles::ItemWithParticles(const QString& model_type, const QString& a
             setItemValue(P_ABUNDANCE, 1.0);
             getItem(P_ABUNDANCE)->setEnabled(false);
             if (isShellParticle()) {
-                auto pos = item<VectorItem>(P_POSITION);
+                auto *pos = item<VectorItem>(P_POSITION);
                 pos->setVector(R3());
                 pos->setEnabled(false);
             }
diff --git a/GUI/Model/Sample/ItemWithParticles.h b/GUI/Model/Sample/ItemWithParticles.h
index 1de1dae42f6..5e91a54efe0 100644
--- a/GUI/Model/Sample/ItemWithParticles.h
+++ b/GUI/Model/Sample/ItemWithParticles.h
@@ -39,7 +39,7 @@ public:
     void setAbundance(double abundance);
     SessionItem* abundanceItem() const;
 
-    const R3 position() const;
+    R3 position() const;
     void setPosition(const R3& position);
     VectorDescriptor positionVector() const;
     VectorItem* positionItem() const;
diff --git a/GUI/Model/Sample/Lattice2DItems.h b/GUI/Model/Sample/Lattice2DItems.h
index 127768b3dab..26057dfaa55 100644
--- a/GUI/Model/Sample/Lattice2DItems.h
+++ b/GUI/Model/Sample/Lattice2DItems.h
@@ -44,7 +44,7 @@ public:
     static constexpr auto M_TYPE{"BasicLattice2D"};
 
     BasicLattice2DItem();
-    std::unique_ptr<Lattice2D> createLattice() const;
+    std::unique_ptr<Lattice2D> createLattice() const override;
 
     double latticeLength1() const;
     void setLatticeLength1(double length1);
@@ -64,7 +64,7 @@ public:
     static constexpr auto M_TYPE{"SquareLattice2D"};
 
     SquareLattice2DItem();
-    std::unique_ptr<Lattice2D> createLattice() const;
+    std::unique_ptr<Lattice2D> createLattice() const override;
 
     void setLatticeLength(double length);
 };
@@ -77,7 +77,7 @@ public:
     static constexpr auto M_TYPE{"HexagonalLattice2D"};
 
     HexagonalLattice2DItem();
-    std::unique_ptr<Lattice2D> createLattice() const;
+    std::unique_ptr<Lattice2D> createLattice() const override;
 
     void setLatticeLength(double length);
 };
diff --git a/GUI/Model/Sample/LayerItem.cpp b/GUI/Model/Sample/LayerItem.cpp
index f22a213a394..000591f4e93 100644
--- a/GUI/Model/Sample/LayerItem.cpp
+++ b/GUI/Model/Sample/LayerItem.cpp
@@ -52,9 +52,9 @@ QVector<ItemWithMaterial*> layoutItemsWithMaterial(ParticleLayoutItem* item)
         else if (item->hasModelType<ParticleItem>())
             ret << dynamic_cast<ParticleItem*>(item);
         else if (item->hasModelType<ParticleCoreShellItem>()) {
-            if (auto core = dynamic_cast<ParticleCoreShellItem*>(item)->core())
+            if (auto *core = dynamic_cast<ParticleCoreShellItem*>(item)->core())
                 ret << core;
-            if (auto shell = dynamic_cast<ParticleCoreShellItem*>(item)->shell())
+            if (auto *shell = dynamic_cast<ParticleCoreShellItem*>(item)->shell())
                 ret << shell;
         } else
             throw Error("Error in GUI::MaterialUtil::materialProperties: cannot handle "
@@ -95,7 +95,7 @@ QVector<ItemWithMaterial*> LayerItem::itemsWithMaterial()
 {
     QVector<ItemWithMaterial*> result;
     result.push_back(this);
-    for (auto layout : layouts())
+    for (auto *layout : layouts())
         result.append(layoutItemsWithMaterial(layout));
     return result;
 }
@@ -129,7 +129,7 @@ LayerItem::roughness()
         item<GroupItem>(P_ROUGHNESS));
 
     d.currentItem = [=]() -> std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*> {
-        if (auto r = dynamic_cast<LayerBasicRoughnessItem*>(getGroupItem(P_ROUGHNESS)))
+        if (auto *r = dynamic_cast<LayerBasicRoughnessItem*>(getGroupItem(P_ROUGHNESS)))
             return {r};
         return {dynamic_cast<LayerZeroRoughnessItem*>(getGroupItem(P_ROUGHNESS))};
     };
diff --git a/GUI/Model/Sample/MultiLayerItem.cpp b/GUI/Model/Sample/MultiLayerItem.cpp
index 927ccda04b2..1900abb7c0a 100644
--- a/GUI/Model/Sample/MultiLayerItem.cpp
+++ b/GUI/Model/Sample/MultiLayerItem.cpp
@@ -42,7 +42,7 @@ MultiLayerItem::MultiLayerItem() : SessionGraphicsItem(M_TYPE)
 QVector<ItemWithMaterial*> MultiLayerItem::itemsWithMaterial()
 {
     QVector<ItemWithMaterial*> result;
-    for (auto layer_item : getItems(T_LAYERS))
+    for (auto *layer_item : getItems(T_LAYERS))
         result.append(dynamic_cast<LayerItem*>(layer_item)->itemsWithMaterial());
     return result;
 }
@@ -123,7 +123,7 @@ void MultiLayerItem::moveLayer(LayerItem* item, LayerItem* beforeThisLayer)
 void MultiLayerItem::updateLayers()
 {
     QVector<LayerItem*> list = childrenOfType<LayerItem>();
-    for (auto it = list.begin(); it != list.end(); ++it) {
+    for (auto *it = list.begin(); it != list.end(); ++it) {
         (*it)->setRoughnessEnabled(it != list.begin());
 
         if (it == list.begin() || it == (list.end() - 1)) {
diff --git a/GUI/Model/Sample/ParticleCoreShellItem.cpp b/GUI/Model/Sample/ParticleCoreShellItem.cpp
index de6373650f9..adfced4fb3e 100644
--- a/GUI/Model/Sample/ParticleCoreShellItem.cpp
+++ b/GUI/Model/Sample/ParticleCoreShellItem.cpp
@@ -44,10 +44,10 @@ std::unique_ptr<ParticleCoreShell> ParticleCoreShellItem::createParticleCoreShel
 {
     std::unique_ptr<Particle> P_core{};
     std::unique_ptr<Particle> P_shell{};
-    auto core_item = dynamic_cast<ParticleItem*>(getItem(T_CORE));
+    auto *core_item = dynamic_cast<ParticleItem*>(getItem(T_CORE));
     if (core_item)
         P_core = core_item->createParticle();
-    auto shell_item = dynamic_cast<ParticleItem*>(getItem(T_SHELL));
+    auto *shell_item = dynamic_cast<ParticleItem*>(getItem(T_SHELL));
     if (shell_item)
         P_shell = shell_item->createParticle();
     if (!P_core || !P_shell)
diff --git a/GUI/Model/Sample/ParticleCoreShellItem.h b/GUI/Model/Sample/ParticleCoreShellItem.h
index 713212b85e8..f2c9cf5f8d8 100644
--- a/GUI/Model/Sample/ParticleCoreShellItem.h
+++ b/GUI/Model/Sample/ParticleCoreShellItem.h
@@ -39,7 +39,7 @@ public:
     static bool isCoreTagName(const QString& name);
 
     ParticleItem* shell() const;
-    void setShell(ParticleItem* core);
+    void setShell(ParticleItem* newShell);
     ParticleItem* createShell();
     static bool isShellTagName(const QString& name);
 };
diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp
index d59b60bcfb6..6e20f7865e9 100644
--- a/GUI/Model/Sample/ParticleItem.cpp
+++ b/GUI/Model/Sample/ParticleItem.cpp
@@ -70,7 +70,7 @@ bool ParticleItem::isFormFactorPropertyName(const QString& name)
 
 FormFactorItem* ParticleItem::formFactor() const
 {
-    return static_cast<FormFactorItem*>(getGroupItem(P_FORM_FACTOR));
+    return dynamic_cast<FormFactorItem*>(getGroupItem(P_FORM_FACTOR));
 }
 
 GroupItem* ParticleItem::formFactorItem() const
diff --git a/GUI/Model/Sample/ParticleItem.h b/GUI/Model/Sample/ParticleItem.h
index a87a71aa2ba..d30a30bdf89 100644
--- a/GUI/Model/Sample/ParticleItem.h
+++ b/GUI/Model/Sample/ParticleItem.h
@@ -41,7 +41,7 @@ public:
     GroupItem* formFactorItem() const;
 
 private:
-    virtual bool isShellParticle() const override;
+    bool isShellParticle() const override;
     bool parentIsParticleLayout() const;
 };
 
diff --git a/GUI/Model/Sample/ParticleLayoutItem.cpp b/GUI/Model/Sample/ParticleLayoutItem.cpp
index 440a3a7b7af..54a88545f80 100644
--- a/GUI/Model/Sample/ParticleLayoutItem.cpp
+++ b/GUI/Model/Sample/ParticleLayoutItem.cpp
@@ -114,7 +114,7 @@ SelectionDescriptor<InterferenceItem*> ParticleLayoutItem::interference() const
     // initialize if not done so far
     if (map.isEmpty()) {
         map << qMakePair(QString("None"), QString(""));
-        for (auto modelType : ItemCatalog::interferenceFunctionTypes())
+        for (const auto& modelType : ItemCatalog::interferenceFunctionTypes())
             map << qMakePair(ItemCatalog::instance().uiInfo(modelType).menuEntry, modelType);
     }
 
@@ -126,7 +126,7 @@ SelectionDescriptor<InterferenceItem*> ParticleLayoutItem::interference() const
     d.currentItem = [=] { return dynamic_cast<InterferenceItem*>(getItem(T_INTERFERENCE)); };
 
     d.currentIndexSetter = [=](int current) {
-        if (auto item = getItem(T_INTERFERENCE))
+        if (auto *item = getItem(T_INTERFERENCE))
             model()->removeItem(item);
         if (current > 0)
             model()->insertNewItem(map[current].second, const_cast<ParticleLayoutItem*>(this), -1,
@@ -134,7 +134,7 @@ SelectionDescriptor<InterferenceItem*> ParticleLayoutItem::interference() const
     };
 
     d.currentIndexGetter = [=]() {
-        if (auto item = dynamic_cast<InterferenceItem*>(getItem(T_INTERFERENCE)))
+        if (auto *item = dynamic_cast<InterferenceItem*>(getItem(T_INTERFERENCE)))
             for (int i = 1; i < map.size(); i++)
                 if (map[i].second == item->modelType())
                     return i;
@@ -157,7 +157,7 @@ void ParticleLayoutItem::setInterference(InterferenceItem* interference)
 void ParticleLayoutItem::updateDensityAppearance()
 {
     getItem(P_TOTAL_DENSITY)->setEnabled(true);
-    if (auto interferenceItem = getItem(T_INTERFERENCE))
+    if (auto *interferenceItem = getItem(T_INTERFERENCE))
         if (isInterference2D(interferenceItem->modelType()))
             getItem(P_TOTAL_DENSITY)->setEnabled(false);
 }
@@ -166,8 +166,8 @@ void ParticleLayoutItem::updateDensityAppearance()
 
 void ParticleLayoutItem::updateDensityValue()
 {
-    if (auto interferenceItem = getItem(T_INTERFERENCE)) {
-        if (Interference2DAbstractLatticeItem* interLatticeItem =
+    if (auto *interferenceItem = getItem(T_INTERFERENCE)) {
+        if (auto* interLatticeItem =
                 dynamic_cast<Interference2DAbstractLatticeItem*>(interferenceItem)) {
             Lattice2DItem* latticeItem = interLatticeItem->latticeType();
             double area = 0.0;
@@ -177,7 +177,7 @@ void ParticleLayoutItem::updateDensityValue()
                 // nothing to do here; new exception will be caught during job execution
             }
             setItemValue(P_TOTAL_DENSITY, area == 0.0 ? 0.0 : 1.0 / area);
-        } else if (InterferenceHardDiskItem* interHDItem =
+        } else if (auto* interHDItem =
                        dynamic_cast<InterferenceHardDiskItem*>(interferenceItem)) {
             double density = interHDItem->density();
             setItemValue(P_TOTAL_DENSITY, density);
diff --git a/GUI/Model/Sample/SampleListModel.cpp b/GUI/Model/Sample/SampleListModel.cpp
index f3a4480b9cd..3a6099daa43 100644
--- a/GUI/Model/Sample/SampleListModel.cpp
+++ b/GUI/Model/Sample/SampleListModel.cpp
@@ -45,7 +45,7 @@ int SampleListModel::rowCount(const QModelIndex& parent) const
 
 QVariant SampleListModel::data(const QModelIndex& index, int role) const
 {
-    const auto item = itemForIndex(index);
+    auto *const item = itemForIndex(index);
 
     if (role == Qt::ToolTipRole)
         return item->description();
@@ -131,7 +131,7 @@ QModelIndex SampleListModel::createSample()
 
     const int row = m_sampleModel->multiLayerItems().size();
     beginInsertRows(QModelIndex(), row, row);
-    auto multilayer_item = m_sampleModel->insertItem<MultiLayerItem>();
+    auto *multilayer_item = m_sampleModel->insertItem<MultiLayerItem>();
     multilayer_item->setItemName(suggestName(topItemNames(m_sampleModel), "Sample"));
     endInsertRows();
     return indexForItem(multilayer_item);
diff --git a/GUI/Model/Sample/SampleListModel.h b/GUI/Model/Sample/SampleListModel.h
index e5cdbce6812..c7294f120c3 100644
--- a/GUI/Model/Sample/SampleListModel.h
+++ b/GUI/Model/Sample/SampleListModel.h
@@ -27,10 +27,10 @@ class SampleListModel : public QAbstractListModel {
 public:
     SampleListModel(QObject* parent, SampleModel* model);
 
-    virtual int rowCount(const QModelIndex& parent = QModelIndex()) const override;
-    virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
-    virtual Qt::ItemFlags flags(const QModelIndex& index) const override;
-    virtual bool setData(const QModelIndex& index, const QVariant& value, int role) override;
+    int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+    Qt::ItemFlags flags(const QModelIndex& index) const override;
+    bool setData(const QModelIndex& index, const QVariant& value, int role) override;
 
     MultiLayerItem* itemForIndex(const QModelIndex& index) const;
     QModelIndex indexForItem(MultiLayerItem* item) const;
diff --git a/GUI/Model/Sample/SampleModel.cpp b/GUI/Model/Sample/SampleModel.cpp
index 4cbfbb03646..c45e2ad2fd6 100644
--- a/GUI/Model/Sample/SampleModel.cpp
+++ b/GUI/Model/Sample/SampleModel.cpp
@@ -88,7 +88,7 @@ void SampleModel::onDataChanged(const QModelIndex& index, const QModelIndex&)
 {
     // check whether it's an item and not a position related item, then emit
     // the relevant signal
-    const auto item = itemForIndex(index);
+    auto *const item = itemForIndex(index);
     if (item) {
         const bool isPositionRelated =
             item->hasModelType<PropertyItem>()
diff --git a/GUI/Model/Sample/SampleModel.h b/GUI/Model/Sample/SampleModel.h
index 88f773864bd..430c0b72033 100644
--- a/GUI/Model/Sample/SampleModel.h
+++ b/GUI/Model/Sample/SampleModel.h
@@ -30,7 +30,7 @@ public:
 
     SampleModel* createCopy(SessionItem* parent = nullptr) override;
 
-    virtual QVariant data(const QModelIndex& index, int role) const override;
+    QVariant data(const QModelIndex& index, int role) const override;
 
     MultiLayerItem* multiLayerItem();
     QVector<MultiLayerItem*> multiLayerItems() const;
diff --git a/GUI/Model/Session/ModelMapper.cpp b/GUI/Model/Session/ModelMapper.cpp
index cd454a7794f..b040187f0f1 100644
--- a/GUI/Model/Session/ModelMapper.cpp
+++ b/GUI/Model/Session/ModelMapper.cpp
@@ -139,7 +139,7 @@ int ModelMapper::nestlingDepth(SessionItem* item, int level)
 
 void ModelMapper::callOnValueChange()
 {
-    if (m_active && m_onValueChange.size() > 0)
+    if (m_active && !m_onValueChange.empty())
         for (const auto& f : m_onValueChange)
             f.first();
 }
diff --git a/GUI/Model/Session/ModelMapper.h b/GUI/Model/Session/ModelMapper.h
index 97163d84439..9f9546407c5 100644
--- a/GUI/Model/Session/ModelMapper.h
+++ b/GUI/Model/Session/ModelMapper.h
@@ -25,31 +25,31 @@ class ModelMapper : public QObject {
     Q_OBJECT
 
 public:
-    ModelMapper(QObject* parent = 0);
+    ModelMapper(QObject* parent = nullptr);
 
     void setItem(SessionItem* item);
 
-    void setOnValueChange(std::function<void(void)> f, const void* caller = 0);
+    void setOnValueChange(std::function<void(void)> f, const void* caller = nullptr);
 
-    void setOnPropertyChange(std::function<void(QString)> f, const void* caller = 0);
-    void setOnPropertyChange(std::function<void(SessionItem*, QString)> f, const void* caller = 0);
+    void setOnPropertyChange(std::function<void(QString)> f, const void* caller = nullptr);
+    void setOnPropertyChange(std::function<void(SessionItem*, QString)> f, const void* caller = nullptr);
 
     void setOnChildPropertyChange(std::function<void(SessionItem*, QString)> f,
-                                  const void* caller = 0);
+                                  const void* caller = nullptr);
 
-    void setOnParentChange(std::function<void(SessionItem*)> f, const void* caller = 0);
+    void setOnParentChange(std::function<void(SessionItem*)> f, const void* caller = nullptr);
 
-    void setOnChildrenChange(std::function<void(SessionItem*)> f, const void* caller = 0);
+    void setOnChildrenChange(std::function<void(SessionItem*)> f, const void* caller = nullptr);
 
-    void setOnSiblingsChange(std::function<void(void)> f, const void* caller = 0);
+    void setOnSiblingsChange(std::function<void(void)> f, const void* caller = nullptr);
 
-    void setOnAnyChildChange(std::function<void(SessionItem*)> f, const void* caller = 0);
+    void setOnAnyChildChange(std::function<void(SessionItem*)> f, const void* caller = nullptr);
 
     void setActive(bool state) { m_active = state; }
 
-    void setOnItemDestroy(std::function<void(SessionItem*)> f, const void* caller = 0);
+    void setOnItemDestroy(std::function<void(SessionItem*)> f, const void* caller = nullptr);
 
-    void setOnAboutToRemoveChild(std::function<void(SessionItem*)> f, const void* caller = 0);
+    void setOnAboutToRemoveChild(std::function<void(SessionItem*)> f, const void* caller = nullptr);
 
     void unsubscribe(const void* caller);
 
diff --git a/GUI/Model/Session/ModelUtils.cpp b/GUI/Model/Session/ModelUtils.cpp
index 528ba65c4b0..74bb2878a6e 100644
--- a/GUI/Model/Session/ModelUtils.cpp
+++ b/GUI/Model/Session/ModelUtils.cpp
@@ -21,7 +21,7 @@ QStringList GUI::Model::ItemUtils::topItemNames(const SessionModel* model, const
 {
     QStringList result;
 
-    for (auto item : model->topItems())
+    for (auto *item : model->topItems())
         if (modelType.isEmpty() || modelType == item->modelType())
             result.append(item->itemName());
 
@@ -60,7 +60,7 @@ void GUI::Model::ItemUtils::iterate_if(const QModelIndex& index, const QAbstract
 QString GUI::Model::ItemUtils::suggestName(const QStringList& existingNames, const QString& name)
 {
     int newNumber = -1;
-    QRegExp regexp("\\((\\d+)\\)");
+    QRegExp regexp(R"(\((\d+)\))");
 
     QString baseName = name;
     if (regexp.indexIn(baseName) >= 0) {
@@ -69,7 +69,7 @@ QString GUI::Model::ItemUtils::suggestName(const QStringList& existingNames, con
         baseName = baseName.trimmed();
     }
 
-    for (auto name : existingNames) {
+    for (const auto& name : existingNames) {
         if (name == baseName)
             newNumber = std::max(newNumber, 2);
         else if (regexp.indexIn(name) >= 0)
diff --git a/GUI/Model/Session/ModelUtils.h b/GUI/Model/Session/ModelUtils.h
index fa97a0c3f0f..aa8f0e4df84 100644
--- a/GUI/Model/Session/ModelUtils.h
+++ b/GUI/Model/Session/ModelUtils.h
@@ -33,7 +33,7 @@ QStringList topItemNames(const SessionModel* model, const QString& modelType = "
 QString suggestName(const QStringList& existingNames, const QString& name);
 
 //! Returns list of names of given items.
-template <typename T> QStringList itemNames(const QVector<T*> items);
+template <typename T> QStringList itemNames(QVector<T*> items);
 
 //! Iterates through all model indices and calls user function.
 void iterate(const QModelIndex& index, const QAbstractItemModel* model,
diff --git a/GUI/Model/Session/RealLimitsItems.h b/GUI/Model/Session/RealLimitsItems.h
index 1283fb2ceec..0e9f347796e 100644
--- a/GUI/Model/Session/RealLimitsItems.h
+++ b/GUI/Model/Session/RealLimitsItems.h
@@ -33,7 +33,7 @@ protected:
     void setUpperLimit(double upper);
 
 public:
-    virtual ~RealLimitsItem() {}
+    ~RealLimitsItem() override = default;
     virtual RealLimits createRealLimits(double scale_factor = 1.0) const = 0;
 };
 
@@ -42,7 +42,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsLimitless"};
 
     LimitlessItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
 };
 
 class PositiveItem : public RealLimitsItem {
@@ -50,7 +50,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsPositive"};
 
     PositiveItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
 };
 
 class NonnegativeItem : public RealLimitsItem {
@@ -58,7 +58,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsNonnegative"};
 
     NonnegativeItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
 };
 
 class LowerLimitedItem : public RealLimitsItem {
@@ -66,7 +66,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsLowerLimited"};
 
     LowerLimitedItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
     using RealLimitsItem::setLowerLimit;
 };
 
@@ -75,7 +75,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsUpperLimited"};
 
     UpperLimitedItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
     using RealLimitsItem::setUpperLimit;
 };
 
@@ -84,7 +84,7 @@ public:
     static constexpr auto M_TYPE{"RealLimitsLimited"};
 
     LimitedItem();
-    RealLimits createRealLimits(double scale_factor = 1.0) const;
+    RealLimits createRealLimits(double scale_factor = 1.0) const override;
     using RealLimitsItem::setLowerLimit;
     using RealLimitsItem::setUpperLimit;
 };
diff --git a/GUI/Model/Session/SessionDecorationModel.cpp b/GUI/Model/Session/SessionDecorationModel.cpp
index 3dfb2919e30..b741bdd4eb1 100644
--- a/GUI/Model/Session/SessionDecorationModel.cpp
+++ b/GUI/Model/Session/SessionDecorationModel.cpp
@@ -109,7 +109,7 @@ QVariant SessionDecorationModel::textColor(const QModelIndex& index) const
     QVariant result;
 
     if (SessionItem* item = m_model->itemForIndex(index)) {
-        if (item->isEnabled() == false)
+        if (!item->isEnabled())
             return QColor(Qt::gray);
     }
 
diff --git a/GUI/Model/Session/SessionDecorationModel.h b/GUI/Model/Session/SessionDecorationModel.h
index ae8297fa573..af256bb780f 100644
--- a/GUI/Model/Session/SessionDecorationModel.h
+++ b/GUI/Model/Session/SessionDecorationModel.h
@@ -31,7 +31,7 @@ public:
 
     void setSessionModel(SessionModel* model);
 
-    QVariant data(const QModelIndex& index, int role) const;
+    QVariant data(const QModelIndex& index, int role) const override;
 
 private:
     QVariant createIcon(const QModelIndex& index) const;
diff --git a/GUI/Model/Session/SessionItem.cpp b/GUI/Model/Session/SessionItem.cpp
index 30593662d0f..7a36be7ef79 100644
--- a/GUI/Model/Session/SessionItem.cpp
+++ b/GUI/Model/Session/SessionItem.cpp
@@ -115,7 +115,7 @@ int SessionItem::rowOfChild(SessionItem* child) const
 
 SessionItem* SessionItem::getChildOfType(const QString& type) const
 {
-    for (auto child : m_children)
+    for (auto *child : m_children)
         if (child->modelType() == type)
             return child;
 
@@ -127,7 +127,7 @@ SessionItem* SessionItem::getChildOfType(const QString& type) const
 QVector<SessionItem*> SessionItem::getChildrenOfType(const QString& model_type) const
 {
     QVector<SessionItem*> result;
-    for (auto child : m_children)
+    for (auto *child : m_children)
         if (child->modelType() == model_type)
             result.append(child);
 
@@ -300,7 +300,7 @@ void SessionItem::setItemValue(const QString& tag, const QVariant& variant) cons
 
 SessionItem* SessionItem::addGroupProperty(const QString& groupTag, const GroupInfo& groupInfo)
 {
-    GroupItem* groupItem = GUI::Model::ItemFactory::CreateItem<GroupItem>();
+    auto* groupItem = GUI::Model::ItemFactory::CreateItem<GroupItem>();
     ASSERT(groupItem);
     groupItem->setGroupInfo(groupInfo);
     registerTag(groupTag, 1, 1, {GroupItem::M_TYPE});
@@ -601,7 +601,7 @@ int SessionItem::getCopyNumberOfChild(const SessionItem* item) const
     int count = 0;
     QString model_type = item->modelType();
     // check child items:
-    for (auto p_child_item : m_children) {
+    for (auto *p_child_item : m_children) {
         QString child_type = p_child_item->modelType();
         if (p_child_item == item)
             result = count;
diff --git a/GUI/Model/Session/SessionItem.h b/GUI/Model/Session/SessionItem.h
index 911b901166d..0faff105ddb 100644
--- a/GUI/Model/Session/SessionItem.h
+++ b/GUI/Model/Session/SessionItem.h
@@ -207,7 +207,7 @@ private:
     static constexpr auto P_NAME{"Name"};
 
 public:
-    typedef std::function<QVariant(int, const QVariant&)> TranslatorForRolePropertySetter;
+    using TranslatorForRolePropertySetter = std::function<QVariant (int, const QVariant &)>;
 
     explicit SessionItem(const QString& modelType);
     virtual ~SessionItem();
@@ -370,7 +370,7 @@ template <typename T> QVector<T*> SessionItem::items(const QString& tag) const
 template <typename T> QVector<T*> SessionItem::childrenOfType() const
 {
     QVector<T*> result;
-    for (auto child : m_children)
+    for (auto *child : m_children)
         if (child->modelType() == T::M_TYPE)
             result.append(dynamic_cast<T*>(child));
 
@@ -380,7 +380,7 @@ template <typename T> QVector<T*> SessionItem::childrenOfType() const
 
 template <typename T> T* SessionItem::firstChildOfType() const
 {
-    for (auto child : m_children)
+    for (auto *child : m_children)
         if (child->modelType() == T::M_TYPE)
             return dynamic_cast<T*>(child);
 
diff --git a/GUI/Model/Session/SessionItemData.cpp b/GUI/Model/Session/SessionItemData.cpp
index 06436c173a0..0c2936f8992 100644
--- a/GUI/Model/Session/SessionItemData.cpp
+++ b/GUI/Model/Session/SessionItemData.cpp
@@ -13,9 +13,11 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Session/SessionItemData.h"
+
+#include <utility>
 #include "GUI/Model/Session/SessionItemUtils.h"
 
-SessionItemData::ItemData::ItemData(int r, const QVariant& v) : role(r), data(v) {}
+SessionItemData::ItemData::ItemData(int r, QVariant  v) : role(r), data(std::move(v)) {}
 
 bool SessionItemData::ItemData::operator==(const SessionItemData::ItemData& other) const
 {
@@ -45,7 +47,7 @@ QVariant SessionItemData::data(int role) const
 bool SessionItemData::setData(int role, const QVariant& value)
 {
     role = (role == Qt::EditRole) ? Qt::DisplayRole : role;
-    for (auto it = m_values.begin(); it != m_values.end(); ++it) {
+    for (auto *it = m_values.begin(); it != m_values.end(); ++it) {
         if (it->role == role) {
             if (value.isValid()) {
                 if (GUI::Session::ItemUtils::IsTheSame(it->data, value))
diff --git a/GUI/Model/Session/SessionItemData.h b/GUI/Model/Session/SessionItemData.h
index b047ea37841..b17059ba618 100644
--- a/GUI/Model/Session/SessionItemData.h
+++ b/GUI/Model/Session/SessionItemData.h
@@ -31,7 +31,7 @@ public:
 private:
     class ItemData {
     public:
-        ItemData(int r = -1, const QVariant& v = {});
+        ItemData(int r = -1, QVariant  v = {});
         int role;
         QVariant data;
         bool operator==(const ItemData& other) const;
diff --git a/GUI/Model/Session/SessionItemUtils.cpp b/GUI/Model/Session/SessionItemUtils.cpp
index 62f5ddabd6f..0bc88d4f7ee 100644
--- a/GUI/Model/Session/SessionItemUtils.cpp
+++ b/GUI/Model/Session/SessionItemUtils.cpp
@@ -45,7 +45,7 @@ int GUI::Session::ItemUtils::ParentVisibleRow(const SessionItem& item)
     if (!item.parent() || !item.isVisible())
         return result;
 
-    for (auto child : item.parent()->children()) {
+    for (auto *child : item.parent()->children()) {
         if (child->isVisible())
             ++result;
 
diff --git a/GUI/Model/Session/SessionModel.cpp b/GUI/Model/Session/SessionModel.cpp
index f60ff7adbb2..8f2c41832e4 100644
--- a/GUI/Model/Session/SessionModel.cpp
+++ b/GUI/Model/Session/SessionModel.cpp
@@ -22,6 +22,7 @@
 #include <QFile>
 #include <QMimeData>
 #include <QtCore/QXmlStreamWriter>
+#include <utility>
 
 namespace {
 const int MaxCompression = 9;
@@ -29,7 +30,7 @@ const int MaxCompression = 9;
 
 
 SessionModel::SessionModel(QString model_tag, QObject* parent)
-    : QAbstractItemModel(parent), m_root_item(0), m_name("DefaultName"), m_model_tag(model_tag)
+    : QAbstractItemModel(parent), m_root_item(nullptr), m_name("DefaultName"), m_model_tag(std::move(model_tag))
 {
     createRootItem();
 }
@@ -177,7 +178,7 @@ QStringList SessionModel::mimeTypes() const
 QMimeData* SessionModel::mimeData(const QModelIndexList& indices) const
 {
     if (indices.count() != 2)
-        return 0;
+        return nullptr;
 
     if (SessionItem* item = itemForIndex(indices.at(0))) {
         auto* mime_data = new QMimeData;
@@ -187,7 +188,7 @@ QMimeData* SessionModel::mimeData(const QModelIndexList& indices) const
         mime_data->setData(GUI::Session::XML::ItemMimeType, qCompress(xml_data, MaxCompression));
         return mime_data;
     }
-    return 0;
+    return nullptr;
 }
 
 bool SessionModel::canDropMimeData(const QMimeData* data, Qt::DropAction action, int row,
@@ -382,7 +383,7 @@ SessionItem* SessionModel::moveItem(SessionItem* item, SessionItem* new_parent,
     const QString tagName = tag.isEmpty() ? new_parent->defaultTag() : tag;
 
     if (!new_parent->sessionItemTags()->isValid(tagName, item->modelType()))
-        return 0;
+        return nullptr;
 
     if (item->parent() == new_parent) {
         // take care of indexes when moving item within same parent
diff --git a/GUI/Model/Session/SessionModel.h b/GUI/Model/Session/SessionModel.h
index fcda02e72a6..7fb20f82203 100644
--- a/GUI/Model/Session/SessionModel.h
+++ b/GUI/Model/Session/SessionModel.h
@@ -40,31 +40,31 @@ class SessionModel : public QAbstractItemModel {
     friend class SessionItem;
 
 public:
-    explicit SessionModel(QString model_tag, QObject* parent = 0);
-    virtual ~SessionModel();
+    explicit SessionModel(QString model_tag, QObject* parent = nullptr);
+    ~SessionModel() override;
     void createRootItem();
 
     // Begin overridden methods from QAbstractItemModel
-    virtual Qt::ItemFlags flags(const QModelIndex& index) const;
-    virtual QVariant data(const QModelIndex& index, int role) const;
-    virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;
-    virtual int rowCount(const QModelIndex& parent) const;
-    virtual int columnCount(const QModelIndex& parent) const;
-    virtual QModelIndex index(int row, int column, const QModelIndex& parent) const;
-    virtual QModelIndex parent(const QModelIndex& child) const;
-
-    virtual bool setHeaderData(int, Qt::Orientation, const QVariant&, int = Qt::EditRole);
-    virtual bool setData(const QModelIndex& index, const QVariant& value, int role);
-    virtual bool removeRows(int row, int count, const QModelIndex& parent);
-
-    virtual Qt::DropActions supportedDragActions() const;
-    virtual Qt::DropActions supportedDropActions() const;
-    virtual QStringList mimeTypes() const;
-    virtual QMimeData* mimeData(const QModelIndexList& indexes) const;
-    virtual bool canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
-                                 const QModelIndex& parent) const;
-    virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
-                              const QModelIndex& parent);
+    Qt::ItemFlags flags(const QModelIndex& index) const override;
+    QVariant data(const QModelIndex& index, int role) const override;
+    QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
+    int rowCount(const QModelIndex& parent) const override;
+    int columnCount(const QModelIndex& parent) const override;
+    QModelIndex index(int row, int column, const QModelIndex& parent) const override;
+    QModelIndex parent(const QModelIndex& child) const override;
+
+    bool setHeaderData(int, Qt::Orientation, const QVariant&, int = Qt::EditRole) override;
+    bool setData(const QModelIndex& index, const QVariant& value, int role) override;
+    bool removeRows(int row, int count, const QModelIndex& parent) override;
+
+    Qt::DropActions supportedDragActions() const override;
+    Qt::DropActions supportedDropActions() const override;
+    QStringList mimeTypes() const override;
+    QMimeData* mimeData(const QModelIndexList& indices) const override;
+    bool canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
+                                 const QModelIndex& parent) const override;
+    bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
+                              const QModelIndex& parent) override;
     // End overridden methods from QAbstractItemModel
 
     QModelIndex indexOfItem(SessionItem* item) const;
@@ -98,19 +98,19 @@ public:
     // Returns root item if index is not valid
     SessionItem* itemForIndex(const QModelIndex& index) const;
 
-    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = 0);
-    virtual void writeTo(QXmlStreamWriter* writer, SessionItem* parent = 0);
+    virtual void readFrom(QXmlStreamReader* reader, MessageService* messageService = nullptr);
+    virtual void writeTo(QXmlStreamWriter* writer, SessionItem* parent = nullptr);
 
-    SessionItem* moveItem(SessionItem* item, SessionItem* new_parent = 0, int row = -1,
+    SessionItem* moveItem(SessionItem* item, SessionItem* new_parent = nullptr, int row = -1,
                           const QString& tag = "");
 
     template <typename T>
-    T* copyItem(const T* item_to_copy, SessionItem* new_parent = 0, const QString& tag = "");
+    T* copyItem(const T* item_to_copy, SessionItem* new_parent = nullptr, const QString& tag = "");
 
     SessionItem* copy(const SessionItem* item_to_copy, SessionItem* new_parent = nullptr,
                       const QString& tag = "");
 
-    virtual SessionModel* createCopy(SessionItem* parent = 0);
+    virtual SessionModel* createCopy(SessionItem* parent = nullptr);
 
     //! Returns first item in list of topItems
     template <typename T = SessionItem> T* topItem() const;
diff --git a/GUI/Model/Session/SessionXML.cpp b/GUI/Model/Session/SessionXML.cpp
index 9fbe143a3b1..28eeb2db5c7 100644
--- a/GUI/Model/Session/SessionXML.cpp
+++ b/GUI/Model/Session/SessionXML.cpp
@@ -44,7 +44,7 @@ SessionItem* createItem(SessionItem* parent, const QString& modelType, const QSt
 {
     ASSERT(parent);
     if (parent->hasModelType<GroupItem>()) {
-        if (auto groupItem = dynamic_cast<const GroupItem*>(parent))
+        if (const auto *groupItem = dynamic_cast<const GroupItem*>(parent))
             return groupItem->getItemOfType(modelType);
         return nullptr;
     }
@@ -88,7 +88,7 @@ void GUI::Session::XML::writeItemAndChildItems(QXmlStreamWriter* writer, const S
         }
     }
 
-    for (auto child : item->children())
+    for (auto *child : item->children())
         writeItemAndChildItems(writer, child);
 
     QByteArray a = item->serializeBinaryData();
@@ -127,11 +127,11 @@ void GUI::Session::XML::writeVariant(QXmlStreamWriter* writer, QVariant variant,
         } else if (type_name == qstring_type_name) {
             writer->writeAttribute(GUI::Session::XML::ParameterValueAttribute, variant.toString());
         } else if (type_name == "QColor") {
-            const QColor col = variant.value<QColor>();
+            const auto col = variant.value<QColor>();
             const QString tcol = col.isValid() ? col.name(QColor::HexArgb) : "";
             writer->writeAttribute(GUI::Session::XML::ParameterValueAttribute, tcol);
         } else if (type_name == "ComboProperty") {
-            ComboProperty combo = variant.value<ComboProperty>();
+            auto combo = variant.value<ComboProperty>();
             writer->writeAttribute(GUI::Session::XML::ParameterValueAttribute,
                                    combo.stringOfSelections());
             writer->writeAttribute(GUI::Session::XML::ParameterExtAttribute,
@@ -183,7 +183,7 @@ void GUI::Session::XML::readItems(QXmlStreamReader* reader, SessionItem* parent,
                     tag = topTag;
                     topTag.clear();
                 }
-                auto newItem = createItem(parent, model_type, tag);
+                auto *newItem = createItem(parent, model_type, tag);
                 if (!newItem) {
                     QString message = QString("Error while parsing XML. Can't create item of "
                                               "modelType '%1' for tag '%2', parent '%3'")
diff --git a/GUI/Model/To/DomainObjectBuilder.cpp b/GUI/Model/To/DomainObjectBuilder.cpp
index 147fd514ad5..496ff5cb2b8 100644
--- a/GUI/Model/To/DomainObjectBuilder.cpp
+++ b/GUI/Model/To/DomainObjectBuilder.cpp
@@ -77,7 +77,7 @@ GUI::Model::DomainObjectBuilder::buildParticleLayout(const ParticleLayoutItem& i
 std::unique_ptr<IInterference>
 GUI::Model::DomainObjectBuilder::buildInterference(const SessionItem& item)
 {
-    auto iffItem = dynamic_cast<const InterferenceItem*>(&item);
+    const auto *iffItem = dynamic_cast<const InterferenceItem*>(&item);
     ASSERT(iffItem);
     return iffItem->createInterference();
 }
diff --git a/GUI/Model/To/DomainSimulationBuilder.cpp b/GUI/Model/To/DomainSimulationBuilder.cpp
index dc31fe90a84..9589f5d90c1 100644
--- a/GUI/Model/To/DomainSimulationBuilder.cpp
+++ b/GUI/Model/To/DomainSimulationBuilder.cpp
@@ -67,8 +67,8 @@ createOffSpecularSimulation(std::unique_ptr<MultiLayer> multilayer,
     std::unique_ptr<OffSpecularSimulation> ret{
         new OffSpecularSimulation(instrument->beam(), *multilayer, instrument->detector())};
 
-    auto beamItem = instrumentItem->beamItem();
-    auto axisItem = instrumentItem->alphaAxis();
+    auto *beamItem = instrumentItem->beamItem();
+    auto *axisItem = instrumentItem->alphaAxis();
     ret->setBeamParameters(beamItem->wavelength(), *axisItem->createAxis(Units::deg),
                            beamItem->getAzimuthalAngle());
 
@@ -93,9 +93,9 @@ createSpecularSimulation(std::unique_ptr<MultiLayer> P_multilayer,
     std::unique_ptr<SpecularSimulation> ret = std::make_unique<SpecularSimulation>();
     ret->setSample(*P_multilayer);
 
-    auto beam_item = instrument->beamItem();
-    const auto axis_item = beam_item->inclinationAxis();
-    const auto footprint = beam_item->footprint();
+    auto *beam_item = instrument->beamItem();
+    auto *const axis_item = beam_item->inclinationAxis();
+    auto *const footprint = beam_item->footprint();
 
     AlphaScan scan(beam_item->wavelength(), *axis_item->createAxis(Units::deg));
     scan.setFootprintFactor(footprint->createFootprint().get());
@@ -145,13 +145,13 @@ GUI::Model::DomainSimulationBuilder::createSimulation(const MultiLayerItem* samp
 
     auto P_multilayer = GUI::Model::DomainObjectBuilder::buildMultiLayer(*sampleItem);
 
-    if (auto gisasInstrument = dynamic_cast<const GISASInstrumentItem*>(instrumentItem))
+    if (const auto *gisasInstrument = dynamic_cast<const GISASInstrumentItem*>(instrumentItem))
         return createGISASSimulation(std::move(P_multilayer), gisasInstrument, optionsItem);
-    if (auto offspecInstrument = dynamic_cast<const OffSpecularInstrumentItem*>(instrumentItem))
+    if (const auto *offspecInstrument = dynamic_cast<const OffSpecularInstrumentItem*>(instrumentItem))
         return createOffSpecularSimulation(std::move(P_multilayer), offspecInstrument, optionsItem);
-    if (auto specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
+    if (const auto *specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
         return createSpecularSimulation(std::move(P_multilayer), specular_instrument, optionsItem);
-    if (auto penetrator = dynamic_cast<const DepthProbeInstrumentItem*>(instrumentItem))
+    if (const auto *penetrator = dynamic_cast<const DepthProbeInstrumentItem*>(instrumentItem))
         return createDepthProbeSimulation(std::move(P_multilayer), penetrator, optionsItem);
 
     throw Error(
diff --git a/GUI/Model/To/ToDomain.cpp b/GUI/Model/To/ToDomain.cpp
index b7aa975d9fd..8a3bd54a605 100644
--- a/GUI/Model/To/ToDomain.cpp
+++ b/GUI/Model/To/ToDomain.cpp
@@ -98,16 +98,16 @@ std::unique_ptr<IParticle> GUI::Transform::ToDomain::createIParticle(const Sessi
 {
     std::unique_ptr<IParticle> P_particle;
     if (item.hasModelType<ParticleItem>()) {
-        auto& particle_item = dynamic_cast<const ParticleItem&>(item);
+        const auto& particle_item = dynamic_cast<const ParticleItem&>(item);
         P_particle = particle_item.createParticle();
     } else if (item.hasModelType<ParticleCoreShellItem>()) {
-        auto& particle_coreshell_item = dynamic_cast<const ParticleCoreShellItem&>(item);
+        const auto& particle_coreshell_item = dynamic_cast<const ParticleCoreShellItem&>(item);
         P_particle = particle_coreshell_item.createParticleCoreShell();
     } else if (item.hasModelType<ParticleCompositionItem>()) {
-        auto& particle_composition_item = dynamic_cast<const ParticleCompositionItem&>(item);
+        const auto& particle_composition_item = dynamic_cast<const ParticleCompositionItem&>(item);
         P_particle = particle_composition_item.createParticleComposition();
     } else if (item.hasModelType<MesoCrystalItem>()) {
-        auto& mesocrystal_item = dynamic_cast<const MesoCrystalItem&>(item);
+        const auto& mesocrystal_item = dynamic_cast<const MesoCrystalItem&>(item);
         P_particle = mesocrystal_item.createMesoCrystal();
     }
     return P_particle;
@@ -150,7 +150,7 @@ void GUI::Transform::ToDomain::setSimulationOptions(ISimulation* simulation,
 {
     ASSERT(item.modelType() == SimulationOptionsItem::M_TYPE);
 
-    if (auto optionItem = dynamic_cast<const SimulationOptionsItem*>(&item)) {
+    if (const auto *optionItem = dynamic_cast<const SimulationOptionsItem*>(&item)) {
         simulation->options().setNumberOfThreads(optionItem->numberOfThreads());
         if (optionItem->useMonteCarloIntegration())
             simulation->options().setMonteCarloIntegration(true,
@@ -168,7 +168,7 @@ template <class T>
 void setParameterDistributionToSimulation(ParameterDistribution::WhichParameter which,
                                           const SessionItem* item, ISimulation& simulation)
 {
-    const auto parameter_item = dynamic_cast<const T*>(item);
+    const auto *const parameter_item = dynamic_cast<const T*>(item);
     ASSERT(parameter_item);
 
     auto P_par_distr = parameter_item->getParameterDistributionForName(which);
@@ -178,11 +178,11 @@ void setParameterDistributionToSimulation(ParameterDistribution::WhichParameter
 
 std::unique_ptr<ScanResolution> createScanResolution(const SessionItem* item)
 {
-    auto beam_item = dynamic_cast<const BeamDistributionItem*>(item);
+    const auto *beam_item = dynamic_cast<const BeamDistributionItem*>(item);
     if (!beam_item)
         return nullptr;
 
-    auto distr_item = dynamic_cast<const SymmetricDistributionItem*>(beam_item->distribution());
+    const auto *distr_item = dynamic_cast<const SymmetricDistributionItem*>(beam_item->distribution());
     if (!distr_item)
         return nullptr;
 
diff --git a/GUI/Model/To/ToDomain.h b/GUI/Model/To/ToDomain.h
index 1b398494c4a..f1f6772f65c 100644
--- a/GUI/Model/To/ToDomain.h
+++ b/GUI/Model/To/ToDomain.h
@@ -53,7 +53,7 @@ std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item);
 std::unique_ptr<ParticleLayout> createParticleLayout(const ParticleLayoutItem& item);
 
 void addDistributionParametersToSimulation(const BeamItem& beam_item, GISASSimulation& simulation);
-void addBeamDivergencesToScan(const BeamItem& beam_item, AlphaScan& simulation);
+void addBeamDivergencesToScan(const BeamItem& beam_item, AlphaScan& scan);
 
 void setSimulationOptions(ISimulation* simulation, const SessionItem& item);
 
diff --git a/GUI/Model/Trafo/RotationItems.h b/GUI/Model/Trafo/RotationItems.h
index 6256ec6302f..64bf0e01cb1 100644
--- a/GUI/Model/Trafo/RotationItems.h
+++ b/GUI/Model/Trafo/RotationItems.h
@@ -43,7 +43,7 @@ public:
     DoubleDescriptor angle() const;
 
 protected:
-    virtual unique_ptr<IRotation> createRotation() const override;
+    unique_ptr<IRotation> createRotation() const override;
 };
 
 class YRotationItem : public RotationItem {
@@ -57,7 +57,7 @@ public:
     DoubleDescriptor angle() const;
 
 protected:
-    virtual unique_ptr<IRotation> createRotation() const override;
+    unique_ptr<IRotation> createRotation() const override;
 };
 
 class ZRotationItem : public RotationItem {
@@ -71,7 +71,7 @@ public:
     DoubleDescriptor angle() const;
 
 protected:
-    virtual unique_ptr<IRotation> createRotation() const override;
+    unique_ptr<IRotation> createRotation() const override;
 };
 
 class EulerRotationItem : public RotationItem {
@@ -89,7 +89,7 @@ public:
     DoubleDescriptor gamma() const;
 
 protected:
-    virtual unique_ptr<IRotation> createRotation() const override;
+    unique_ptr<IRotation> createRotation() const override;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_TRAFO_ROTATIONITEMS_H
diff --git a/GUI/Model/Types/DoubleDescriptor.cpp b/GUI/Model/Types/DoubleDescriptor.cpp
index 9845219da65..a03b6ebed0c 100644
--- a/GUI/Model/Types/DoubleDescriptor.cpp
+++ b/GUI/Model/Types/DoubleDescriptor.cpp
@@ -13,6 +13,8 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Types/DoubleDescriptor.h"
+
+#include <utility>
 #include "GUI/Model/Job/ModelPath.h"
 #include "GUI/Model/Session/SessionItem.h"
 
@@ -37,15 +39,15 @@ DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip,
 {
 }
 
-DoubleDescriptor::DoubleDescriptor(const QString& label, const QString& tooltip, int decimals,
+DoubleDescriptor::DoubleDescriptor(QString  label, QString  tooltip, int decimals,
                                    const RealLimits& limits, function<void(double)> setter,
                                    function<double()> getter, const variant<QString, Unit>& unit)
-    : label(label)
-    , tooltip(tooltip)
+    : label(std::move(label))
+    , tooltip(std::move(tooltip))
     , decimals(decimals)
     , limits(limits)
-    , set(setter)
-    , get(getter)
+    , set(std::move(setter))
+    , get(std::move(getter))
     , unit(unit)
 {
     // #baLayerEditor the following path creation has to be implemented when SessionItem migration
diff --git a/GUI/Model/Types/DoubleDescriptor.h b/GUI/Model/Types/DoubleDescriptor.h
index 690daf38750..b1de122ecff 100644
--- a/GUI/Model/Types/DoubleDescriptor.h
+++ b/GUI/Model/Types/DoubleDescriptor.h
@@ -57,7 +57,7 @@ private: // private as long as path initialization is not included in params (to
                      const variant<QString, Unit>& unit);
 
     //! Operates on any kind of storage (e.g. session items), by using setter/getter methods
-    DoubleDescriptor(const QString& label, const QString& tooltip, int decimals,
+    DoubleDescriptor(QString  label, QString  tooltip, int decimals,
                      const RealLimits& limits, function<void(double)> setter,
                      function<double()> getter, const variant<QString, Unit>& unit);
 
diff --git a/GUI/Model/Types/UIntDescriptor.cpp b/GUI/Model/Types/UIntDescriptor.cpp
index 74306cffbad..ca689670a99 100644
--- a/GUI/Model/Types/UIntDescriptor.cpp
+++ b/GUI/Model/Types/UIntDescriptor.cpp
@@ -13,6 +13,8 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Types/UIntDescriptor.h"
+
+#include <utility>
 #include "GUI/Model/Session/SessionItem.h"
 
 UIntDescriptor::UIntDescriptor(const QString& label, SessionItem* item,
@@ -35,10 +37,10 @@ UIntDescriptor::UIntDescriptor(const QString& label, const QString& tooltip,
 {
 }
 
-UIntDescriptor::UIntDescriptor(const QString& label, const QString& tooltip,
+UIntDescriptor::UIntDescriptor(QString  label, QString  tooltip,
                                const RealLimits& limits, function<void(uint)> setter,
                                function<uint()> getter, const variant<QString, Unit>& unit)
-    : label(label), tooltip(tooltip), limits(limits), set(setter), get(getter), unit(unit)
+    : label(std::move(label)), tooltip(std::move(tooltip)), limits(limits), set(std::move(setter)), get(std::move(getter)), unit(unit)
 {
 }
 
diff --git a/GUI/Model/Types/UIntDescriptor.h b/GUI/Model/Types/UIntDescriptor.h
index 5f1ea7560e4..f6a3bec06ad 100644
--- a/GUI/Model/Types/UIntDescriptor.h
+++ b/GUI/Model/Types/UIntDescriptor.h
@@ -47,7 +47,7 @@ public:
 
 private:
     //! Operates on any kind of storage (e.g. session items), by using setter/getter methods
-    UIntDescriptor(const QString& label, const QString& tooltip, const RealLimits& limits,
+    UIntDescriptor(QString  label, QString  tooltip, const RealLimits& limits,
                    function<void(uint)> setter, function<uint()> getter,
                    const variant<QString, Unit>& unit);
 
-- 
GitLab