diff --git a/.clang-tidy b/.clang-tidy
index 01d514dcf04527a1bdbcfe2f3de6cef63925fb78..e09f26750cfe33b13428d3353184ea0af75413ef 100644
--- a/.clang-tidy
+++ b/.clang-tidy
@@ -43,6 +43,7 @@ Checks: '*,
 -cppcoreguidelines-pro-type-member-init,
 -cppcoreguidelines-pro-type-reinterpret-cast,
 -cppcoreguidelines-pro-type-vararg,
+-cppcoreguidelines-slicing,
 -fuchsia-default-arguments-calls,
 -fuchsia-default-arguments-declarations,
 -fuchsia-overloaded-operator,
@@ -72,6 +73,7 @@ Checks: '*,
 
 -readability-isolate-declaration,
 -performance-inefficient-vector-operation,
+-performance-unnecessary-copy-initialization,
 
 
 -SectionComment_Disabled_unless_3rdparty_libraries_are_improved,
@@ -140,6 +142,7 @@ Checks: '*,
 
 -bugprone-exception-escape,
 -bugprone-misplaced-widening-cast,
+-bugprone-copy-constructor-init,
 
 '
 # keep the closing quotation mark
\ No newline at end of file
diff --git a/GUI/Model/Session/SessionModel.cpp b/GUI/Model/Session/SessionModel.cpp
index 6ab92413c6ee9561c42d4916cd7da75393392e0c..f60ff7adbb24cdfd9e699386e85abd9c73781156 100644
--- a/GUI/Model/Session/SessionModel.cpp
+++ b/GUI/Model/Session/SessionModel.cpp
@@ -59,21 +59,18 @@ Qt::ItemFlags SessionModel::flags(const QModelIndex& index) const
             && item->isEditable() && item->isEnabled())
             result_flags |= Qt::ItemIsEditable;
         QVector<QString> acceptable_child_items = acceptableDefaultItemTypes(index);
-        if (acceptable_child_items.contains(m_dragged_item_type)) {
+        if (acceptable_child_items.contains(m_dragged_item_type))
             result_flags |= Qt::ItemIsDropEnabled;
-        }
-    } else {
+    } else
         result_flags |= Qt::ItemIsDropEnabled;
-    }
     return result_flags;
 }
 
 QVariant SessionModel::data(const QModelIndex& index, int role) const
 {
     if (!m_root_item || !index.isValid() || index.column() < 0
-        || index.column() >= columnCount(QModelIndex())) {
-        return QVariant();
-    }
+        || index.column() >= columnCount(QModelIndex()))
+        return {};
     if (SessionItem* item = itemForIndex(index)) {
         if (role == Qt::DisplayRole || role == Qt::EditRole) {
             if (index.column() == SessionFlags::ITEM_VALUE)
@@ -86,24 +83,24 @@ QVariant SessionModel::data(const QModelIndex& index, int role) const
             return GUI::Session::ItemUtils::ForegroundRole(*item);
         } else if (role == Qt::CheckStateRole && index.column() == SessionFlags::ITEM_VALUE) {
             return GUI::Session::ItemUtils::CheckStateRole(*item);
-        } else {
+        } else
             return item->roleProperty(role);
-        }
     }
-    return QVariant();
+    return {};
 }
 
 QVariant SessionModel::headerData(int section, Qt::Orientation orientation, int role) const
 {
-    if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
-        switch (section) {
-        case SessionFlags::ITEM_NAME:
-            return "Name";
-        case SessionFlags::ITEM_VALUE:
-            return "Value";
-        }
+    if (orientation != Qt::Horizontal || role != Qt::DisplayRole)
+        return {};
+    switch (section) {
+    case SessionFlags::ITEM_NAME:
+        return "Name";
+    case SessionFlags::ITEM_VALUE:
+        return "Value";
+    default:
+        return {};
     }
-    return QVariant();
 }
 
 int SessionModel::rowCount(const QModelIndex& parent) const
@@ -143,7 +140,6 @@ QModelIndex SessionModel::parent(const QModelIndex& child) const
         if (SessionItem* parent_item = child_item->parent()) {
             if (parent_item == m_root_item)
                 return QModelIndex();
-
             return createIndex(GUI::Session::ItemUtils::ParentRow(*parent_item), 0, parent_item);
         }
     }
@@ -271,12 +267,10 @@ SessionItem* SessionModel::insertNewItem(QString model_type, SessionItem* parent
     }
 
     SessionItem* new_item = GUI::Model::ItemFactory::CreateItem(model_type);
+    ASSERT(new_item);
 
-    if (!new_item)
-        throw Error("SessionModel::insertNewItem() -> Wrong model type " + model_type);
-
-    if (!parent_item->insertItem(row, new_item, tag))
-        throw Error("SessionModel::insertNewItem -> Error. Can't insert item");
+    const auto success = parent_item->insertItem(row, new_item, tag);
+    ASSERT(success);
 
     return new_item;
 }
diff --git a/GUI/View/Loaders/AutomaticDataLoader1DResultModel.cpp b/GUI/View/Loaders/AutomaticDataLoader1DResultModel.cpp
index cf85fa823742a5545e8e9d8a1b14fcbf98de2581..61217352e073b04609a56b8e1cf4ab34987e9115 100644
--- a/GUI/View/Loaders/AutomaticDataLoader1DResultModel.cpp
+++ b/GUI/View/Loaders/AutomaticDataLoader1DResultModel.cpp
@@ -47,8 +47,9 @@ QString AutomaticDataLoader1DResultModel::headerTextOfCalculatedColumn(int colum
         return "Q [1/nm]";
     case 1:
         return "R";
+    default:
+        return "";
     }
-    return QString();
 }
 
 int AutomaticDataLoader1DResultModel::columnCount(ColumnType type) const
diff --git a/GUI/View/Loaders/QREDataLoaderResultModel.cpp b/GUI/View/Loaders/QREDataLoaderResultModel.cpp
index 6ef2485f0cd8a6a7cda927662b84bba778709ea0..e08d323534b8992a87e82aab1ec45d5c5ae62055 100644
--- a/GUI/View/Loaders/QREDataLoaderResultModel.cpp
+++ b/GUI/View/Loaders/QREDataLoaderResultModel.cpp
@@ -33,7 +33,6 @@ bool QREDataLoaderResultModel::rowIsSkipped(int row) const
 {
     if (row >= 0 && row < m_importResult->lines.size())
         return m_importResult->lines[row].first;
-
     return false;
 }
 
@@ -46,8 +45,9 @@ QString QREDataLoaderResultModel::headerTextOfCalculatedColumn(int column) const
         return "R";
     case 2:
         return "sigma_R";
+    default:
+        return "";
     }
-    return QString();
 }
 
 int QREDataLoaderResultModel::columnCount(ColumnType type) const
@@ -61,7 +61,6 @@ int QREDataLoaderResultModel::columnCount(ColumnType type) const
     case ColumnType::processed: {
         const bool showErrorColumn =
             m_importResult->importSettings.columnDefinitions[QREDataLoader::DataType::dR].enabled;
-
         return showErrorColumn ? 3 : 2;
     }
     case ColumnType::error:
@@ -74,19 +73,19 @@ int QREDataLoaderResultModel::columnCount(ColumnType type) const
 QString QREDataLoaderResultModel::cellText(ColumnType type, int row, int col) const
 {
     if (col < 0 || row < 0 || row >= m_importResult->lines.size())
-        return QString();
+        return "";
 
     if (type == ColumnType::fileContent)
         return (col == 0) ? m_importResult->lines[row].second : QString();
 
     const bool isSkippedLine = m_importResult->lines[row].first;
     if (isSkippedLine)
-        return QString();
+        return "";
 
     switch (type) {
     case ColumnType::raw: {
         if (row >= m_importResult->rawValues.size())
-            return QString();
+            return "";
         const auto& d = m_importResult->rawValues[row];
         return (col < d.size()) ? QString::number(d[col]) : QString();
     }
@@ -104,12 +103,12 @@ QString QREDataLoaderResultModel::cellText(ColumnType type, int row, int col) co
             return (row < m_importResult->eValues.size())
                        ? QString::number(m_importResult->eValues[row])
                        : QString();
-        return QString();
+        return "";
 
     case ColumnType::error:
         return (col == 0) ? m_importResult->errorText(row) : QString();
 
     default:
-        return QString();
+        return "";
     }
 }