diff --git a/GUI/View/Access/DataAccessWidget.cpp b/GUI/View/Access/DataAccessWidget.cpp
index 7c86067e99700de6b5c0ec7dbc6eaca39c22b403..008a56d4ae285b567dae6dd01686964500040426 100644
--- a/GUI/View/Access/DataAccessWidget.cpp
+++ b/GUI/View/Access/DataAccessWidget.cpp
@@ -23,7 +23,6 @@ DataAccessWidget::DataAccessWidget()
     : m_item(nullptr)
 {
 }
-DataAccessWidget::~DataAccessWidget() = default;
 
 void DataAccessWidget::setBaseItem(QObject* item)
 {
diff --git a/GUI/View/Access/DataAccessWidget.h b/GUI/View/Access/DataAccessWidget.h
index 1ad80a1467c75f3fa65509c97c1042df42a2e8d4..f9d4d5bfa51d1ca7445b36c53fe27978ae4f0d10 100644
--- a/GUI/View/Access/DataAccessWidget.h
+++ b/GUI/View/Access/DataAccessWidget.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_VIEW_ACCESS_DATAACCESSWIDGET_H
 #define BORNAGAIN_GUI_VIEW_ACCESS_DATAACCESSWIDGET_H
 
-#include <QWidget>
+#include <QObject>
 
 class Data1DItem;
 class Data2DItem;
@@ -27,10 +27,10 @@ class JobItem;
 //! separately and as a list of items that is required for simultaneous, synchronous work while
 //! plotting and changing their properties.
 
-class DataAccessWidget : public QWidget {
+class DataAccessWidget : public QObject {
+    Q_OBJECT
 public:
     explicit DataAccessWidget();
-    ~DataAccessWidget() override;
 
     void setBaseItem(QObject* item);
 
diff --git a/GUI/View/Access/DataPropertyWidget.cpp b/GUI/View/Access/DataPropertyWidget.cpp
index 5d15a17bd4ca456814cdc9221915a01a1d8bc49e..24273b6896174a4fdfef9cca46321618c3ff9ec4 100644
--- a/GUI/View/Access/DataPropertyWidget.cpp
+++ b/GUI/View/Access/DataPropertyWidget.cpp
@@ -32,7 +32,7 @@ DataPropertyWidget::DataPropertyWidget()
 
 void DataPropertyWidget::setJobOrDatafileItem(QObject* item)
 {
-    setBaseItem(item);
+    m_daw.setBaseItem(item);
     createPanelElements();
 }
 
@@ -47,7 +47,7 @@ void DataPropertyWidget::updateItemCoords(DataItem* item)
 
 void DataPropertyWidget::updateUIValues()
 {
-    if (jobRealBase())
+    if (m_daw.jobRealBase())
         for (const auto& updater : m_updaters)
             updater();
 }
diff --git a/GUI/View/Access/DataPropertyWidget.h b/GUI/View/Access/DataPropertyWidget.h
index 44d960ffbcf397026cdb0626eba20745c8ea4fa2..5ff80156aeb5960e8b217ab2b494a69b5d65924d 100644
--- a/GUI/View/Access/DataPropertyWidget.h
+++ b/GUI/View/Access/DataPropertyWidget.h
@@ -17,12 +17,13 @@
 
 #include "GUI/View/Access/DataAccessWidget.h"
 #include <QFormLayout>
+#include <QWidget>
 
 class DataItem;
 
 //! Base class for AxesPanel and AxisPanel.
 
-class DataPropertyWidget : public DataAccessWidget {
+class DataPropertyWidget : public QWidget {
     Q_OBJECT
 public:
     explicit DataPropertyWidget();
@@ -39,6 +40,8 @@ protected:
 
     QFormLayout* m_main_layout;
     QList<std::function<void()>> m_updaters;
+
+    DataAccessWidget m_daw;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_ACCESS_DATAPROPERTYWIDGET_H
diff --git a/GUI/View/Frame/Fit1DFrame.cpp b/GUI/View/Frame/Fit1DFrame.cpp
index f037d3c6bfffe7e38ef4e00618fe47ff22058e13..fab2354377c1bd57f45f8ff23bf187d07aa00878 100644
--- a/GUI/View/Frame/Fit1DFrame.cpp
+++ b/GUI/View/Frame/Fit1DFrame.cpp
@@ -76,26 +76,26 @@ Fit1DFrame::Fit1DFrame(JobItem* job_item)
             &Fit1DFrame::onResetViewAction);
 
     ASSERT(job_item);
-    setBaseItem(job_item);
-    GUI::View::RangeUtil::setCommonRangeY(mainData1DItems());
+    m_daw.setBaseItem(job_item);
+    GUI::View::RangeUtil::setCommonRangeY(m_daw.mainData1DItems());
     updateDiffData();
     connectItems();
 
-    m_data_canvas->setData1DItems({simuData1DItem(), realData1DItem()});
-    m_diff_canvas->setData1DItems({diffData1DItem()});
+    m_data_canvas->setData1DItems({m_daw.simuData1DItem(), m_daw.realData1DItem()});
+    m_diff_canvas->setData1DItems({m_daw.diffData1DItem()});
     m_progress_canvas->setJobItem(job_item);
     m_axis_panel->setJobOrDatafileItem(job_item);
 }
 
 void Fit1DFrame::onResetViewAction()
 {
-    ASSERT(simuData1DItem() && diffData1DItem() && realData1DItem());
-    simuData1DItem()->resetView();
-    realData1DItem()->resetView();
-    diffData1DItem()->resetView();
+    ASSERT(m_daw.simuData1DItem() && m_daw.diffData1DItem() && m_daw.realData1DItem());
+    m_daw.simuData1DItem()->resetView();
+    m_daw.realData1DItem()->resetView();
+    m_daw.diffData1DItem()->resetView();
 
     // synchronize data range between simulated and real
-    GUI::View::RangeUtil::setCommonRangeY(mainData1DItems());
+    GUI::View::RangeUtil::setCommonRangeY(m_daw.mainData1DItems());
     gDoc->setModified();
 }
 
@@ -103,29 +103,29 @@ void Fit1DFrame::connectItems()
 {
     // sync X axis view area between simulated and difference plots
     // simu --> diff
-    connect(simuData1DItem(), &DataItem::updateOtherPlots, diffData1DItem(),
+    connect(m_daw.simuData1DItem(), &DataItem::updateOtherPlots, m_daw.diffData1DItem(),
             &DataItem::checkXranges, Qt::UniqueConnection);
     // diff --> simu
-    connect(diffData1DItem(), &DataItem::updateOtherPlots, simuData1DItem(),
+    connect(m_daw.diffData1DItem(), &DataItem::updateOtherPlots, m_daw.simuData1DItem(),
             &DataItem::checkXranges, Qt::UniqueConnection);
 
     // update diff data if simulation data changes
-    connect(simuData1DItem(), &Data1DItem::datafieldChanged, this, &Fit1DFrame::updateDiffData,
-            Qt::UniqueConnection);
+    connect(m_daw.simuData1DItem(), &Data1DItem::datafieldChanged, this,
+            &Fit1DFrame::updateDiffData, Qt::UniqueConnection);
 }
 
 void Fit1DFrame::updateDiffData()
 {
-    ASSERT(simuData1DItem() && diffData1DItem() && realData1DItem());
-    if (!simuData1DItem()->c_field() || !realData1DItem()->c_field())
+    ASSERT(m_daw.simuData1DItem() && m_daw.diffData1DItem() && m_daw.realData1DItem());
+    if (!m_daw.simuData1DItem()->c_field() || !m_daw.realData1DItem()->c_field())
         return;
 
-    diffData1DItem()->setDatafield(DiffUtil::relativeDifferenceField(*simuData1DItem()->c_field(),
-                                                                     *realData1DItem()->c_field()));
+    m_daw.diffData1DItem()->setDatafield(DiffUtil::relativeDifferenceField(
+        *m_daw.simuData1DItem()->c_field(), *m_daw.realData1DItem()->c_field()));
 
     // keep Y axis range up with data range
-    double min = diffData1DItem()->yMin();
-    double max = diffData1DItem()->yMax();
-    if (!diffData1DItem()->axItemY()->isLogScale() || min > 0)
-        diffData1DItem()->setYrange(min, max);
+    double min = m_daw.diffData1DItem()->yMin();
+    double max = m_daw.diffData1DItem()->yMax();
+    if (!m_daw.diffData1DItem()->axItemY()->isLogScale() || min > 0)
+        m_daw.diffData1DItem()->setYrange(min, max);
 }
diff --git a/GUI/View/Frame/Fit1DFrame.h b/GUI/View/Frame/Fit1DFrame.h
index dff17706c4489180c1063fb91f09b02766215045..54bb665191d59915f42f39b896e0334d01e206eb 100644
--- a/GUI/View/Frame/Fit1DFrame.h
+++ b/GUI/View/Frame/Fit1DFrame.h
@@ -17,6 +17,7 @@
 
 #include "GUI/View/Access/DataAccessWidget.h"
 #include <QAction>
+#include <QWidget>
 
 class AxisPanel;
 class JobItem;
@@ -28,7 +29,7 @@ class SpecularPlotCanvas;
 //! The Fit2DFrame class plots real data, simulated data and their relative difference
 //! during the course of the fit.
 
-class Fit1DFrame : public DataAccessWidget {
+class Fit1DFrame : public QWidget {
     Q_OBJECT
 public:
     explicit Fit1DFrame(JobItem* item);
@@ -45,6 +46,7 @@ private:
     AxisPanel* m_axis_panel;
 
     QAction* m_reset_view_action;
+    DataAccessWidget m_daw;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_FRAME_FIT1DFRAME_H
diff --git a/GUI/View/Frame/Fit2DFrame.cpp b/GUI/View/Frame/Fit2DFrame.cpp
index 57059b532e46d5c44cde3cc5d8c0428a2e08d5d9..d79d22808f948bf61d96a412bb770af23a52779c 100644
--- a/GUI/View/Frame/Fit2DFrame.cpp
+++ b/GUI/View/Frame/Fit2DFrame.cpp
@@ -78,15 +78,15 @@ Fit2DFrame::Fit2DFrame(JobItem* job_item)
             &Fit2DFrame::onResetViewAction);
 
     ASSERT(job_item);
-    setBaseItem(job_item);
+    m_daw.setBaseItem(job_item);
 
-    GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems());
+    GUI::View::RangeUtil::setCommonRangeZ(m_daw.mainData2DItems());
     updateDiffData();
     connectItems();
 
-    m_simu_canvas->itemToCanvas(simuData2DItem());
-    m_real_canvas->itemToCanvas(realData2DItem());
-    m_diff_canvas->itemToCanvas(diffData2DItem());
+    m_simu_canvas->itemToCanvas(m_daw.simuData2DItem());
+    m_real_canvas->itemToCanvas(m_daw.realData2DItem());
+    m_diff_canvas->itemToCanvas(m_daw.diffData2DItem());
 
     m_progress_canvas->setJobItem(job_item);
     m_axes_panel->setJobOrDatafileItem(job_item);
@@ -94,51 +94,51 @@ Fit2DFrame::Fit2DFrame(JobItem* job_item)
 
 void Fit2DFrame::onResetViewAction()
 {
-    ASSERT(simuData2DItem() && diffData2DItem() && realData2DItem());
-    simuData2DItem()->resetView();
-    realData2DItem()->resetView();
-    diffData2DItem()->resetView();
+    ASSERT(m_daw.simuData2DItem() && m_daw.diffData2DItem() && m_daw.realData2DItem());
+    m_daw.simuData2DItem()->resetView();
+    m_daw.realData2DItem()->resetView();
+    m_daw.diffData2DItem()->resetView();
 
     // synchronize data range between simulated and real
-    GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems());
+    GUI::View::RangeUtil::setCommonRangeZ(m_daw.mainData2DItems());
     gDoc->setModified();
 }
 
 void Fit2DFrame::connectItems()
 {
     // sync XY view area between simulated, real and difference plots
-    for (auto* senderItem : allData2DItems())
-        for (auto* receiverItem : allData2DItems())
+    for (auto* senderItem : m_daw.allData2DItems())
+        for (auto* receiverItem : m_daw.allData2DItems())
             if (receiverItem != senderItem)
                 connect(senderItem, &DataItem::updateOtherPlots, receiverItem,
                         &DataItem::checkXYranges, Qt::UniqueConnection);
 
     // sync Z range between simulated and real
-    connect(simuData2DItem(), &Data2DItem::alignRanges,
-            [this] { GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems()); });
+    connect(m_daw.simuData2DItem(), &Data2DItem::alignRanges,
+            [this] { GUI::View::RangeUtil::setCommonRangeZ(m_daw.mainData2DItems()); });
 
     // sync Z range: simu --> real
-    connect(simuData2DItem(), &DataItem::updateOtherPlots, realData2DItem(),
+    connect(m_daw.simuData2DItem(), &DataItem::updateOtherPlots, m_daw.realData2DItem(),
             &Data2DItem::copyZRangeFromItem, Qt::UniqueConnection);
 
     // sync Z range: real --> simu
-    connect(realData2DItem(), &DataItem::updateOtherPlots, simuData2DItem(),
+    connect(m_daw.realData2DItem(), &DataItem::updateOtherPlots, m_daw.simuData2DItem(),
             &Data2DItem::copyZRangeFromItem, Qt::UniqueConnection);
 
     // update diff data if simulation data changes
-    connect(simuData2DItem(), &Data1DItem::datafieldChanged, this, &Fit2DFrame::updateDiffData,
-            Qt::UniqueConnection);
+    connect(m_daw.simuData2DItem(), &Data1DItem::datafieldChanged, this,
+            &Fit2DFrame::updateDiffData, Qt::UniqueConnection);
 }
 
 void Fit2DFrame::updateDiffData()
 {
-    ASSERT(simuData2DItem() && diffData2DItem() && realData2DItem());
-    if (!simuData2DItem()->c_field() || !realData2DItem()->c_field())
+    ASSERT(m_daw.simuData2DItem() && m_daw.diffData2DItem() && m_daw.realData2DItem());
+    if (!m_daw.simuData2DItem()->c_field() || !m_daw.realData2DItem()->c_field())
         return;
 
-    diffData2DItem()->setDatafield(DiffUtil::relativeDifferenceField(*simuData2DItem()->c_field(),
-                                                                     *realData2DItem()->c_field()));
+    m_daw.diffData2DItem()->setDatafield(DiffUtil::relativeDifferenceField(
+        *m_daw.simuData2DItem()->c_field(), *m_daw.realData2DItem()->c_field()));
 
     // keep Z axis range up with data range
-    diffData2DItem()->computeDataRange();
+    m_daw.diffData2DItem()->computeDataRange();
 }
diff --git a/GUI/View/Frame/Fit2DFrame.h b/GUI/View/Frame/Fit2DFrame.h
index 87b5df3d9da8a606add50395569c51b5693640db..7f1b4e2912ed00dc5e3559e6d87ba005ac25d40d 100644
--- a/GUI/View/Frame/Fit2DFrame.h
+++ b/GUI/View/Frame/Fit2DFrame.h
@@ -17,6 +17,7 @@
 
 #include "GUI/View/Access/DataAccessWidget.h"
 #include <QAction>
+#include <QWidget>
 
 class AxesPanel;
 class ColorMapCanvas;
@@ -26,7 +27,7 @@ class ProgressCanvas;
 
 //! Plots realdata, simulated data and relative difference map during the course of the fit.
 
-class Fit2DFrame : public DataAccessWidget {
+class Fit2DFrame : public QWidget {
     Q_OBJECT
 public:
     explicit Fit2DFrame(JobItem* item);
@@ -44,6 +45,7 @@ private:
     AxesPanel* m_axes_panel;
 
     QAction* m_reset_view_action;
+    DataAccessWidget m_daw;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_FRAME_FIT2DFRAME_H
diff --git a/GUI/View/Setup/AxesPanel.cpp b/GUI/View/Setup/AxesPanel.cpp
index ed74b694d5830b14b0b8543a53eef04bcaf607ca..5d426b94564b0d7148fc88f688f3ee92fae7b98c 100644
--- a/GUI/View/Setup/AxesPanel.cpp
+++ b/GUI/View/Setup/AxesPanel.cpp
@@ -29,10 +29,10 @@
 
 void AxesPanel::createPanelElements()
 {
-    if (allData2DItems().empty())
+    if (m_daw.allData2DItems().empty())
         return;
 
-    for (auto* item : allData2DItems())
+    for (auto* item : m_daw.allData2DItems())
         disconnect(item, nullptr, this, nullptr);
 
     GUI::Util::Layout::clearLayout(m_main_layout);
@@ -54,18 +54,18 @@ void AxesPanel::createPanelElements()
 
     m_main_layout->addRow(
         "Color scheme:",
-        GUI::Util::createComboBox([this] { return currentData2DItem()->gradientCombo(); },
+        GUI::Util::createComboBox([this] { return m_daw.currentData2DItem()->gradientCombo(); },
                                   [this](const QString& newVal) {
-                                      for (auto* item : allData2DItems())
+                                      for (auto* item : m_daw.allData2DItems())
                                           item->setCurrentGradient(newVal);
                                       gDoc->setModified();
                                   },
                                   false, &m_updaters));
 
     m_main_layout->addRow(GUI::Util::createCheckBox(
-        "Interpolate", [this] { return currentData2DItem()->isInterpolated(); },
+        "Interpolate", [this] { return m_daw.currentData2DItem()->isInterpolated(); },
         [this](bool b) {
-            for (auto* item : allData2DItems())
+            for (auto* item : m_daw.allData2DItems())
                 item->setInterpolated(b);
             gDoc->setModified();
         },
@@ -78,18 +78,18 @@ void AxesPanel::createPanelElements()
     xFormLayout->setSpacing(5);
 
     xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->axItemX()->min(); },
+                                    [this] { return m_daw.currentData2DItem()->axItemX()->min(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData2DItems())
+                                        for (auto* item : m_daw.allData2DItems())
                                             item->axItemX()->setMin(newValue);
                                         gDoc->setModified();
                                     },
                                     &m_updaters));
 
     xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->axItemX()->max(); },
+                                    [this] { return m_daw.currentData2DItem()->axItemX()->max(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData2DItems())
+                                        for (auto* item : m_daw.allData2DItems())
                                             item->axItemX()->setMax(newValue);
                                         gDoc->setModified();
                                     },
@@ -104,18 +104,18 @@ void AxesPanel::createPanelElements()
     yFormLayout->setSpacing(5);
 
     yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->axItemY()->min(); },
+                                    [this] { return m_daw.currentData2DItem()->axItemY()->min(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData2DItems())
+                                        for (auto* item : m_daw.allData2DItems())
                                             item->axItemY()->setMin(newValue);
                                         gDoc->setModified();
                                     },
                                     &m_updaters));
 
     yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->axItemY()->max(); },
+                                    [this] { return m_daw.currentData2DItem()->axItemY()->max(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData2DItems())
+                                        for (auto* item : m_daw.allData2DItems())
                                             item->axItemY()->setMax(newValue);
                                         gDoc->setModified();
                                     },
@@ -130,9 +130,9 @@ void AxesPanel::createPanelElements()
     zFormLayout->setSpacing(5);
 
     auto* logRangeSpinBox = GUI::Util::createDoubleSpinBox(
-        [this] { return currentData2DItem()->zAxisItem()->logRangeOrders(); },
+        [this] { return m_daw.currentData2DItem()->zAxisItem()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto* item : mainData2DItems()) {
+            for (auto* item : m_daw.mainData2DItems()) {
                 item->zAxisItem()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -140,35 +140,37 @@ void AxesPanel::createPanelElements()
         },
         &m_updaters, "Dynamic range to display values", RealLimits::positive());
 
-    zFormLayout->addRow("Min:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->zAxisItem()->min(); },
-                                    [this](double newValue) {
-                                        for (auto* item : allData2DItems()) {
-                                            item->zAxisItem()->setMin(newValue);
-                                            item->zAxisItem()->adjustLogRangeOrders();
-                                            updateUIValues();
-                                        }
-                                        gDoc->setModified();
-                                    },
-                                    &m_updaters));
-
-    zFormLayout->addRow("Max:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData2DItem()->zAxisItem()->max(); },
-                                    [this](double newValue) {
-                                        for (auto* item : mainData2DItems()) {
-                                            item->zAxisItem()->setMax(newValue);
-                                            item->zAxisItem()->adjustLogRangeOrders();
-                                            updateUIValues();
-                                        }
-                                        gDoc->setModified();
-                                    },
-                                    &m_updaters));
+    zFormLayout->addRow("Min:",
+                        GUI::Util::createDoubleSpinBox(
+                            [this] { return m_daw.currentData2DItem()->zAxisItem()->min(); },
+                            [this](double newValue) {
+                                for (auto* item : m_daw.allData2DItems()) {
+                                    item->zAxisItem()->setMin(newValue);
+                                    item->zAxisItem()->adjustLogRangeOrders();
+                                    updateUIValues();
+                                }
+                                gDoc->setModified();
+                            },
+                            &m_updaters));
+
+    zFormLayout->addRow("Max:",
+                        GUI::Util::createDoubleSpinBox(
+                            [this] { return m_daw.currentData2DItem()->zAxisItem()->max(); },
+                            [this](double newValue) {
+                                for (auto* item : m_daw.mainData2DItems()) {
+                                    item->zAxisItem()->setMax(newValue);
+                                    item->zAxisItem()->adjustLogRangeOrders();
+                                    updateUIValues();
+                                }
+                                gDoc->setModified();
+                            },
+                            &m_updaters));
 
     zFormLayout->addRow(GUI::Util::createCheckBox(
-        "log10", [this] { return currentData2DItem()->zAxisItem()->isLogScale(); },
+        "log10", [this] { return m_daw.currentData2DItem()->zAxisItem()->isLogScale(); },
         [this, logRangeSpinBox](bool b) {
             logRangeSpinBox->setEnabled(b);
-            for (auto* item : allData2DItems())
+            for (auto* item : m_daw.allData2DItems())
                 item->zAxisItem()->setLogScale(b);
             gDoc->setModified();
         },
@@ -177,9 +179,9 @@ void AxesPanel::createPanelElements()
     zFormLayout->addRow("Log range:", logRangeSpinBox);
 
     zFormLayout->addRow(GUI::Util::createCheckBox(
-        "Visible", [this] { return currentData2DItem()->zAxisItem()->isVisible(); },
+        "Visible", [this] { return m_daw.currentData2DItem()->zAxisItem()->isVisible(); },
         [this](bool b) {
-            for (auto* item : allData2DItems())
+            for (auto* item : m_daw.allData2DItems())
                 item->zAxisItem()->setVisible(b);
             gDoc->setModified();
         },
@@ -190,8 +192,8 @@ void AxesPanel::createPanelElements()
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    connect(currentData2DItem(), &DataItem::itemAxesRangeChanged, this, &AxesPanel::updateUIValues,
-            Qt::UniqueConnection);
+    connect(m_daw.currentData2DItem(), &DataItem::itemAxesRangeChanged, this,
+            &AxesPanel::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
     /*
diff --git a/GUI/View/Setup/AxesPanel.h b/GUI/View/Setup/AxesPanel.h
index 4a0ab08a5977efe9105d9a6e36b5925d381caad6..5fc2b589ee1de01b0311d735fba34eb196dcc513 100644
--- a/GUI/View/Setup/AxesPanel.h
+++ b/GUI/View/Setup/AxesPanel.h
@@ -20,7 +20,6 @@
 //! Widget to edit properties of an Data2DItem.
 
 class AxesPanel : public DataPropertyWidget {
-    Q_OBJECT
 private:
     void createPanelElements() override;
 };
diff --git a/GUI/View/Setup/AxisPanel.cpp b/GUI/View/Setup/AxisPanel.cpp
index 7ef75e7466082901bd9b571e4df71e007da03fc2..4d8e44cc83d64c133f44ca3d9e0a08a931a96ac5 100644
--- a/GUI/View/Setup/AxisPanel.cpp
+++ b/GUI/View/Setup/AxisPanel.cpp
@@ -29,10 +29,10 @@
 
 void AxisPanel::createPanelElements()
 {
-    if (allData1DItems().empty())
+    if (m_daw.allData1DItems().empty())
         return;
 
-    for (auto* item : allData1DItems())
+    for (auto* item : m_daw.allData1DItems())
         disconnect(item, nullptr, this, nullptr);
 
     GUI::Util::Layout::clearLayout(m_main_layout);
@@ -59,18 +59,18 @@ void AxisPanel::createPanelElements()
     xFormLayout->setSpacing(5);
 
     xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData1DItem()->axItemX()->min(); },
+                                    [this] { return m_daw.currentData1DItem()->axItemX()->min(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData1DItems())
+                                        for (auto* item : m_daw.allData1DItems())
                                             item->axItemX()->setMin(newValue);
                                         gDoc->setModified();
                                     },
                                     &m_updaters));
 
     xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData1DItem()->axItemX()->max(); },
+                                    [this] { return m_daw.currentData1DItem()->axItemX()->max(); },
                                     [this](double newValue) {
-                                        for (auto* item : allData1DItems())
+                                        for (auto* item : m_daw.allData1DItems())
                                             item->axItemX()->setMax(newValue);
                                         gDoc->setModified();
                                     },
@@ -85,9 +85,9 @@ void AxisPanel::createPanelElements()
     yFormLayout->setSpacing(5);
 
     auto* logRangeSpinBox = GUI::Util::createDoubleSpinBox(
-        [this] { return currentData1DItem()->axItemY()->logRangeOrders(); },
+        [this] { return m_daw.currentData1DItem()->axItemY()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto* item : mainData1DItems()) {
+            for (auto* item : m_daw.mainData1DItems()) {
                 item->axItemY()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -96,9 +96,9 @@ void AxisPanel::createPanelElements()
         &m_updaters, "Dynamic range to display values", RealLimits::positive());
 
     yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData1DItem()->axItemY()->min(); },
+                                    [this] { return m_daw.currentData1DItem()->axItemY()->min(); },
                                     [this](double newValue) {
-                                        for (auto* item : mainData1DItems()) {
+                                        for (auto* item : m_daw.mainData1DItems()) {
                                             item->axItemY()->setMin(newValue);
                                             item->axItemY()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -108,9 +108,9 @@ void AxisPanel::createPanelElements()
                                     &m_updaters));
 
     yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinBox(
-                                    [this] { return currentData1DItem()->axItemY()->max(); },
+                                    [this] { return m_daw.currentData1DItem()->axItemY()->max(); },
                                     [this](double newValue) {
-                                        for (auto* item : mainData1DItems()) {
+                                        for (auto* item : m_daw.mainData1DItems()) {
                                             item->axItemY()->setMax(newValue);
                                             item->axItemY()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -120,10 +120,10 @@ void AxisPanel::createPanelElements()
                                     &m_updaters));
 
     yFormLayout->addRow(GUI::Util::createCheckBox(
-        "log10", [this] { return currentData1DItem()->axItemY()->isLogScale(); },
+        "log10", [this] { return m_daw.currentData1DItem()->axItemY()->isLogScale(); },
         [this, logRangeSpinBox](bool b) {
             logRangeSpinBox->setEnabled(b);
-            for (auto* item : allData1DItems())
+            for (auto* item : m_daw.allData1DItems())
                 item->axItemY()->setLogScale(b);
             gDoc->setModified();
         },
@@ -136,11 +136,11 @@ void AxisPanel::createPanelElements()
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    connect(currentData1DItem(), &DataItem::itemAxesRangeChanged, this, &AxisPanel::updateUIValues,
-            Qt::UniqueConnection);
+    connect(m_daw.currentData1DItem(), &DataItem::itemAxesRangeChanged, this,
+            &AxisPanel::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
-    for (auto* item : allData1DItems())
+    for (auto* item : m_daw.allData1DItems())
         connect(item, &DataItem::axesUnitsChanged, this, &AxisPanel::updateItemCoords,
                 Qt::UniqueConnection);
 }
diff --git a/GUI/View/Setup/AxisPanel.h b/GUI/View/Setup/AxisPanel.h
index 619dc14c02dfa115604f64d28d1c2d4b9dd758d5..14107cbac13f1c04e5c0afee47bb8c587d9c2486 100644
--- a/GUI/View/Setup/AxisPanel.h
+++ b/GUI/View/Setup/AxisPanel.h
@@ -20,7 +20,6 @@
 //! Widget to edit properties of a Data1DItem.
 
 class AxisPanel : public DataPropertyWidget {
-    Q_OBJECT
 private:
     void createPanelElements() override;
 };