diff --git a/GUI/Model/Files/DatafilesSet.h b/GUI/Model/Files/DatafilesSet.h
index 09d7a89966ee06b60ac30d0e18acc18559e5a87a..da8c3156fcd0cc4c11d9f85d9537aa89313412bc 100644
--- a/GUI/Model/Files/DatafilesSet.h
+++ b/GUI/Model/Files/DatafilesSet.h
@@ -40,8 +40,8 @@ public:
 
     size_t size() const { return m_dfile_items.size(); }
     const OwningVector<DatafileItem>& dfileItems() const { return m_dfile_items; }
+    DatafileItem* dfileModifierAt(int i) { return m_dfile_items.at(i); }
     const DatafileItem* dfileItemAt(int i) const { return m_dfile_items.at(i); }
-    DatafileItem* dfileItemAt(int i) { return m_dfile_items.at(i); }
     QStringList realItemNames() const;
     int currentIndex() const { return m_current_index; }
     void writeTo(QXmlStreamWriter* w) const;
diff --git a/GUI/Model/Files/DatafilesQModel.cpp b/GUI/View/Data/DatafilesQModel.cpp
similarity index 61%
rename from GUI/Model/Files/DatafilesQModel.cpp
rename to GUI/View/Data/DatafilesQModel.cpp
index 73d4e3218bf6cb6d4bfd788ac396697edb286674..632ea40696c5a1ef03ecacd26f9d58d8e7282306 100644
--- a/GUI/Model/Files/DatafilesQModel.cpp
+++ b/GUI/View/Data/DatafilesQModel.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Files/DatafilesQModel.cpp
+//! @file      GUI/View/Data/DatafilesQModel.cpp
 //! @brief     Implements class DatafilesQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,50 +12,50 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Files/DatafilesQModel.h"
+#include "GUI/View/Data/DatafilesQModel.h"
 #include "GUI/Model/Device/DatafileItem.h"
 #include "GUI/Model/Files/DatafilesSet.h"
+#include "GUI/View/Manager/ProjectManager.h"
 
-DatafilesQModel::DatafilesQModel(QObject* parent, DatafilesSet* model)
+DatafilesQModel::DatafilesQModel(QObject* parent)
     : QAbstractListModel(parent)
-    , m_model(model)
 {
 }
 
 void DatafilesQModel::injectDatafileItem(DatafileItem* item)
 {
-    const int row = m_model->size();
+    const int row = gDoc->datafiles()->size();
     beginInsertRows({}, row, row);
-    m_model->appendDatafileItem(item);
+    gDoc->datafilesModifier()->appendDatafileItem(item);
     endInsertRows();
 }
 
 void DatafilesQModel::removeDatafileItemAt(int row)
 {
-    ASSERT(0 <= row && row < (int)m_model->size());
+    ASSERT(0 <= row && row < (int)gDoc->datafiles()->size());
     beginRemoveRows({}, row, row);
-    m_model->deleteDatafileItemAt(row);
+    gDoc->datafilesModifier()->deleteDatafileItemAt(row);
     endRemoveRows();
 }
 
 const DatafileItem* DatafilesQModel::topMostItem() const
 {
-    if (m_model->size() > 0)
-        return m_model->dfileItemAt(0);
+    if (gDoc->datafiles()->size() > 0)
+        return gDoc->datafiles()->dfileItemAt(0);
     return nullptr;
 }
 
 int DatafilesQModel::rowCount(const QModelIndex& /*parent*/) const
 {
-    return m_model->size();
+    return gDoc->datafiles()->size();
 }
 
 QVariant DatafilesQModel::data(const QModelIndex& index, int role) const
 {
-    if (!index.isValid() || index.row() >= (int)m_model->size() || index.row() < 0)
+    if (!index.isValid() || index.row() >= (int)gDoc->datafiles()->size() || index.row() < 0)
         return {};
 
-    const auto* item = itemForIndex(index);
+    const auto* item = gDoc->datafiles()->dfileItemAt(index.row());
     ASSERT(item);
 
     if (role == Qt::DisplayRole)
@@ -67,17 +67,17 @@ QVariant DatafilesQModel::data(const QModelIndex& index, int role) const
     return {};
 }
 
-DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index) const
+DatafileItem* DatafilesQModel::itemForIndex(const QModelIndex& index)
 {
-    if (!index.isValid() || index.row() >= (int)m_model->size() || index.row() < 0)
+    if (!index.isValid() || index.row() >= (int)gDoc->datafiles()->size() || index.row() < 0)
         return nullptr;
-    return m_model->dfileItemAt(index.row());
+    return gDoc->datafilesModifier()->dfileModifierAt(index.row());
 }
 
 QModelIndex DatafilesQModel::indexForItem(const DatafileItem* item) const
 {
-    for (size_t i = 0; i < m_model->size(); ++i)
-        if (m_model->dfileItemAt(i) == item)
+    for (size_t i = 0; i < gDoc->datafiles()->size(); ++i)
+        if (gDoc->datafiles()->dfileItemAt(i) == item)
             return createIndex(i, 0, item);
     return {};
 }
diff --git a/GUI/Model/Files/DatafilesQModel.h b/GUI/View/Data/DatafilesQModel.h
similarity index 76%
rename from GUI/Model/Files/DatafilesQModel.h
rename to GUI/View/Data/DatafilesQModel.h
index 0b908b0c0f63b4928b57f3a4ff2dac0fd7eccd17..7ce29b8cab4127024f1e6e4aa1ac4f360cf2bc54 100644
--- a/GUI/Model/Files/DatafilesQModel.h
+++ b/GUI/View/Data/DatafilesQModel.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Files/DatafilesQModel.h
+//! @file      GUI/View/Data/DatafilesQModel.h
 //! @brief     Defines class DatafilesQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H
-#define BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H
+#ifndef BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H
+#define BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H
 
 #include <QAbstractListModel>
 
@@ -25,7 +25,7 @@ class DatafilesSet;
 class DatafilesQModel : public QAbstractListModel {
     Q_OBJECT
 public:
-    explicit DatafilesQModel(QObject* parent, DatafilesSet* model);
+    explicit DatafilesQModel(QObject* parent);
 
     void injectDatafileItem(DatafileItem* item);
     void removeDatafileItemAt(int row);
@@ -33,13 +33,10 @@ public:
     int rowCount(const QModelIndex& parent = {}) const override;
     QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
 
-    DatafileItem* itemForIndex(const QModelIndex& index) const;
+    DatafileItem* itemForIndex(const QModelIndex& index);
     QModelIndex indexForItem(const DatafileItem* item) const;
     const DatafileItem* topMostItem() const; //!< The topmost visible item. Can be null.
     bool isHeadline(const QModelIndex&) const { return false; }
-
-private:
-    DatafilesSet* const m_model;
 };
 
-#endif // BORNAGAIN_GUI_MODEL_FILES_DATAFILESQMODEL_H
+#endif // BORNAGAIN_GUI_VIEW_DATA_DATAFILESQMODEL_H
diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp
index 73412429d66899a12c475aaccc8bdbfac73a6f36..eaa137def5beeba2429f16ac41d436920afa7185 100644
--- a/GUI/View/Data/DatafilesSelector.cpp
+++ b/GUI/View/Data/DatafilesSelector.cpp
@@ -18,9 +18,9 @@
 #include "Device/IO/IOFactory.h"
 #include "GUI/Model/Data/DataItem.h"
 #include "GUI/Model/Device/DatafileItem.h"
-#include "GUI/Model/Files/DatafilesQModel.h"
 #include "GUI/Model/Files/DatafilesSet.h"
 #include "GUI/View/Data/DatafileEditor.h"
+#include "GUI/View/Data/DatafilesQModel.h"
 #include "GUI/View/Frame/StackedFrames.h"
 #include "GUI/View/Info/MessageBox.h"
 #include "GUI/View/Layout/ApplicationSettings.h"
@@ -69,7 +69,7 @@ DatafilesSelector::DatafilesSelector(StackedDataFrames* data_frames)
     , m_rename_data_action(new QAction(this))
     , m_remove_data_action(new QAction(this))
     , m_qview(new QTreeView(this))
-    , m_qmodel(new DatafilesQModel(this, gDoc->datafilesModifier()))
+    , m_qmodel(new DatafilesQModel(this))
     , m_editor(new DatafileEditor)
     , m_data_frames(data_frames)
 {
diff --git a/GUI/View/ParEdit/ParameterTuningDelegate.cpp b/GUI/View/ParEdit/ParameterTuningDelegate.cpp
index c85eb98e6a8bac6143888a619ee458d47421cb0d..0251d0726331a2a2a7464ce53cf5bf3458ffda6d 100644
--- a/GUI/View/ParEdit/ParameterTuningDelegate.cpp
+++ b/GUI/View/ParEdit/ParameterTuningDelegate.cpp
@@ -15,7 +15,6 @@
 #include "GUI/View/ParEdit/ParameterTuningDelegate.h"
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
-#include "GUI/Model/Tune/PartunerQModel.h"
 #include "GUI/View/Numeric/ScientificSpinBox.h"
 #include <QHBoxLayout>
 
@@ -137,7 +136,8 @@ QWidget* ParameterTuningDelegate::createEditor(QWidget* parent, const QStyleOpti
     if (!data.isValid())
         return nullptr;
 
-    m_current_item = PartunerQModel::toParameterItem(index);
+    auto* item = static_cast<QObject*>(index.internalPointer());
+    m_current_item = dynamic_cast<ParameterItem*>(item);
     if (!m_current_item)
         return nullptr;
 
diff --git a/GUI/View/Tuning/FitParameterWidget.cpp b/GUI/View/Tuning/FitParameterWidget.cpp
index 216e3f124397a9ea63f1fa261d40a302a8b60a14..8f416ca4b33c1ec6e9c66bdda60cdcd344e6cdfd 100644
--- a/GUI/View/Tuning/FitParameterWidget.cpp
+++ b/GUI/View/Tuning/FitParameterWidget.cpp
@@ -20,11 +20,11 @@
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
-#include "GUI/Model/Tune/FitparQModel.h"
 #include "GUI/Support/Data/JobStatus.h"
 #include "GUI/View/Info/OverlayLabelController.h"
 #include "GUI/View/Layout/CustomEventFilters.h"
 #include "GUI/View/ParEdit/FitParameterDelegate.h"
+#include "GUI/View/Tuning/FitparQModel.h"
 #include "GUI/View/Tuning/ParameterTuningWidget.h"
 #include <QAction>
 #include <QHeaderView>
diff --git a/GUI/Model/Tune/FitparQModel.cpp b/GUI/View/Tuning/FitparQModel.cpp
similarity index 99%
rename from GUI/Model/Tune/FitparQModel.cpp
rename to GUI/View/Tuning/FitparQModel.cpp
index bf7e54b85eaf3ca932fdc1b828018143821e4aaf..199cd822f17ab1d75a1e2654aecce08dadfe1b86 100644
--- a/GUI/Model/Tune/FitparQModel.cpp
+++ b/GUI/View/Tuning/FitparQModel.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Tune/FitparQModel.cpp
+//! @file      GUI/View/Tuning/FitparQModel.cpp
 //! @brief     Implements class FitparQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Tune/FitparQModel.h"
+#include "GUI/View/Tuning/FitparQModel.h"
 #include "Base/Util/Assert.h"
 #include "GUI/Model/Job/FitParameterContainerItem.h"
 #include "GUI/Model/Job/JobItem.h"
diff --git a/GUI/Model/Tune/FitparQModel.h b/GUI/View/Tuning/FitparQModel.h
similarity index 93%
rename from GUI/Model/Tune/FitparQModel.h
rename to GUI/View/Tuning/FitparQModel.h
index a21eb9a0dce556141b5d2e951c0e2aeb41119534..4b9aa6ac9bf68afc9cc8fdf1942481adcb27ec00 100644
--- a/GUI/Model/Tune/FitparQModel.h
+++ b/GUI/View/Tuning/FitparQModel.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Tune/FitparQModel.h
+//! @file      GUI/View/Tuning/FitparQModel.h
 //! @brief     Defines class FitparQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H
-#define BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H
+#ifndef BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H
+#define BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H
 
 #include <QAbstractItemModel>
 #include <QStringList>
@@ -77,4 +77,4 @@ inline Qt::DropActions FitparQModel::supportedDropActions() const
     return Qt::MoveAction | Qt::CopyAction;
 }
 
-#endif // BORNAGAIN_GUI_MODEL_TUNE_FITPARQMODEL_H
+#endif // BORNAGAIN_GUI_VIEW_TUNING_FITPARQMODEL_H
diff --git a/GUI/View/Tuning/ParameterTuningWidget.cpp b/GUI/View/Tuning/ParameterTuningWidget.cpp
index 499575ad01ba3fe559b12eadbba24e768b643eb6..10b3b249bb9a20f931afc962423ca6c08f570bb0 100644
--- a/GUI/View/Tuning/ParameterTuningWidget.cpp
+++ b/GUI/View/Tuning/ParameterTuningWidget.cpp
@@ -20,12 +20,12 @@
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Model/Tune/JobsSet.h"
-#include "GUI/Model/Tune/PartunerQModel.h"
 #include "GUI/Support/Data/JobStatus.h"
 #include "GUI/View/Info/CautionSign.h"
 #include "GUI/View/Layout/mainwindow_constants.h"
 #include "GUI/View/ParEdit/ParameterTuningDelegate.h"
 #include "GUI/View/Tuning/ParameterBackupWidget.h"
+#include "GUI/View/Tuning/PartunerQModel.h"
 #include "GUI/View/Tuning/SliderEditor.h"
 #include "GUI/View/Widget/StyledToolbar.h"
 #include <QAction>
diff --git a/GUI/Model/Tune/PartunerQModel.cpp b/GUI/View/Tuning/PartunerQModel.cpp
similarity index 98%
rename from GUI/Model/Tune/PartunerQModel.cpp
rename to GUI/View/Tuning/PartunerQModel.cpp
index 5e4ded6198acd503b1b815fa3387df618efd83ea..00834a998d2b5d6003ca452c2f29b8145a49e1eb 100644
--- a/GUI/Model/Tune/PartunerQModel.cpp
+++ b/GUI/View/Tuning/PartunerQModel.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Tune/PartunerQModel.cpp
+//! @file      GUI/View/Tuning/PartunerQModel.cpp
 //! @brief     Implements class PartunerQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Tune/PartunerQModel.h"
+#include "GUI/View/Tuning/PartunerQModel.h"
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Support/XML/UtilXML.h"
 #include <QFont>
diff --git a/GUI/Model/Tune/PartunerQModel.h b/GUI/View/Tuning/PartunerQModel.h
similarity index 91%
rename from GUI/Model/Tune/PartunerQModel.h
rename to GUI/View/Tuning/PartunerQModel.h
index ac28bf8dde7192c8de1ea830daf9ff816c38e039..c685a3655903a1f3f19fa76229aac5b30e9d3d1c 100644
--- a/GUI/Model/Tune/PartunerQModel.h
+++ b/GUI/View/Tuning/PartunerQModel.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Tune/PartunerQModel.h
+//! @file      GUI/View/Tuning/PartunerQModel.h
 //! @brief     Defines class PartunerQModel.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H
-#define BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H
+#ifndef BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H
+#define BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H
 
 class ParameterItem;
 class ParameterLabelItem;
@@ -57,4 +57,4 @@ private:
     QObject* m_root_object;
 };
 
-#endif // BORNAGAIN_GUI_MODEL_TUNE_PARTUNERQMODEL_H
+#endif // BORNAGAIN_GUI_VIEW_TUNING_PARTUNERQMODEL_H
diff --git a/Tests/Unit/GUI/TestFitParameterModel.cpp b/Tests/Unit/GUI/TestFitParameterModel.cpp
index 59bd9ad940ab820cf5bee2bc0ae7a7c62c653e52..c7e5623a7e2dde8975a43367be4e53adc8b4306f 100644
--- a/Tests/Unit/GUI/TestFitParameterModel.cpp
+++ b/Tests/Unit/GUI/TestFitParameterModel.cpp
@@ -4,7 +4,7 @@
 #include "GUI/Model/Job/FitParameterLinkItem.h"
 #include "GUI/Model/Job/FitSuiteItem.h"
 #include "GUI/Model/Mini/MinimizerItems.h"
-#include "GUI/Model/Tune/FitparQModel.h"
+#include "GUI/View/Tuning/FitparQModel.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 TEST(TestFitparQModel, addFitParameter)