From 3a72557ea003ba4ba7a4bf286e0f2df3d826d314 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Wed, 4 Oct 2023 14:27:37 +0200
Subject: [PATCH] unify names -> Data1|2DItem

---
 .../{SpecularDataItem.cpp => Data1DItem.cpp}  |  60 +++++-----
 .../Data/{SpecularDataItem.h => Data1DItem.h} |  16 ++-
 .../{IntensityItem.cpp => Data2DItem.cpp}     |  90 +++++++--------
 .../Data/{IntensityItem.h => Data2DItem.h}    |  16 +--
 GUI/Model/Data/DataItem.cpp                   |   2 +-
 GUI/Model/Data/DataItem.h                     |   2 +-
 GUI/Model/Data/MaskUnitsConverter.cpp         |  18 +--
 GUI/Model/Data/MaskUnitsConverter.h           |   8 +-
 GUI/Model/Device/RealItem.cpp                 |  49 ++++----
 GUI/Model/Device/RealItem.h                   |  10 +-
 GUI/Model/Job/JobItem.cpp                     |  30 ++---
 GUI/Model/Job/JobItem.h                       |   4 +-
 GUI/Model/Model/RealModel.cpp                 |   4 +-
 GUI/Model/Project/LinkInstrumentManager.h     |   2 +-
 GUI/View/Data/DataAccessWidget.cpp            |  58 +++++-----
 GUI/View/Data/DataAccessWidget.h              |  46 ++++----
 GUI/View/Data/IntensityDataPropertyWidget.cpp |  60 +++++-----
 GUI/View/Data/IntensityDataPropertyWidget.h   |   4 +-
 GUI/View/Fit/FitSessionController.cpp         |   2 +-
 GUI/View/FitControl/GUIFitObserver.h          |   2 +-
 .../FitObjective/ParameterTuningWidget.cpp    |   6 +-
 .../FitObjective/SliderSettingsWidget.cpp     |   6 +-
 GUI/View/Import/RealDataMaskWidget.cpp        |  10 +-
 GUI/View/JobControl/JobListView.cpp           |   6 +-
 GUI/View/Mask/MaskEditorCanvas.cpp            |  40 +++----
 GUI/View/Mask/MaskEditorCanvas.h              |   8 +-
 GUI/View/Mask/MaskEditorPropertyPanel.cpp     |   6 +-
 GUI/View/Mask/MaskEditorPropertyPanel.h       |   4 +-
 GUI/View/Mask/MaskGraphicsProxy.cpp           |   6 +-
 GUI/View/Mask/MaskGraphicsProxy.h             |   4 +-
 GUI/View/Mask/MaskGraphicsScene.cpp           |  15 ++-
 GUI/View/Mask/MaskGraphicsScene.h             |   6 +-
 GUI/View/Mask/MaskResultsPresenter.cpp        |  28 ++---
 GUI/View/Mask/MaskResultsPresenter.h          |   6 +-
 GUI/View/Plot2D/ColorMapCanvas.cpp            |   6 +-
 GUI/View/Plot2D/ColorMapCanvas.h              |   4 +-
 GUI/View/Plot2D/IntensityDataCanvas.cpp       |  16 +--
 GUI/View/Plot2D/IntensityDataCanvas.h         |   6 +-
 GUI/View/Plot2D/IntensityDataFFTPresenter.cpp |   6 +-
 GUI/View/Plot2D/IntensityDataFFTPresenter.h   |  10 +-
 GUI/View/Plot2D/IntensityDataWidget.cpp       |   6 +-
 GUI/View/PlotComparison/Fitpair1DWidget.cpp   |  46 ++++----
 GUI/View/PlotComparison/Fitpair1DWidget.h     |   2 +-
 GUI/View/PlotComparison/Fitpair2DWidget.cpp   |  52 ++++-----
 GUI/View/PlotScale/ColorMap.cpp               |  55 +++++----
 GUI/View/PlotScale/ColorMap.h                 |  10 +-
 GUI/View/PlotScale/RangeUtil.cpp              |  16 +--
 GUI/View/PlotScale/RangeUtil.h                |   8 +-
 GUI/View/PlotSpecular/SpecularDataCanvas.cpp  |   8 +-
 GUI/View/PlotSpecular/SpecularDataCanvas.h    |   2 +-
 .../SpecularDataPropertyWidget.cpp            | 106 +++++++++---------
 .../PlotSpecular/SpecularDataPropertyWidget.h |   2 +-
 GUI/View/PlotSpecular/SpecularDataWidget.cpp  |   2 +-
 GUI/View/PlotSpecular/SpecularDataWidget.h    |   2 +-
 GUI/View/PlotSpecular/SpecularPlot.cpp        |  70 ++++++------
 GUI/View/PlotSpecular/SpecularPlot.h          |  22 ++--
 GUI/View/PlotSpecular/SpecularPlotCanvas.cpp  |   6 +-
 GUI/View/PlotSpecular/SpecularPlotCanvas.h    |   4 +-
 .../IntensityDataProjectionsWidget.cpp        |  14 +--
 .../IntensityDataProjectionsWidget.h          |   2 +-
 .../Projection/ProjectionsEditorActions.cpp   |  12 +-
 .../Projection/ProjectionsEditorActions.h     |   6 +-
 .../Projection/ProjectionsEditorCanvas.cpp    |  34 +++---
 GUI/View/Projection/ProjectionsEditorCanvas.h |   6 +-
 GUI/View/Projection/ProjectionsPlot.cpp       |  82 +++++++-------
 GUI/View/Projection/ProjectionsPlot.h         |  10 +-
 GUI/View/Projection/ProjectionsWidget.cpp     |   8 +-
 GUI/View/Projection/ProjectionsWidget.h       |   4 +-
 .../Projection/SaveProjectionsAssistant.cpp   |  24 ++--
 .../Projection/SaveProjectionsAssistant.h     |  11 +-
 Tests/Unit/GUI/TestAutosaveController.cpp     |   8 +-
 Tests/Unit/GUI/TestProjectDocument.cpp        |   8 +-
 72 files changed, 659 insertions(+), 671 deletions(-)
 rename GUI/Model/Data/{SpecularDataItem.cpp => Data1DItem.cpp} (83%)
 rename GUI/Model/Data/{SpecularDataItem.h => Data1DItem.h} (82%)
 rename GUI/Model/Data/{IntensityItem.cpp => Data2DItem.cpp} (79%)
 rename GUI/Model/Data/{IntensityItem.h => Data2DItem.h} (91%)

diff --git a/GUI/Model/Data/SpecularDataItem.cpp b/GUI/Model/Data/Data1DItem.cpp
similarity index 83%
rename from GUI/Model/Data/SpecularDataItem.cpp
rename to GUI/Model/Data/Data1DItem.cpp
index aafa23a4a1e..f3316dda8d1 100644
--- a/GUI/Model/Data/SpecularDataItem.cpp
+++ b/GUI/Model/Data/Data1DItem.cpp
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Data/SpecularDataItem.cpp
-//! @brief     Implements class SpecularDataItem
+//! @file      GUI/Model/Data/Data1DItem.cpp
+//! @brief     Implements class Data1DItem
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "Base/Axis/Frame.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Util/Assert.h"
@@ -53,7 +53,7 @@ const QMap<QString, QCPGraph::LineStyle> line_map = {
 
 } // namespace
 
-SpecularDataItem::SpecularDataItem()
+Data1DItem::Data1DItem()
     : DataItem(M_TYPE)
     , m_lineType(line_map.key(QCPGraph::LineStyle::lsLine))
     , m_color(Qt::blue)
@@ -64,124 +64,124 @@ SpecularDataItem::SpecularDataItem()
     setSimuPlotStyle();
 }
 
-void SpecularDataItem::setDatafield(const Datafield& data)
+void Data1DItem::setDatafield(const Datafield& data)
 {
     ASSERT(data.rank() == 1);
     DataItem::setDatafield(data);
     updateAxesZoomLevel();
 }
 
-double SpecularDataItem::xMin() const
+double Data1DItem::xMin() const
 {
     const double defaultXmin(0.0);
     return m_datafield ? m_datafield->axis(0).min() : defaultXmin;
 }
 
-double SpecularDataItem::xMax() const
+double Data1DItem::xMax() const
 {
     const double defaultXmax(1.0);
     return m_datafield ? m_datafield->axis(0).max() : defaultXmax;
 }
 
-double SpecularDataItem::yMin() const
+double Data1DItem::yMin() const
 {
     return dataRange().first;
 }
 
-double SpecularDataItem::yMax() const
+double Data1DItem::yMax() const
 {
     return dataRange().second;
 }
 
-bool SpecularDataItem::isLog() const
+bool Data1DItem::isLog() const
 {
     return yAxisItem()->isLogScale();
 }
 
-void SpecularDataItem::setLog(bool islog)
+void Data1DItem::setLog(bool islog)
 {
     yAxisItem()->setLogScale(islog);
 }
 
-std::vector<int> SpecularDataItem::shape() const
+std::vector<int> Data1DItem::shape() const
 {
     return {xSize()};
 }
 
-QCPGraph::LineStyle SpecularDataItem::lineStyle()
+QCPGraph::LineStyle Data1DItem::lineStyle()
 {
     return line_map.value(m_lineType);
 }
 
-void SpecularDataItem::setLineStyle(QCPGraph::LineStyle lineStyle)
+void Data1DItem::setLineStyle(QCPGraph::LineStyle lineStyle)
 {
     ASSERT(line_map.values().contains(lineStyle));
     m_lineType = line_map.key(lineStyle);
 }
 
-QColor SpecularDataItem::color()
+QColor Data1DItem::color()
 {
     return m_color;
 }
 
-void SpecularDataItem::setColor(Qt::GlobalColor color)
+void Data1DItem::setColor(Qt::GlobalColor color)
 {
     m_color = color;
 }
 
-double SpecularDataItem::thickness()
+double Data1DItem::thickness()
 {
     return m_thickness;
 }
 
-void SpecularDataItem::setThickness(double thickness)
+void Data1DItem::setThickness(double thickness)
 {
     m_thickness = thickness;
 }
 
-QCPScatterStyle::ScatterShape SpecularDataItem::scatter()
+QCPScatterStyle::ScatterShape Data1DItem::scatter()
 {
     return scatter_map.value(m_scatterType);
 }
 
-void SpecularDataItem::setScatter(QCPScatterStyle::ScatterShape scatter)
+void Data1DItem::setScatter(QCPScatterStyle::ScatterShape scatter)
 {
     ASSERT(scatter_map.values().contains(scatter));
     m_scatterType = scatter_map.key(scatter);
 }
 
-double SpecularDataItem::scatterSize()
+double Data1DItem::scatterSize()
 {
     return m_scatterSize;
 }
 
-void SpecularDataItem::setScatterSize(double scatterSize)
+void Data1DItem::setScatterSize(double scatterSize)
 {
     m_scatterSize = scatterSize;
 }
 
-void SpecularDataItem::setSimuPlotStyle()
+void Data1DItem::setSimuPlotStyle()
 {
     setScatter(QCPScatterStyle::ScatterShape::ssNone);
     setColor(Qt::GlobalColor::blue);
     setLineStyle(QCPGraph::LineStyle::lsLine);
 }
 
-void SpecularDataItem::setDiffPlotStyle()
+void Data1DItem::setDiffPlotStyle()
 {
     setScatter(QCPScatterStyle::ScatterShape::ssNone);
     setColor(Qt::GlobalColor::black);
     setLineStyle(QCPGraph::LineStyle::lsLine);
 }
 
-void SpecularDataItem::setRealPlotStyle()
+void Data1DItem::setRealPlotStyle()
 {
     setScatter(QCPScatterStyle::ScatterShape::ssDisc);
     setColor(Qt::GlobalColor::black);
     setLineStyle(QCPGraph::LineStyle::lsNone);
 }
 
-void SpecularDataItem::writeTo(QXmlStreamWriter* w) const
+void Data1DItem::writeTo(QXmlStreamWriter* w) const
 {
     XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
@@ -216,7 +216,7 @@ void SpecularDataItem::writeTo(QXmlStreamWriter* w) const
     w->writeEndElement();
 }
 
-void SpecularDataItem::readFrom(QXmlStreamReader* r)
+void Data1DItem::readFrom(QXmlStreamReader* r)
 {
     const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
     Q_UNUSED(version)
@@ -263,7 +263,7 @@ void SpecularDataItem::readFrom(QXmlStreamReader* r)
 
 //! Sets zoom range of X,Y axes, if it was not yet defined.
 
-void SpecularDataItem::updateAxesZoomLevel()
+void Data1DItem::updateAxesZoomLevel()
 {
     // set zoom range of x-axis to min, max values if it was not set already
     if (upperX() < lowerX()) {
@@ -281,7 +281,7 @@ void SpecularDataItem::updateAxesZoomLevel()
     xAxisItem()->setBinCount(nx);
 }
 
-QPair<double, double> SpecularDataItem::dataRange() const
+QPair<double, double> Data1DItem::dataRange() const
 {
     const double default_min = 0.0;
     const double default_max = 1.0;
@@ -305,7 +305,7 @@ QPair<double, double> SpecularDataItem::dataRange() const
     return QPair<double, double>(min, max);
 }
 
-void SpecularDataItem::resetView()
+void Data1DItem::resetView()
 {
     if (m_datafield)
         setAxesRangeToData();
diff --git a/GUI/Model/Data/SpecularDataItem.h b/GUI/Model/Data/Data1DItem.h
similarity index 82%
rename from GUI/Model/Data/SpecularDataItem.h
rename to GUI/Model/Data/Data1DItem.h
index 2bca738fa6d..13af2accdb9 100644
--- a/GUI/Model/Data/SpecularDataItem.h
+++ b/GUI/Model/Data/Data1DItem.h
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Data/SpecularDataItem.h
-//! @brief     Defines class SpecularDataItem
+//! @file      GUI/Model/Data/Data1DItem.h
+//! @brief     Defines class Data1DItem
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,28 +12,26 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DATA_SPECULARDATAITEM_H
-#define BORNAGAIN_GUI_MODEL_DATA_SPECULARDATAITEM_H
+#ifndef BORNAGAIN_GUI_MODEL_DATA_DATA1DITEM_H
+#define BORNAGAIN_GUI_MODEL_DATA_DATA1DITEM_H
 
 #include "GUI/Model/Data/DataItem.h"
 #include <qcustomplot.h>
 
-class SpecularDataItem : public DataItem {
+class Data1DItem : public DataItem {
     Q_OBJECT
 public:
     static constexpr auto M_TYPE{"SpecularData"};
 
-    SpecularDataItem();
+    Data1DItem();
 
     // TODO: consider using index-based functions for axes' handlers
 
     void setDatafield(const Datafield& data) override;
 
-    // Returns min and max range of x-axis as given by IntensityData
     double xMin() const override;
     double xMax() const override;
 
-    // Returns min and max range of y-axis as given by data
     double yMin() const override;
     double yMax() const override;
     QPair<double, double> dataRange() const;
@@ -87,4 +85,4 @@ private:
     double m_scatterSize;
 };
 
-#endif // BORNAGAIN_GUI_MODEL_DATA_SPECULARDATAITEM_H
+#endif // BORNAGAIN_GUI_MODEL_DATA_DATA1DITEM_H
diff --git a/GUI/Model/Data/IntensityItem.cpp b/GUI/Model/Data/Data2DItem.cpp
similarity index 79%
rename from GUI/Model/Data/IntensityItem.cpp
rename to GUI/Model/Data/Data2DItem.cpp
index 46125f692b2..3bbfe9d2e53 100644
--- a/GUI/Model/Data/IntensityItem.cpp
+++ b/GUI/Model/Data/Data2DItem.cpp
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Data/IntensityItem.cpp
-//! @brief     Implements class IntensityItem
+//! @file      GUI/Model/Data/Data2DItem.cpp
+//! @brief     Implements class Data2DItem
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "Base/Axis/Frame.h"
 #include "Base/Axis/Scale.h"
 #include "Base/Util/Assert.h"
@@ -60,7 +60,7 @@ QString startGradient = "Inferno";
 
 } // namespace
 
-IntensityItem::IntensityItem()
+Data2DItem::Data2DItem()
     : DataItem(M_TYPE)
     , m_isInterpolated(true)
     , m_gradient(
@@ -69,9 +69,9 @@ IntensityItem::IntensityItem()
 {
 }
 
-IntensityItem::~IntensityItem() = default;
+Data2DItem::~Data2DItem() = default;
 
-void IntensityItem::setDatafield(const Datafield& data)
+void Data2DItem::setDatafield(const Datafield& data)
 {
     ASSERT(data.rank() == 2);
     DataItem::setDatafield(data);
@@ -79,53 +79,53 @@ void IntensityItem::setDatafield(const Datafield& data)
     updateDataRange();
 }
 
-double IntensityItem::xMin() const
+double Data2DItem::xMin() const
 {
     const double defaultXmin(0.0);
     return m_datafield ? m_datafield->axis(0).min() : defaultXmin;
 }
 
-double IntensityItem::xMax() const
+double Data2DItem::xMax() const
 {
     const double defaultXmax(1.0);
     return m_datafield ? m_datafield->axis(0).max() : defaultXmax;
 }
 
-double IntensityItem::yMin() const
+double Data2DItem::yMin() const
 {
     const double defaultYmin(0.0);
     return m_datafield ? m_datafield->axis(1).min() : defaultYmin;
 }
 
-double IntensityItem::yMax() const
+double Data2DItem::yMax() const
 {
     const double defaultYmax(1.0);
     return m_datafield ? m_datafield->axis(1).max() : defaultYmax;
 }
 
-double IntensityItem::lowerZ() const
+double Data2DItem::lowerZ() const
 {
     return zAxisItem()->min();
 }
 
-double IntensityItem::upperZ() const
+double Data2DItem::upperZ() const
 {
     return zAxisItem()->max();
 }
 
-void IntensityItem::setLowerZ(double zmin)
+void Data2DItem::setLowerZ(double zmin)
 {
     zAxisItem()->setMin(zmin);
     emit itemAxesRangeChanged();
 }
 
-void IntensityItem::setUpperZ(double zmax)
+void Data2DItem::setUpperZ(double zmax)
 {
     zAxisItem()->setMax(zmax);
     emit itemAxesRangeChanged();
 }
 
-void IntensityItem::setLowerAndUpperZ(double zmin, double zmax)
+void Data2DItem::setLowerAndUpperZ(double zmin, double zmax)
 {
     if (lowerZ() != zmin)
         setLowerZ(zmin);
@@ -134,16 +134,16 @@ void IntensityItem::setLowerAndUpperZ(double zmin, double zmax)
         setUpperZ(zmax);
 }
 
-void IntensityItem::copyZRangeFromItem(DataItem* sourceItem)
+void Data2DItem::copyZRangeFromItem(DataItem* sourceItem)
 {
-    IntensityItem* source = dynamic_cast<IntensityItem*>(sourceItem);
+    Data2DItem* source = dynamic_cast<Data2DItem*>(sourceItem);
     if (!source || source == this)
         return;
     setLowerZ(source->lowerZ());
     setUpperZ(source->upperZ());
 }
 
-QCPColorGradient IntensityItem::currentGradientQCP() const
+QCPColorGradient Data2DItem::currentGradientQCP() const
 {
     if (gradient_map.contains(currentGradient()))
         return gradient_map.value(currentGradient());
@@ -151,61 +151,61 @@ QCPColorGradient IntensityItem::currentGradientQCP() const
         return custom_gradient_map.value(currentGradient());
 }
 
-QString IntensityItem::currentGradient() const
+QString Data2DItem::currentGradient() const
 {
     return gradientCombo().currentValue();
 }
 
-void IntensityItem::setCurrentGradient(const QString& gradient)
+void Data2DItem::setCurrentGradient(const QString& gradient)
 {
     m_gradient.setCurrentValue(gradient);
     emit gradientChanged();
 }
 
-ComboProperty IntensityItem::gradientCombo() const
+ComboProperty Data2DItem::gradientCombo() const
 {
     return m_gradient;
 }
 
-bool IntensityItem::isLog() const
+bool Data2DItem::isLog() const
 {
     return zAxisItem()->isLogScale();
 }
 
-void IntensityItem::setLog(bool islog)
+void Data2DItem::setLog(bool islog)
 {
     zAxisItem()->setLogScale(islog);
 }
 
-bool IntensityItem::isInterpolated() const
+bool Data2DItem::isInterpolated() const
 {
     return m_isInterpolated;
 }
 
-void IntensityItem::setInterpolated(bool interp)
+void Data2DItem::setInterpolated(bool interp)
 {
     m_isInterpolated = interp;
     emit interpolationChanged(interp);
 }
 
-bool IntensityItem::isZaxisLocked() const
+bool Data2DItem::isZaxisLocked() const
 {
     return m_zAxis->isLocked();
 }
 
-void IntensityItem::setZaxisLocked(bool state)
+void Data2DItem::setZaxisLocked(bool state)
 {
     return m_zAxis->setLocked(state);
 }
 
-std::vector<int> IntensityItem::shape() const
+std::vector<int> Data2DItem::shape() const
 {
     return {xSize(), ySize()};
 }
 
 //! Sets zoom range of X,Y axes, if it was not yet defined.
 
-void IntensityItem::updateAxesZoomLevel()
+void Data2DItem::updateAxesZoomLevel()
 {
     // set zoom range of x-axis to min, max values if it was not set already
     if (upperX() < lowerX()) {
@@ -227,7 +227,7 @@ void IntensityItem::updateAxesZoomLevel()
 
 //! Sets min,max values for z-axis, if axes is not locked, and ranges are not yet set.
 
-void IntensityItem::updateDataRange()
+void Data2DItem::updateDataRange()
 {
     if (isZaxisLocked())
         return;
@@ -236,13 +236,13 @@ void IntensityItem::updateDataRange()
     emit alignRanges();
 }
 
-void IntensityItem::computeDataRange()
+void Data2DItem::computeDataRange()
 {
     setLowerAndUpperZ(dataRange().first, dataRange().second);
 }
 
 //! Init zmin, zmax to match the intensity values range.
-QPair<double, double> IntensityItem::dataRange() const
+QPair<double, double> Data2DItem::dataRange() const
 {
     const Datafield* data = c_field();
 
@@ -260,17 +260,17 @@ QPair<double, double> IntensityItem::dataRange() const
     return QPair<double, double>(min, max);
 }
 
-const AmplitudeAxisItem* IntensityItem::zAxisItem() const
+const AmplitudeAxisItem* Data2DItem::zAxisItem() const
 {
     return m_zAxis.get();
 }
 
-AmplitudeAxisItem* IntensityItem::zAxisItem()
+AmplitudeAxisItem* Data2DItem::zAxisItem()
 {
     return m_zAxis.get();
 }
 
-void IntensityItem::resetView()
+void Data2DItem::resetView()
 {
     if (!m_datafield)
         return;
@@ -280,7 +280,7 @@ void IntensityItem::resetView()
         computeDataRange();
 }
 
-void IntensityItem::writeTo(QXmlStreamWriter* w) const
+void Data2DItem::writeTo(QXmlStreamWriter* w) const
 {
     XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
@@ -319,7 +319,7 @@ void IntensityItem::writeTo(QXmlStreamWriter* w) const
     }
 }
 
-void IntensityItem::readFrom(QXmlStreamReader* r)
+void Data2DItem::readFrom(QXmlStreamReader* r)
 {
     const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
     Q_UNUSED(version)
@@ -362,17 +362,17 @@ void IntensityItem::readFrom(QXmlStreamReader* r)
     }
 }
 
-MaskContainerItem* IntensityItem::maskContainerItem()
+MaskContainerItem* Data2DItem::maskContainerItem()
 {
     return m_maskContainerItem.get();
 }
 
-const MaskContainerItem* IntensityItem::maskContainerItem() const
+const MaskContainerItem* Data2DItem::maskContainerItem() const
 {
     return m_maskContainerItem.get();
 }
 
-MaskContainerItem* IntensityItem::getOrCreateMaskContainerItem()
+MaskContainerItem* Data2DItem::getOrCreateMaskContainerItem()
 {
     if (!m_maskContainerItem)
         m_maskContainerItem.reset(new MaskContainerItem);
@@ -380,17 +380,17 @@ MaskContainerItem* IntensityItem::getOrCreateMaskContainerItem()
     return m_maskContainerItem.get();
 }
 
-ProjectionContainerItem* IntensityItem::projectionContainerItem()
+ProjectionContainerItem* Data2DItem::projectionContainerItem()
 {
     return m_projectionContainerItem.get();
 }
 
-const ProjectionContainerItem* IntensityItem::projectionContainerItem() const
+const ProjectionContainerItem* Data2DItem::projectionContainerItem() const
 {
     return m_projectionContainerItem.get();
 }
 
-ProjectionContainerItem* IntensityItem::getOrCreateProjectionContainerItem()
+ProjectionContainerItem* Data2DItem::getOrCreateProjectionContainerItem()
 {
     if (!m_projectionContainerItem)
         m_projectionContainerItem.reset(new ProjectionContainerItem);
@@ -398,12 +398,12 @@ ProjectionContainerItem* IntensityItem::getOrCreateProjectionContainerItem()
     return m_projectionContainerItem.get();
 }
 
-bool IntensityItem::hasMasks() const
+bool Data2DItem::hasMasks() const
 {
     return (maskContainerItem() && !maskContainerItem()->isEmpty());
 }
 
-bool IntensityItem::hasProjections() const
+bool Data2DItem::hasProjections() const
 {
     return (projectionContainerItem() && !projectionContainerItem()->isEmpty());
 }
diff --git a/GUI/Model/Data/IntensityItem.h b/GUI/Model/Data/Data2DItem.h
similarity index 91%
rename from GUI/Model/Data/IntensityItem.h
rename to GUI/Model/Data/Data2DItem.h
index 9718c050065..eaa6911381e 100644
--- a/GUI/Model/Data/IntensityItem.h
+++ b/GUI/Model/Data/Data2DItem.h
@@ -2,8 +2,8 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Data/IntensityItem.h
-//! @brief     Defines class IntensityItem
+//! @file      GUI/Model/Data/Data2DItem.h
+//! @brief     Defines class Data2DItem
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DATA_INTENSITYITEM_H
-#define BORNAGAIN_GUI_MODEL_DATA_INTENSITYITEM_H
+#ifndef BORNAGAIN_GUI_MODEL_DATA_DATA2DITEM_H
+#define BORNAGAIN_GUI_MODEL_DATA_DATA2DITEM_H
 
 #include "GUI/Model/Data/DataItem.h"
 
@@ -23,14 +23,14 @@ class MaskItemObject;
 class ProjectionContainerItem;
 class QCPColorGradient;
 
-class IntensityItem : public DataItem {
+class Data2DItem : public DataItem {
     Q_OBJECT
 
 public:
     static constexpr auto M_TYPE{"IntensityData"};
 
-    IntensityItem();
-    ~IntensityItem();
+    Data2DItem();
+    ~Data2DItem();
 
     void setDatafield(const Datafield& data) override;
 
@@ -119,4 +119,4 @@ private:
     std::unique_ptr<ProjectionContainerItem> m_projectionContainerItem;
 };
 
-#endif // BORNAGAIN_GUI_MODEL_DATA_INTENSITYITEM_H
+#endif // BORNAGAIN_GUI_MODEL_DATA_DATA2DITEM_H
diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 74fedf6f81a..d3f11e8d9a7 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit reflection and scattering
 //
 //! @file      GUI/Model/Data/DataItem.cpp
-//! @brief     Implements class IntensityItem
+//! @brief     Implements class Data2DItem
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 6776f441e36..d6ea4c9259e 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -26,7 +26,7 @@ class Datafield;
 class Frame;
 class MessageService;
 
-//! Abstract base class for IntensityItem and SpecularDataItem.
+//! Abstract base class for Data2DItem and Data1DItem.
 //! Owns one simulated data set of type Datafield.
 
 //! For experimental data, use RealItem.
diff --git a/GUI/Model/Data/MaskUnitsConverter.cpp b/GUI/Model/Data/MaskUnitsConverter.cpp
index b552ac62933..f55d02fc97a 100644
--- a/GUI/Model/Data/MaskUnitsConverter.cpp
+++ b/GUI/Model/Data/MaskUnitsConverter.cpp
@@ -15,7 +15,7 @@
 #include "GUI/Model/Data/MaskUnitsConverter.h"
 #include "Base/Axis/FrameUtil.h"
 #include "Device/Data/Datafield.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 MaskUnitsConverter::MaskUnitsConverter()
     : m_data(nullptr)
@@ -23,26 +23,26 @@ MaskUnitsConverter::MaskUnitsConverter()
 {
 }
 
-//! Converts all masks on board of IntensityItem into bin-fraction coordinates.
+//! Converts all masks on board of Data2DItem into bin-fraction coordinates.
 
-void MaskUnitsConverter::convertToNbins(IntensityItem* intensityData)
+void MaskUnitsConverter::convertToNbins(Data2DItem* intensityData)
 {
     m_direction = TO_NBINS;
-    convertIntensityItem(intensityData);
+    convertData2DItem(intensityData);
 }
 
-//! Converts all masks on board of IntensityItem from bin-fraction coordinates to coordinates
+//! Converts all masks on board of Data2DItem from bin-fraction coordinates to coordinates
 //! of axes currently defined in Datafield.
 
-void MaskUnitsConverter::convertFromNbins(IntensityItem* intensityData)
+void MaskUnitsConverter::convertFromNbins(Data2DItem* intensityData)
 {
     m_direction = FROM_NBINS;
-    convertIntensityItem(intensityData);
+    convertData2DItem(intensityData);
 }
 
-//! Converts all masks on board of IntensityItem from/to bin-fraction coordinates
+//! Converts all masks on board of Data2DItem from/to bin-fraction coordinates
 
-void MaskUnitsConverter::convertIntensityItem(IntensityItem* intensityData)
+void MaskUnitsConverter::convertData2DItem(Data2DItem* intensityData)
 {
     if (!intensityData || !intensityData->c_field())
         return;
diff --git a/GUI/Model/Data/MaskUnitsConverter.h b/GUI/Model/Data/MaskUnitsConverter.h
index f25315c6b48..7732bf3b2e9 100644
--- a/GUI/Model/Data/MaskUnitsConverter.h
+++ b/GUI/Model/Data/MaskUnitsConverter.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_MODEL_DATA_MASKUNITSCONVERTER_H
 #define BORNAGAIN_GUI_MODEL_DATA_MASKUNITSCONVERTER_H
 
-class IntensityItem;
+class Data2DItem;
 class Datafield;
 class MaskItem;
 
@@ -32,13 +32,13 @@ public:
 
     MaskUnitsConverter();
 
-    void convertToNbins(IntensityItem* intensityData);
-    void convertFromNbins(IntensityItem* intensityData);
+    void convertToNbins(Data2DItem* intensityData);
+    void convertFromNbins(Data2DItem* intensityData);
 
 private:
     enum class Axis { X, Y };
 
-    void convertIntensityItem(IntensityItem* intensityData);
+    void convertData2DItem(Data2DItem* intensityData);
     void convertMask(MaskItem* maskItem);
 
     double convert(double value, Axis axis);
diff --git a/GUI/Model/Device/RealItem.cpp b/GUI/Model/Device/RealItem.cpp
index d93ac12ce3a..c7900a4231d 100644
--- a/GUI/Model/Device/RealItem.cpp
+++ b/GUI/Model/Device/RealItem.cpp
@@ -18,9 +18,9 @@
 #include "Device/Data/DataUtil.h"
 #include "Device/Data/Datafield.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/ProjectionItems.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
 #include "GUI/Model/Device/InstrumentItems.h"
 #include "GUI/Support/Util/ItemFileNameUtil.h"
 #include "GUI/Support/XML/Backup.h"
@@ -47,20 +47,20 @@ const QString PresentationType("PresentationType");
 void initDataItem(const std::size_t rank, std::unique_ptr<DataItem>& dataItem)
 {
     // TODO: initDataItem can be replaced by a template which accepts only
-    // SpecularDataItem or IntensityItem.
+    // Data1DItem or Data2DItem.
 
     ASSERT(rank == 1 || rank == 2);
 
     if (dataItem) {
-        if ((rank == 1 && !dynamic_cast<const SpecularDataItem*>(dataItem.get()))
-            || (rank == 2 && !dynamic_cast<const IntensityItem*>(dataItem.get())))
+        if ((rank == 1 && !dynamic_cast<const Data1DItem*>(dataItem.get()))
+            || (rank == 2 && !dynamic_cast<const Data2DItem*>(dataItem.get())))
             throw std::runtime_error("Error in RealItem::initDataItem: trying to set data "
                                      "incompatible with underlying data item");
     } else {
         if (rank == 1)
-            dataItem = std::make_unique<SpecularDataItem>();
+            dataItem = std::make_unique<Data1DItem>();
         else // if rank == 2
-            dataItem = std::make_unique<IntensityItem>();
+            dataItem = std::make_unique<Data2DItem>();
     }
 }
 
@@ -97,14 +97,14 @@ DataItem* RealItem::dataItem() const
     return m_dataItem.get();
 }
 
-IntensityItem* RealItem::intensityItem() const
+Data2DItem* RealItem::data2DItem() const
 {
-    return dynamic_cast<IntensityItem*>(dataItem());
+    return dynamic_cast<Data2DItem*>(dataItem());
 }
 
-SpecularDataItem* RealItem::specularDataItem() const
+Data1DItem* RealItem::data1DItem() const
 {
-    return dynamic_cast<SpecularDataItem*>(dataItem());
+    return dynamic_cast<Data1DItem*>(dataItem());
 }
 
 void RealItem::initItemWithRank(int rank)
@@ -114,7 +114,7 @@ void RealItem::initItemWithRank(int rank)
 
 size_t RealItem::rank() const
 {
-    return specularDataItem() ? 1 : 2;
+    return data1DItem() ? 1 : 2;
 }
 
 bool RealItem::hasNativeData() const
@@ -216,10 +216,10 @@ bool RealItem::rotationAffectsSetup() const
     if (hasLinkToInstrument)
         return true;
 
-    if (intensityItem()->hasMasks())
+    if (data2DItem()->hasMasks())
         return true;
 
-    if (intensityItem()->hasProjections())
+    if (data2DItem()->hasProjections())
         return true;
 
     return false;
@@ -233,25 +233,24 @@ void RealItem::rotateData()
     // -- first break instrument link, clear masks and projections
     unlinkFromInstrument();
 
-    if (MaskContainerItem* maskContainer = intensityItem()->maskContainerItem())
+    if (MaskContainerItem* maskContainer = data2DItem()->maskContainerItem())
         maskContainer->clear();
 
-    if (ProjectionContainerItem* projectionsContainer =
-            intensityItem()->projectionContainerItem()) {
+    if (ProjectionContainerItem* projectionsContainer = data2DItem()->projectionContainerItem()) {
         projectionsContainer->clear();
     }
 
     // -- now rotate data
-    const Datafield& input = intensityItem()->d_field();
+    const Datafield& input = data2DItem()->d_field();
     const Datafield output = DataUtil::createRearrangedDataSet(input, 1);
 
     // upd AxesItems
-    intensityItem()->xAxisItem()->setBinCount(output.xAxis().size());
-    intensityItem()->yAxisItem()->setBinCount(output.yAxis().size());
+    data2DItem()->xAxisItem()->setBinCount(output.xAxis().size());
+    data2DItem()->yAxisItem()->setBinCount(output.yAxis().size());
 
     // apply rotated data
-    intensityItem()->setDatafield(output);
-    intensityItem()->setAxesRangeToData();
+    data2DItem()->setDatafield(output);
+    data2DItem()->setAxesRangeToData();
 }
 
 //! Updates the name of file to store intensity data.
@@ -335,9 +334,9 @@ void RealItem::readFrom(QXmlStreamReader* r)
         } else if (tag == Tag::Data) {
             QString type;
             XML::readAttribute(r, XML::Attrib::type, &type);
-            if (type == SpecularDataItem::M_TYPE)
+            if (type == Data1DItem::M_TYPE)
                 initItemWithRank(1);
-            else if (type == IntensityItem::M_TYPE)
+            else if (type == Data2DItem::M_TYPE)
                 initItemWithRank(2);
             else
                 ASSERT_NEVER;
@@ -414,7 +413,7 @@ std::vector<int> RealItem::shape() const
 
 MaskContainerItem* RealItem::maskContainerItem()
 {
-    if (auto* intensity_data = intensityItem())
+    if (auto* intensity_data = data2DItem())
         return intensity_data->maskContainerItem();
     return nullptr;
 }
diff --git a/GUI/Model/Device/RealItem.h b/GUI/Model/Device/RealItem.h
index aa0860351b3..e174285e7f9 100644
--- a/GUI/Model/Device/RealItem.h
+++ b/GUI/Model/Device/RealItem.h
@@ -20,10 +20,10 @@
 class Datafield;
 class DataItem;
 class InstrumentItem;
-class IntensityItem;
+class Data2DItem;
 class MaskContainerItem;
 class MessageService;
-class SpecularDataItem;
+class Data1DItem;
 class QXmlStreamReader;
 class QXmlStreamWriter;
 
@@ -49,8 +49,8 @@ public:
     // data
 
     DataItem* dataItem() const;
-    IntensityItem* intensityItem() const;
-    SpecularDataItem* specularDataItem() const;
+    Data2DItem* data2DItem() const;
+    Data1DItem* data1DItem() const;
 
     void initItemWithRank(int rank);
 
@@ -123,7 +123,7 @@ private:
     QString m_nativeDataUnits = "bin";
     QString m_presentationType;
 
-    // DataItem can be `IntensityItem` and `SpecularDataItem` (default `IntensityItem`).
+    // DataItem can be `Data2DItem` and `Data1DItem` (default `Data2DItem`).
     /*
       "Native_data" is introduced and used in specular mode to keep the original axis
       of the dataset. It also stores a copy of original intensity values inside datafield,
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 742de53c0cf..6f1f2abbcc7 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -17,8 +17,8 @@
 #include "Device/Data/Datafield.h"
 #include "Device/Detector/IDetector.h"
 #include "Device/Detector/SimulationAreaIterator.h" // roiIndex
-#include "GUI/Model/Data/IntensityItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Device/BackgroundItems.h"
 #include "GUI/Model/Device/InstrumentItems.h"
 #include "GUI/Model/Device/RealItem.h"
@@ -280,9 +280,9 @@ DataItem* JobItem::createNewDataItem()
 {
     DataItem* dataItem;
     if (isSpecularJob())
-        dataItem = new SpecularDataItem();
+        dataItem = new Data1DItem();
     else if (isIntensityJob())
-        dataItem = new IntensityItem();
+        dataItem = new Data2DItem();
     else
         ASSERT_NEVER;
 
@@ -295,9 +295,9 @@ void JobItem::createSimulatedDataItem()
     m_simulatedDataItem.reset(createNewDataItem());
 }
 
-IntensityItem* JobItem::intensityItem()
+Data2DItem* JobItem::data2DItem()
 {
-    return dynamic_cast<IntensityItem*>(m_simulatedDataItem.get());
+    return dynamic_cast<Data2DItem*>(m_simulatedDataItem.get());
 }
 
 DataItem* JobItem::simulatedDataItem()
@@ -315,7 +315,7 @@ DataItem* JobItem::createDiffDataItem()
     // TODO
 
     if (isSpecularJob())
-        dynamic_cast<SpecularDataItem*>(diffDataItem())->setDiffPlotStyle();
+        dynamic_cast<Data1DItem*>(diffDataItem())->setDiffPlotStyle();
 
     return m_diffDataItem.get();
 }
@@ -342,7 +342,7 @@ void JobItem::copyRealItemIntoJob(const RealItem* srcRealItem)
     // m_simulatedDataItem->setCurrentCoord(m_realItem->dataItem()->currentCoord());
 
     if (isSpecularJob())
-        m_realItem->specularDataItem()->setRealPlotStyle();
+        m_realItem->data1DItem()->setRealPlotStyle();
 }
 
 RealItem* JobItem::realItem()
@@ -379,21 +379,21 @@ void JobItem::cropRealData()
     ASSERT(iiI);
 
     // Adjust real data to the size of region of interest
-    IntensityItem* intensityItem = realItem()->intensityItem();
+    Data2DItem* data2DItem = realItem()->data2DItem();
 
-    std::unique_ptr<Datafield> origData(intensityItem->c_field()->clone());
+    std::unique_ptr<Datafield> origData(data2DItem->c_field()->clone());
 
     const Frame frame = iiI->makeFrame();
 
     // (re)create zero-valued Datafield.
-    intensityItem->setDatafield({frame.clonedAxes()});
+    data2DItem->setDatafield({frame.clonedAxes()});
 
     iiI->normalDetector()->iterateOverNonMaskedPoints([&](IDetector::const_iterator it) {
-        Datafield* cropped_data = intensityItem->p_field();
+        Datafield* cropped_data = data2DItem->p_field();
         (*cropped_data)[it.roiIndex()] = (*origData)[it.detectorIndex()];
     });
 
-    intensityItem->updateDataRange();
+    data2DItem->updateDataRange();
 }
 
 void JobItem::writeTo(QXmlStreamWriter* w) const
@@ -587,8 +587,8 @@ void JobItem::readFrom(QXmlStreamReader* r)
             createDiffDataItem()->checkXYranges(m_realItem->dataItem());
 
             if (isIntensityJob())
-                dynamic_cast<IntensityItem*>(diffDataItem())
-                    ->setCurrentGradient(m_realItem->intensityItem()->currentGradient());
+                dynamic_cast<Data2DItem*>(diffDataItem())
+                    ->setCurrentGradient(m_realItem->data2DItem()->currentGradient());
 
             importMasksFromRealItem();
             XML::gotoEndElementOfTag(r, tag);
diff --git a/GUI/Model/Job/JobItem.h b/GUI/Model/Job/JobItem.h
index c8e37d13a5d..f6827b85661 100644
--- a/GUI/Model/Job/JobItem.h
+++ b/GUI/Model/Job/JobItem.h
@@ -26,7 +26,7 @@ class DataItem;
 class FitParameterContainerItem;
 class FitSuiteItem;
 class InstrumentItem;
-class IntensityItem;
+class Data2DItem;
 class MessageService;
 class ParameterContainerItem;
 class ParameterTreeItems;
@@ -118,7 +118,7 @@ public:
     // data
 
     void createSimulatedDataItem();
-    IntensityItem* intensityItem();
+    Data2DItem* data2DItem();
     DataItem* simulatedDataItem();
 
     DataItem* createDiffDataItem();
diff --git a/GUI/Model/Model/RealModel.cpp b/GUI/Model/Model/RealModel.cpp
index 81e50bedfec..ec06b4f1525 100644
--- a/GUI/Model/Model/RealModel.cpp
+++ b/GUI/Model/Model/RealModel.cpp
@@ -40,8 +40,8 @@ QVector<DataItem*> RealModel::dataItems() const
 {
     QVector<DataItem*> result;
     for (auto* realData : realItems()) {
-        if (auto* intensityItem = realData->dataItem())
-            result.push_back(intensityItem);
+        if (auto* data2DItem = realData->dataItem())
+            result.push_back(data2DItem);
         if (auto* native_data_item = realData->nativeDataItem())
             result.push_back(native_data_item);
     }
diff --git a/GUI/Model/Project/LinkInstrumentManager.h b/GUI/Model/Project/LinkInstrumentManager.h
index 374c8ec823a..0dd29f6b86c 100644
--- a/GUI/Model/Project/LinkInstrumentManager.h
+++ b/GUI/Model/Project/LinkInstrumentManager.h
@@ -26,7 +26,7 @@ class RealItem;
 
 //! The LinkInstrumentManager class provides communication between InstrumentModel and
 //! RealModel. Particularly, it notifies RealItem about changes in linked instruments
-//! to adjust axes of IntensityItem.
+//! to adjust axes of Data2DItem.
 
 class LinkInstrumentManager : public QObject {
     Q_OBJECT
diff --git a/GUI/View/Data/DataAccessWidget.cpp b/GUI/View/Data/DataAccessWidget.cpp
index 35e21f3b2ed..8f666c9f543 100644
--- a/GUI/View/Data/DataAccessWidget.cpp
+++ b/GUI/View/Data/DataAccessWidget.cpp
@@ -14,8 +14,8 @@
 
 #include "GUI/View/Data/DataAccessWidget.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/IntensityItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 
 DataAccessWidget::DataAccessWidget(QWidget* parent)
     : QWidget(parent)
@@ -34,7 +34,7 @@ void DataAccessWidget::setJobOrRealItem(QObject* item)
     connect(m_item, &QObject::destroyed, this, [this]() { m_item = nullptr; });
 }
 
-void DataAccessWidget::setFourierItem(IntensityItem* fftItem)
+void DataAccessWidget::setFourierItem(Data2DItem* fftItem)
 {
     m_fftItem = fftItem;
 }
@@ -59,70 +59,70 @@ QObject* DataAccessWidget::jobRealBase() const
     return m_item;
 }
 
-SpecularDataItem* DataAccessWidget::realSpecularDataItem() const
+Data1DItem* DataAccessWidget::realData1DItem() const
 {
-    return realDataItem<SpecularDataItem>();
+    return realDataItem<Data1DItem>();
 }
 
-SpecularDataItem* DataAccessWidget::simuSpecularDataItem() const
+Data1DItem* DataAccessWidget::simuData1DItem() const
 {
-    return simuDataItem<SpecularDataItem>();
+    return simuDataItem<Data1DItem>();
 }
 
-SpecularDataItem* DataAccessWidget::diffSpecularDataItem() const
+Data1DItem* DataAccessWidget::diffData1DItem() const
 {
-    return diffDataItem<SpecularDataItem>();
+    return diffDataItem<Data1DItem>();
 }
 
-IntensityItem* DataAccessWidget::realIntensityItem() const
+Data2DItem* DataAccessWidget::realData2DItem() const
 {
-    return realDataItem<IntensityItem>();
+    return realDataItem<Data2DItem>();
 }
 
-IntensityItem* DataAccessWidget::simuIntensityItem() const
+Data2DItem* DataAccessWidget::simuData2DItem() const
 {
-    return simuDataItem<IntensityItem>();
+    return simuDataItem<Data2DItem>();
 }
 
-IntensityItem* DataAccessWidget::diffIntensityItem() const
+Data2DItem* DataAccessWidget::diffData2DItem() const
 {
-    return diffDataItem<IntensityItem>();
+    return diffDataItem<Data2DItem>();
 }
 
-QList<SpecularDataItem*> DataAccessWidget::mainSpecularDataItems() const
+QList<Data1DItem*> DataAccessWidget::mainData1DItems() const
 {
-    return mainDataItems<SpecularDataItem>();
+    return mainDataItems<Data1DItem>();
 }
 
-QList<SpecularDataItem*> DataAccessWidget::allSpecularDataItems() const
+QList<Data1DItem*> DataAccessWidget::allData1DItems() const
 {
-    return allDataItems<SpecularDataItem>();
+    return allDataItems<Data1DItem>();
 }
 
-SpecularDataItem* DataAccessWidget::currentSpecularDataItem() const
+Data1DItem* DataAccessWidget::currentData1DItem() const
 {
-    if (allSpecularDataItems().size() == 0)
+    if (allData1DItems().size() == 0)
         return nullptr;
-    return allSpecularDataItems().first();
+    return allData1DItems().first();
 }
 
-QList<IntensityItem*> DataAccessWidget::mainIntensityItems() const
+QList<Data2DItem*> DataAccessWidget::mainData2DItems() const
 {
     if (m_fftItem)
         return {m_fftItem};
-    return mainDataItems<IntensityItem>();
+    return mainDataItems<Data2DItem>();
 }
 
-QList<IntensityItem*> DataAccessWidget::allIntensityItems() const
+QList<Data2DItem*> DataAccessWidget::allData2DItems() const
 {
     if (m_fftItem)
         return {m_fftItem};
-    return allDataItems<IntensityItem>();
+    return allDataItems<Data2DItem>();
 }
 
-IntensityItem* DataAccessWidget::currentIntensityItem() const
+Data2DItem* DataAccessWidget::currentData2DItem() const
 {
-    if (allIntensityItems().size() == 0)
+    if (allData2DItems().size() == 0)
         return nullptr;
-    return allIntensityItems().first();
+    return allData2DItems().first();
 }
diff --git a/GUI/View/Data/DataAccessWidget.h b/GUI/View/Data/DataAccessWidget.h
index a601819f220..def6845e6f4 100644
--- a/GUI/View/Data/DataAccessWidget.h
+++ b/GUI/View/Data/DataAccessWidget.h
@@ -20,7 +20,7 @@
 #include <QWidget>
 
 //! The DataAccessWidget class is a base for widgets, working data, stored in JobItem or RealItem.
-//! DataAccessWidget provides an access to SpeculatDataItems and IntensityItems separately and
+//! DataAccessWidget provides an access to SpeculatDataItems and Data2DItems separately and
 //! as a list of items that is required for simultaneous, synchronous work while plotting and
 //! changing their properties.
 
@@ -32,7 +32,7 @@ public:
 
     virtual void setJobOrRealItem(QObject* item);
 
-    virtual void setFourierItem(IntensityItem* fftItem);
+    virtual void setFourierItem(Data2DItem* fftItem);
 
     virtual QList<QAction*> actionList();
 
@@ -44,49 +44,49 @@ public:
 
     // Specular
 
-    //! Real data as SpecularDataItem
-    SpecularDataItem* realSpecularDataItem() const;
+    //! Real data as Data1DItem
+    Data1DItem* realData1DItem() const;
 
-    //! Simulated data as SpecularDataItem
-    SpecularDataItem* simuSpecularDataItem() const;
+    //! Simulated data as Data1DItem
+    Data1DItem* simuData1DItem() const;
 
-    //! Difference data as SpecularDataItem
-    SpecularDataItem* diffSpecularDataItem() const;
+    //! Difference data as Data1DItem
+    Data1DItem* diffData1DItem() const;
 
     // Intensity
 
-    //! Real as IntensityItem
-    IntensityItem* realIntensityItem() const;
+    //! Real as Data2DItem
+    Data2DItem* realData2DItem() const;
 
-    //! Simulated as IntensityItem
-    IntensityItem* simuIntensityItem() const;
+    //! Simulated as Data2DItem
+    Data2DItem* simuData2DItem() const;
 
-    //! Difference as IntensityItem
-    IntensityItem* diffIntensityItem() const;
+    //! Difference as Data2DItem
+    Data2DItem* diffData2DItem() const;
 
     //... Access to lists of items:
 
     // Specular
 
     //! Simulated + real specular data as list, non-nullptr items
-    QList<SpecularDataItem*> mainSpecularDataItems() const;
+    QList<Data1DItem*> mainData1DItems() const;
 
     //! Simulated + real + difference specular data as list, non-nullptr items
-    QList<SpecularDataItem*> allSpecularDataItems() const;
+    QList<Data1DItem*> allData1DItems() const;
 
-    //! first element of allSpecularDataItems() with nullptr check
-    SpecularDataItem* currentSpecularDataItem() const;
+    //! first element of allData1DItems() with nullptr check
+    Data1DItem* currentData1DItem() const;
 
     // Intensity
 
     //! Simulated + real intensity data as list, non-nullptr items
-    QList<IntensityItem*> mainIntensityItems() const;
+    QList<Data2DItem*> mainData2DItems() const;
 
     //! Simulated + real + difference intensity data as list, non-nullptr items
-    QList<IntensityItem*> allIntensityItems() const;
+    QList<Data2DItem*> allData2DItems() const;
 
-    //! first element of allIntensityItems() with nullptr check
-    IntensityItem* currentIntensityItem() const;
+    //! first element of allData2DItems() with nullptr check
+    Data2DItem* currentData2DItem() const;
 
 private:
     template <class T>
@@ -111,7 +111,7 @@ private:
     QList<T*> allDataItems() const;
 
     QObject* m_item;
-    IntensityItem* m_fftItem;
+    Data2DItem* m_fftItem;
 };
 
 template <class T>
diff --git a/GUI/View/Data/IntensityDataPropertyWidget.cpp b/GUI/View/Data/IntensityDataPropertyWidget.cpp
index be86cc8e298..1c5c73b67c2 100644
--- a/GUI/View/Data/IntensityDataPropertyWidget.cpp
+++ b/GUI/View/Data/IntensityDataPropertyWidget.cpp
@@ -16,7 +16,7 @@
 #include "Base/Util/Assert.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Tool/LayoutUtil.h"
 #include "GUI/View/Numeric/ComboUtil.h"
@@ -29,7 +29,7 @@ IntensityDataPropertyWidget::IntensityDataPropertyWidget(QWidget* parent)
 {
 }
 
-void IntensityDataPropertyWidget::setFourierItem(IntensityItem* fftItem)
+void IntensityDataPropertyWidget::setFourierItem(Data2DItem* fftItem)
 {
     ASSERT(jobRealBase());
     DataAccessWidget::setFourierItem(fftItem);
@@ -38,13 +38,13 @@ void IntensityDataPropertyWidget::setFourierItem(IntensityItem* fftItem)
 
 void IntensityDataPropertyWidget::unsubscribe()
 {
-    for (auto item : allIntensityItems())
+    for (auto item : allData2DItems())
         disconnect(item, nullptr, this, nullptr);
 }
 
 void IntensityDataPropertyWidget::createPanelElements()
 {
-    if (allIntensityItems().size() == 0)
+    if (allData2DItems().size() == 0)
         return;
 
     unsubscribe();
@@ -55,9 +55,9 @@ void IntensityDataPropertyWidget::createPanelElements()
     m_mainLayout->addRow("Axes units:",
                          GUI::Util::createUnitsComboBox(
                              axesUnitsList(),
-                             [this] { return currentIntensityItem()->currentAxesUnits(); },
+                             [this] { return currentData2DItem()->currentAxesUnits(); },
                              [this](const QString& newVal) {
-                                 for (auto item : allIntensityItems())
+                                 for (auto item : allData2DItems())
                                      item->setCurrentAxesUnits(newVal);
                                  emit axesRangeResetRequested();
                                  gProjectDocument.value()->setModified();
@@ -67,18 +67,18 @@ void IntensityDataPropertyWidget::createPanelElements()
 
     m_mainLayout->addRow(
         "Color scheme:",
-        GUI::Util::createComboBox([this] { return currentIntensityItem()->gradientCombo(); },
+        GUI::Util::createComboBox([this] { return currentData2DItem()->gradientCombo(); },
                                   [this](const QString& newVal) {
-                                      for (auto item : allIntensityItems())
+                                      for (auto item : allData2DItems())
                                           item->setCurrentGradient(newVal);
                                       gProjectDocument.value()->setModified();
                                   },
                                   &m_updaters));
 
     m_mainLayout->addRow(GUI::Util::createCheckBox(
-        "Interpolate", [this] { return currentIntensityItem()->isInterpolated(); },
+        "Interpolate", [this] { return currentData2DItem()->isInterpolated(); },
         [this](bool b) {
-            for (auto item : allIntensityItems())
+            for (auto item : allData2DItems())
                 item->setInterpolated(b);
             gProjectDocument.value()->setModified();
         },
@@ -91,18 +91,18 @@ void IntensityDataPropertyWidget::createPanelElements()
     xFormLayout->setSpacing(5);
 
     xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->xAxisItem()->min(); },
+                                    [this] { return currentData2DItem()->xAxisItem()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allIntensityItems())
+                                        for (auto item : allData2DItems())
                                             item->xAxisItem()->setMin(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
                                     &m_updaters));
 
     xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->xAxisItem()->max(); },
+                                    [this] { return currentData2DItem()->xAxisItem()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : allIntensityItems())
+                                        for (auto item : allData2DItems())
                                             item->xAxisItem()->setMax(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -117,18 +117,18 @@ void IntensityDataPropertyWidget::createPanelElements()
     yFormLayout->setSpacing(5);
 
     yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->yAxisItem()->min(); },
+                                    [this] { return currentData2DItem()->yAxisItem()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allIntensityItems())
+                                        for (auto item : allData2DItems())
                                             item->yAxisItem()->setMin(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
                                     &m_updaters));
 
     yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->yAxisItem()->max(); },
+                                    [this] { return currentData2DItem()->yAxisItem()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : allIntensityItems())
+                                        for (auto item : allData2DItems())
                                             item->yAxisItem()->setMax(newValue);
                                         gProjectDocument.value()->setModified();
                                     },
@@ -143,9 +143,9 @@ void IntensityDataPropertyWidget::createPanelElements()
     zFormLayout->setSpacing(5);
 
     auto* logRangeSpinbox = GUI::Util::createDoubleSpinbox(
-        [this] { return currentIntensityItem()->zAxisItem()->logRangeOrders(); },
+        [this] { return currentData2DItem()->zAxisItem()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto item : mainIntensityItems()) {
+            for (auto item : mainData2DItems()) {
                 item->zAxisItem()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -154,9 +154,9 @@ void IntensityDataPropertyWidget::createPanelElements()
         &m_updaters, "Dynamic range to display values", RealLimits::positive());
 
     zFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->zAxisItem()->min(); },
+                                    [this] { return currentData2DItem()->zAxisItem()->min(); },
                                     [this](double newValue) {
-                                        for (auto item : allIntensityItems()) {
+                                        for (auto item : allData2DItems()) {
                                             item->zAxisItem()->setMin(newValue);
                                             item->zAxisItem()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -166,9 +166,9 @@ void IntensityDataPropertyWidget::createPanelElements()
                                     &m_updaters));
 
     zFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
-                                    [this] { return currentIntensityItem()->zAxisItem()->max(); },
+                                    [this] { return currentData2DItem()->zAxisItem()->max(); },
                                     [this](double newValue) {
-                                        for (auto item : mainIntensityItems()) {
+                                        for (auto item : mainData2DItems()) {
                                             item->zAxisItem()->setMax(newValue);
                                             item->zAxisItem()->adjustLogRangeOrders();
                                             updateUIValues();
@@ -178,10 +178,10 @@ void IntensityDataPropertyWidget::createPanelElements()
                                     &m_updaters));
 
     zFormLayout->addRow(GUI::Util::createCheckBox(
-        "log10", [this] { return currentIntensityItem()->zAxisItem()->isLogScale(); },
+        "log10", [this] { return currentData2DItem()->zAxisItem()->isLogScale(); },
         [this, logRangeSpinbox](bool b) {
             logRangeSpinbox->setEnabled(b);
-            for (auto item : allIntensityItems())
+            for (auto item : allData2DItems())
                 item->zAxisItem()->setLogScale(b);
             gProjectDocument.value()->setModified();
         },
@@ -190,9 +190,9 @@ void IntensityDataPropertyWidget::createPanelElements()
     zFormLayout->addRow("Log range:", logRangeSpinbox);
 
     zFormLayout->addRow(GUI::Util::createCheckBox(
-        "Visible", [this] { return currentIntensityItem()->zAxisItem()->isVisible(); },
+        "Visible", [this] { return currentData2DItem()->zAxisItem()->isVisible(); },
         [this](bool b) {
-            for (auto item : allIntensityItems())
+            for (auto item : allData2DItems())
                 item->zAxisItem()->setVisible(b);
             gProjectDocument.value()->setModified();
         },
@@ -203,12 +203,12 @@ void IntensityDataPropertyWidget::createPanelElements()
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    connect(currentIntensityItem(), &DataItem::itemAxesRangeChanged, this,
+    connect(currentData2DItem(), &DataItem::itemAxesRangeChanged, this,
             &IntensityDataPropertyWidget::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
     /*
-    for (auto item : allIntensityItems())
+    for (auto item : allData2DItems())
         connect(item, &DataItem::axesUnitsChanged, this,
                 &IntensityDataPropertyWidget::updateItemCoords, Qt::UniqueConnection);
     */
diff --git a/GUI/View/Data/IntensityDataPropertyWidget.h b/GUI/View/Data/IntensityDataPropertyWidget.h
index bc201fa209c..0560f8a4195 100644
--- a/GUI/View/Data/IntensityDataPropertyWidget.h
+++ b/GUI/View/Data/IntensityDataPropertyWidget.h
@@ -17,14 +17,14 @@
 
 #include "GUI/View/Data/DataPropertyWidget.h"
 
-//! Widget to edit properties of an IntensityItem.
+//! Widget to edit properties of an Data2DItem.
 
 class IntensityDataPropertyWidget : public DataPropertyWidget {
     Q_OBJECT
 public:
     explicit IntensityDataPropertyWidget(QWidget* parent = nullptr);
 
-    void setFourierItem(IntensityItem* fftItem) override;
+    void setFourierItem(Data2DItem* fftItem) override;
 
 private:
     void unsubscribe();
diff --git a/GUI/View/Fit/FitSessionController.cpp b/GUI/View/Fit/FitSessionController.cpp
index 3d795710dee..9b1fad6a6c6 100644
--- a/GUI/View/Fit/FitSessionController.cpp
+++ b/GUI/View/Fit/FitSessionController.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Fit/FitSessionController.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Job/FitParameterContainerItem.h"
 #include "GUI/Model/Job/FitSuiteItem.h"
 #include "GUI/Model/Job/JobItem.h"
diff --git a/GUI/View/FitControl/GUIFitObserver.h b/GUI/View/FitControl/GUIFitObserver.h
index e6a22913eb5..131a1d5a017 100644
--- a/GUI/View/FitControl/GUIFitObserver.h
+++ b/GUI/View/FitControl/GUIFitObserver.h
@@ -21,7 +21,7 @@
 #include <mutex>
 
 class Datafield;
-class IntensityItem;
+class Data2DItem;
 class FitObjective;
 
 //! Serves as observer for FitObjective and saves fit iteration data for later display
diff --git a/GUI/View/FitObjective/ParameterTuningWidget.cpp b/GUI/View/FitObjective/ParameterTuningWidget.cpp
index 1cc9606651d..0091910368c 100644
--- a/GUI/View/FitObjective/ParameterTuningWidget.cpp
+++ b/GUI/View/FitObjective/ParameterTuningWidget.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/FitObjective/ParameterTuningWidget.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Model/Model/ParameterTuningModel.h"
 #include "GUI/Model/Project/ProjectDocument.h"
@@ -127,8 +127,8 @@ void ParameterTuningWidget::onLockZValueChanged(bool value)
 {
     if (!jobItem())
         return;
-    if (IntensityItem* intensityItem = jobItem()->intensityItem())
-        intensityItem->setZaxisLocked(value);
+    if (Data2DItem* data2DItem = jobItem()->data2DItem())
+        data2DItem->setZaxisLocked(value);
 }
 
 void ParameterTuningWidget::updateParameterModel()
diff --git a/GUI/View/FitObjective/SliderSettingsWidget.cpp b/GUI/View/FitObjective/SliderSettingsWidget.cpp
index e76242df8b5..467e2a8d047 100644
--- a/GUI/View/FitObjective/SliderSettingsWidget.cpp
+++ b/GUI/View/FitObjective/SliderSettingsWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/FitObjective/SliderSettingsWidget.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include <QLabel>
 #include <QVBoxLayout>
@@ -121,6 +121,6 @@ void SliderSettingsWidget::initZlock()
     if (!jobItem())
         return;
 
-    if (auto* intensityItem = jobItem()->intensityItem())
-        m_lockzCheckBox->setChecked(intensityItem->isZaxisLocked());
+    if (auto* data2DItem = jobItem()->data2DItem())
+        m_lockzCheckBox->setChecked(data2DItem->isZaxisLocked());
 }
diff --git a/GUI/View/Import/RealDataMaskWidget.cpp b/GUI/View/Import/RealDataMaskWidget.cpp
index a2f12f84cd6..53d99720576 100644
--- a/GUI/View/Import/RealDataMaskWidget.cpp
+++ b/GUI/View/Import/RealDataMaskWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Import/RealDataMaskWidget.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/View/Mask/MaskEditorActions.h"
 #include "GUI/View/Mask/MaskEditorCanvas.h"
@@ -73,9 +73,9 @@ QList<QAction*> RealDataMaskWidget::actionList()
 
 void RealDataMaskWidget::setContext()
 {
-    ASSERT(currentIntensityItem());
+    ASSERT(currentData2DItem());
 
-    MaskContainerItem* containerItem = currentIntensityItem()->getOrCreateMaskContainerItem();
+    MaskContainerItem* containerItem = currentData2DItem()->getOrCreateMaskContainerItem();
     ASSERT(containerItem);
 
     MaskContainerModel* containerModel = containerItem->model();
@@ -84,7 +84,7 @@ void RealDataMaskWidget::setContext()
     m_editorPropertyPanel->setMaskContext(containerModel);
 
     m_editorCanvas->setSelectionModel(m_editorPropertyPanel->selectionModel());
-    m_editorCanvas->setMaskContext(currentIntensityItem());
+    m_editorCanvas->setMaskContext(currentData2DItem());
 
     m_editorActions->setModel(containerModel);
     m_editorActions->setSelectionModel(m_editorPropertyPanel->selectionModel());
@@ -100,7 +100,7 @@ void RealDataMaskWidget::resetContext()
 
 void RealDataMaskWidget::showEvent(QShowEvent*)
 {
-    if (currentIntensityItem())
+    if (currentData2DItem())
         setContext();
 }
 
diff --git a/GUI/View/JobControl/JobListView.cpp b/GUI/View/JobControl/JobListView.cpp
index ee74cabb60b..61c9bce46e8 100644
--- a/GUI/View/JobControl/JobListView.cpp
+++ b/GUI/View/JobControl/JobListView.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/JobControl/JobListView.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/JobControl/JobListModel.h"
 #include "GUI/View/JobControl/JobListViewDelegate.h"
@@ -185,14 +185,14 @@ void JobListView::equalizeSelectedToJob(JobItem* srcJob)
 {
     QModelIndexList indexes = m_listView->selectionModel()->selectedIndexes();
 
-    IntensityItem* srcData = srcJob->intensityItem();
+    Data2DItem* srcData = srcJob->data2DItem();
     if (!srcData)
         return;
 
     for (const QModelIndex& index : indexes) {
         JobItem* job = m_model->jobItemForIndex(index);
         if (job != srcJob) {
-            IntensityItem* data = job->intensityItem();
+            Data2DItem* data = job->data2DItem();
             if (data) {
                 data->setLowerX(srcData->lowerX());
                 data->setUpperX(srcData->upperX());
diff --git a/GUI/View/Mask/MaskEditorCanvas.cpp b/GUI/View/Mask/MaskEditorCanvas.cpp
index a597e24aa91..13e93d140a5 100644
--- a/GUI/View/Mask/MaskEditorCanvas.cpp
+++ b/GUI/View/Mask/MaskEditorCanvas.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Mask/MaskEditorCanvas.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/Mask/MaskGraphicsScene.h"
@@ -28,7 +28,7 @@ MaskEditorCanvas::MaskEditorCanvas(QWidget* parent)
     : QWidget(parent)
     , m_scene(new MaskGraphicsScene(this))
     , m_view(new MaskGraphicsView(m_scene))
-    , m_intensityItem(nullptr)
+    , m_data2DItem(nullptr)
     , m_statusLabel(new PlotStatusLabel(nullptr, this))
     , m_resultsPresenter(new MaskResultsPresenter(this))
 {
@@ -48,12 +48,12 @@ MaskEditorCanvas::MaskEditorCanvas(QWidget* parent)
             &MaskEditorCanvas::deleteSelectedRequest);
 }
 
-void MaskEditorCanvas::setMaskContext(IntensityItem* intensityItem)
+void MaskEditorCanvas::setMaskContext(Data2DItem* data2DItem)
 {
-    m_intensityItem = intensityItem;
+    m_data2DItem = data2DItem;
 
-    m_scene->setMaskContext(intensityItem, intensityItem->maskContainerItem());
-    m_resultsPresenter->setMaskContext(intensityItem);
+    m_scene->setMaskContext(data2DItem, data2DItem->maskContainerItem());
+    m_resultsPresenter->setMaskContext(data2DItem);
     m_view->updateSize(m_view->size());
 
     m_statusLabel->addPlot(m_scene->colorMap());
@@ -61,7 +61,7 @@ void MaskEditorCanvas::setMaskContext(IntensityItem* intensityItem)
 
 void MaskEditorCanvas::resetContext()
 {
-    m_intensityItem = nullptr;
+    m_data2DItem = nullptr;
     m_scene->resetContext();
     m_statusLabel->reset();
 }
@@ -81,7 +81,7 @@ void MaskEditorCanvas::onPresentationTypeRequest(MaskEditorFlags::PresentationTy
     m_scene->clearSelection(); // important to avoid crash (unsubscribe while calling subscribers)
     m_resultsPresenter->updatePresenter(presentationType);
 
-    if (auto* container = m_intensityItem->maskContainerItem()) {
+    if (auto* container = m_data2DItem->maskContainerItem()) {
         bool tempVisible = presentationType.testFlag(MaskEditorFlags::MASK_EDITOR);
         for (MaskItem* mask : container->maskItems())
             mask->setIsVisible(tempVisible && mask->wasVisible());
@@ -94,7 +94,7 @@ void MaskEditorCanvas::onSavePlotRequest()
 {
     ASSERT(gProjectDocument.has_value());
     QString dirname = gProjectDocument.value()->userExportDir();
-    GUI::Plot::savePlot(dirname, m_scene->colorMap()->customPlot(), m_intensityItem->c_field());
+    GUI::Plot::savePlot(dirname, m_scene->colorMap()->customPlot(), m_data2DItem->c_field());
 }
 
 void MaskEditorCanvas::onResetViewRequest()
@@ -104,7 +104,7 @@ void MaskEditorCanvas::onResetViewRequest()
     if (isAxisRangeMatchData())
         setZoomToROI();
     else
-        m_intensityItem->resetView();
+        m_data2DItem->resetView();
     gProjectDocument.value()->setModified();
 }
 
@@ -112,27 +112,27 @@ void MaskEditorCanvas::onResetViewRequest()
 
 bool MaskEditorCanvas::isAxisRangeMatchData() const
 {
-    ASSERT(m_intensityItem);
+    ASSERT(m_data2DItem);
 
-    if (m_intensityItem->lowerX() != m_intensityItem->xMin())
+    if (m_data2DItem->lowerX() != m_data2DItem->xMin())
         return false;
-    if (m_intensityItem->upperX() != m_intensityItem->xMax())
+    if (m_data2DItem->upperX() != m_data2DItem->xMax())
         return false;
-    if (m_intensityItem->lowerY() != m_intensityItem->yMin())
+    if (m_data2DItem->lowerY() != m_data2DItem->yMin())
         return false;
-    if (m_intensityItem->upperY() != m_intensityItem->yMax())
+    if (m_data2DItem->upperY() != m_data2DItem->yMax())
         return false;
     return true;
 }
 
 void MaskEditorCanvas::setZoomToROI()
 {
-    if (MaskContainerItem* maskContainer = m_intensityItem->maskContainerItem()) {
+    if (MaskContainerItem* maskContainer = m_data2DItem->maskContainerItem()) {
         if (auto* roiItem = maskContainer->regionOfInterestItem()) {
-            m_intensityItem->setLowerX(roiItem->xLow());
-            m_intensityItem->setUpperX(roiItem->xUp());
-            m_intensityItem->setLowerY(roiItem->yLow());
-            m_intensityItem->setUpperY(roiItem->yUp());
+            m_data2DItem->setLowerX(roiItem->xLow());
+            m_data2DItem->setUpperX(roiItem->xUp());
+            m_data2DItem->setLowerY(roiItem->yLow());
+            m_data2DItem->setUpperY(roiItem->yUp());
         }
     }
 }
diff --git a/GUI/View/Mask/MaskEditorCanvas.h b/GUI/View/Mask/MaskEditorCanvas.h
index 30e2c4f8cf5..f47e6bf840b 100644
--- a/GUI/View/Mask/MaskEditorCanvas.h
+++ b/GUI/View/Mask/MaskEditorCanvas.h
@@ -23,9 +23,9 @@ class MaskGraphicsView;
 class QItemSelectionModel;
 class QModelIndex;
 class MaskResultsPresenter;
-class IntensityItem;
+class Data2DItem;
 class PlotStatusLabel;
-class IntensityItem;
+class Data2DItem;
 
 //! Painting widget for MaskEditor, contains graphics scene and graphics view
 
@@ -34,7 +34,7 @@ class MaskEditorCanvas : public QWidget {
 public:
     MaskEditorCanvas(QWidget* parent = nullptr);
 
-    void setMaskContext(IntensityItem* intensityItem);
+    void setMaskContext(Data2DItem* data2DItem);
 
     void resetContext();
 
@@ -57,7 +57,7 @@ private:
 
     MaskGraphicsScene* m_scene;
     MaskGraphicsView* m_view;
-    IntensityItem* m_intensityItem;
+    Data2DItem* m_data2DItem;
     PlotStatusLabel* m_statusLabel;
     MaskResultsPresenter* m_resultsPresenter;
 };
diff --git a/GUI/View/Mask/MaskEditorPropertyPanel.cpp b/GUI/View/Mask/MaskEditorPropertyPanel.cpp
index 0ba7a41b209..fc04da00df2 100644
--- a/GUI/View/Mask/MaskEditorPropertyPanel.cpp
+++ b/GUI/View/Mask/MaskEditorPropertyPanel.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Mask/MaskEditorPropertyPanel.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Style/GroupBoxCollapser.h"
@@ -32,7 +32,7 @@ MaskEditorPropertyPanel::MaskEditorPropertyPanel(QWidget* parent)
     , m_listView(new QListView)
     , m_propertyPanel(new IntensityDataPropertyWidget)
     , m_maskContainerModel(nullptr)
-    , m_intensityItem(nullptr)
+    , m_data2DItem(nullptr)
     , m_currentMaskItem(nullptr)
     , m_inhibitSelectionChange(false)
 {
@@ -110,7 +110,7 @@ void MaskEditorPropertyPanel::setMaskContext(MaskContainerModel* containerModel)
 void MaskEditorPropertyPanel::resetContext()
 {
     m_maskContainerModel = nullptr;
-    m_intensityItem = nullptr;
+    m_data2DItem = nullptr;
     m_listView->setModel(nullptr);
     setCurrentMaskItem(nullptr);
 }
diff --git a/GUI/View/Mask/MaskEditorPropertyPanel.h b/GUI/View/Mask/MaskEditorPropertyPanel.h
index 92001e99d24..c5b5dfb1d62 100644
--- a/GUI/View/Mask/MaskEditorPropertyPanel.h
+++ b/GUI/View/Mask/MaskEditorPropertyPanel.h
@@ -22,7 +22,7 @@
 #include <QModelIndex>
 #include <functional>
 
-class IntensityItem;
+class Data2DItem;
 class IntensityDataPropertyWidget;
 class MaskContainerModel;
 class MaskItem;
@@ -76,7 +76,7 @@ private:
     QListView* m_listView;
     IntensityDataPropertyWidget* m_propertyPanel;
     MaskContainerModel* m_maskContainerModel;
-    IntensityItem* m_intensityItem;
+    Data2DItem* m_data2DItem;
     QFormLayout* m_maskPropertiesLayout;
     MaskItem* m_currentMaskItem; //!< the mask item whose properties shall be edited
     bool m_inhibitSelectionChange = false;
diff --git a/GUI/View/Mask/MaskGraphicsProxy.cpp b/GUI/View/Mask/MaskGraphicsProxy.cpp
index 0e09202da2f..2c1845a239d 100644
--- a/GUI/View/Mask/MaskGraphicsProxy.cpp
+++ b/GUI/View/Mask/MaskGraphicsProxy.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Mask/MaskGraphicsProxy.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/View/Mask/SceneAdaptor.h"
 #include "GUI/View/PlotScale/ColorMap.h"
 #include <QGraphicsSceneMouseEvent>
@@ -34,9 +34,9 @@ MaskGraphicsProxy::~MaskGraphicsProxy()
         m_sceneAdaptor->setColorMapPlot(nullptr);
 }
 
-void MaskGraphicsProxy::setIntensityItem(IntensityItem* intensityItem)
+void MaskGraphicsProxy::setData2DItem(Data2DItem* data2DItem)
 {
-    m_colorMap->setIntensityItem(intensityItem);
+    m_colorMap->setData2DItem(data2DItem);
     if (widget() != m_colorMap)
         setWidget(m_colorMap);
 }
diff --git a/GUI/View/Mask/MaskGraphicsProxy.h b/GUI/View/Mask/MaskGraphicsProxy.h
index 19db2211e8c..085404813a9 100644
--- a/GUI/View/Mask/MaskGraphicsProxy.h
+++ b/GUI/View/Mask/MaskGraphicsProxy.h
@@ -20,7 +20,7 @@
 
 class ColorMap;
 class SceneAdaptor;
-class IntensityItem;
+class Data2DItem;
 class SceneAdaptor;
 
 //! Graphics proxy to place QWidget inside QGraphicsScene, used by MaskEditorCanvas.
@@ -33,7 +33,7 @@ public:
 
     int type() const override { return MaskEditorHelper::MASKGRAPHICSPROXY; }
 
-    void setIntensityItem(IntensityItem* intensityItem);
+    void setData2DItem(Data2DItem* data2DItem);
     void setSceneAdaptor(SceneAdaptor* sceneAdaptor);
     void setInZoomMode(bool value);
 
diff --git a/GUI/View/Mask/MaskGraphicsScene.cpp b/GUI/View/Mask/MaskGraphicsScene.cpp
index 4ad36348279..5ee810ba325 100644
--- a/GUI/View/Mask/MaskGraphicsScene.cpp
+++ b/GUI/View/Mask/MaskGraphicsScene.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Mask/MaskGraphicsScene.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
@@ -48,13 +48,12 @@ MaskGraphicsScene::~MaskGraphicsScene()
         m_proxy->setSceneAdaptor(nullptr);
 }
 
-void MaskGraphicsScene::setMaskContext(IntensityItem* intensityItem,
-                                       MaskContainerItem* maskContainerItem)
+void MaskGraphicsScene::setMaskContext(Data2DItem* data2DItem, MaskContainerItem* maskContainerItem)
 {
-    if (!intensityItem)
+    if (!data2DItem)
         return;
 
-    m_intensityItem = intensityItem;
+    m_data2DItem = data2DItem;
 
     if (!maskContainerItem)
         return;
@@ -112,7 +111,7 @@ void MaskGraphicsScene::disconnectMaskContainer(MaskContainerModel* maskContaine
 
 void MaskGraphicsScene::resetContext()
 {
-    m_intensityItem = nullptr;
+    m_data2DItem = nullptr;
     disconnectMaskContainer(m_maskContainerModel);
 
     m_maskContainerModel = nullptr;
@@ -369,13 +368,13 @@ void MaskGraphicsScene::contextMenuEvent(QGraphicsSceneContextMenuEvent* event)
 
 void MaskGraphicsScene::updateProxyWidget()
 {
-    ASSERT(m_intensityItem);
+    ASSERT(m_data2DItem);
     if (m_proxy)
         return;
 
     m_proxy = new MaskGraphicsProxy; // TODO: check if m_proxy is released at the end
     m_proxy->setParent(this);
-    m_proxy->setIntensityItem(m_intensityItem);
+    m_proxy->setData2DItem(m_data2DItem);
     m_proxy->setSceneAdaptor(m_adaptor.data());
     addItem(m_proxy);
 }
diff --git a/GUI/View/Mask/MaskGraphicsScene.h b/GUI/View/Mask/MaskGraphicsScene.h
index f505a5eab92..681fbe7b2fc 100644
--- a/GUI/View/Mask/MaskGraphicsScene.h
+++ b/GUI/View/Mask/MaskGraphicsScene.h
@@ -23,7 +23,7 @@
 
 class SceneAdaptor;
 class IShape2DView;
-class IntensityItem;
+class Data2DItem;
 class MaskContainerItem;
 class MaskContainerModel;
 class MaskEditorAction;
@@ -42,7 +42,7 @@ public:
     MaskGraphicsScene(QObject* parent = nullptr);
     ~MaskGraphicsScene() override;
 
-    void setMaskContext(IntensityItem* intensityItem, MaskContainerItem* maskContainerItem);
+    void setMaskContext(Data2DItem* data2DItem, MaskContainerItem* maskContainerItem);
 
     void resetContext();
 
@@ -119,7 +119,7 @@ private:
     QSharedPointer<SceneAdaptor> m_adaptor;
     bool m_block_selection = false;
     bool m_mouse_is_pressed = false;
-    IntensityItem* m_intensityItem = nullptr;
+    Data2DItem* m_data2DItem = nullptr;
     MaskItemObject* m_currentItem = nullptr;
     QPointF m_currentMousePosition;
     MaskDrawingContext m_context;
diff --git a/GUI/View/Mask/MaskResultsPresenter.cpp b/GUI/View/Mask/MaskResultsPresenter.cpp
index 39a914192a2..59f10432844 100644
--- a/GUI/View/Mask/MaskResultsPresenter.cpp
+++ b/GUI/View/Mask/MaskResultsPresenter.cpp
@@ -16,7 +16,7 @@
 #include "Device/Data/Datafield.h"
 #include "Device/Mask/DetectorMask.h"
 #include "Device/Mask/IShape2D.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include <QVBoxLayout>
 
@@ -28,9 +28,9 @@ MaskResultsPresenter::MaskResultsPresenter(QWidget* parent)
 
 MaskResultsPresenter::~MaskResultsPresenter() = default;
 
-void MaskResultsPresenter::setMaskContext(IntensityItem* intensityItem)
+void MaskResultsPresenter::setMaskContext(Data2DItem* data2DItem)
 {
-    m_intensityItem = intensityItem;
+    m_data2DItem = data2DItem;
 }
 
 void MaskResultsPresenter::resetContext()
@@ -40,7 +40,7 @@ void MaskResultsPresenter::resetContext()
 
 void MaskResultsPresenter::updatePresenter(MaskEditorFlags::PresentationType presentationType)
 {
-    if (!m_intensityItem->maskContainerItem()) // TODO: check!
+    if (!m_data2DItem->maskContainerItem()) // TODO: check!
         return;
 
     if (presentationType == MaskEditorFlags::MASK_PRESENTER)
@@ -49,34 +49,34 @@ void MaskResultsPresenter::updatePresenter(MaskEditorFlags::PresentationType pre
         setOriginalMode();
 }
 
-//! Update IntensityItem to represent masked areas. Corresponding
+//! Update Data2DItem to represent masked areas. Corresponding
 //! bins of Datafield will be put to zero.
 
 void MaskResultsPresenter::setShowMaskMode()
 {
     if (Datafield* maskedData = createMaskPresentation()) {
         backup_data();
-        m_intensityItem->setDatafield(*maskedData);
-        m_intensityItem->setInterpolated(false);
+        m_data2DItem->setDatafield(*maskedData);
+        m_data2DItem->setInterpolated(false);
     } else {
         m_dataBackup.reset();
     }
 }
 
-//! Restores original state of IntensityItem
+//! Restores original state of Data2DItem
 
 void MaskResultsPresenter::setOriginalMode()
 {
     if (m_dataBackup) {
-        m_intensityItem->setDatafield(*m_dataBackup);
-        m_intensityItem->setInterpolated(m_interpolation_flag_backup);
+        m_data2DItem->setDatafield(*m_dataBackup);
+        m_data2DItem->setInterpolated(m_interpolation_flag_backup);
     }
 }
 
 void MaskResultsPresenter::backup_data()
 {
-    m_interpolation_flag_backup = m_intensityItem->isInterpolated();
-    m_dataBackup.reset(m_intensityItem->c_field()->clone());
+    m_interpolation_flag_backup = m_data2DItem->isInterpolated();
+    m_dataBackup.reset(m_data2DItem->c_field()->clone());
 }
 
 //! Constructs Datafield which contains original intensity data except masked areas,
@@ -86,10 +86,10 @@ Datafield* MaskResultsPresenter::createMaskPresentation() const
 {
     // Requesting mask information
     std::unique_ptr<IShape2D> roi;
-    Datafield* result = m_intensityItem->c_field()->clone();
+    Datafield* result = m_data2DItem->c_field()->clone();
     DetectorMask detectorMask(result->axis(0), result->axis(1));
     const double scale = 1.0;
-    const QVector<MaskItem*> maskItems = m_intensityItem->maskContainerItem()->maskItems();
+    const QVector<MaskItem*> maskItems = m_data2DItem->maskContainerItem()->maskItems();
     for (auto maskIter = maskItems.rbegin(); maskIter != maskItems.rend(); maskIter++)
         if ((*maskIter)->isVisible()) {
             if (auto* roiItem = dynamic_cast<RegionOfInterestItem*>((*maskIter)))
diff --git a/GUI/View/Mask/MaskResultsPresenter.h b/GUI/View/Mask/MaskResultsPresenter.h
index 734bd3115b8..84ba83890b9 100644
--- a/GUI/View/Mask/MaskResultsPresenter.h
+++ b/GUI/View/Mask/MaskResultsPresenter.h
@@ -20,7 +20,7 @@
 #include <QObject>
 #include <memory>
 
-class IntensityItem;
+class Data2DItem;
 class Datafield;
 
 //! Updates bin values inside IntensityData to display current mask state. Returns IntensityData
@@ -32,7 +32,7 @@ public:
     MaskResultsPresenter(QWidget* parent = nullptr);
     ~MaskResultsPresenter();
 
-    void setMaskContext(IntensityItem* intensityItem);
+    void setMaskContext(Data2DItem* data2DItem);
 
     void resetContext();
 
@@ -44,7 +44,7 @@ private:
     void backup_data();
     Datafield* createMaskPresentation() const;
 
-    IntensityItem* m_intensityItem;
+    Data2DItem* m_data2DItem;
     std::unique_ptr<Datafield> m_dataBackup;
     bool m_interpolation_flag_backup;
 };
diff --git a/GUI/View/Plot2D/ColorMapCanvas.cpp b/GUI/View/Plot2D/ColorMapCanvas.cpp
index c68a06a8006..9f80e5652f3 100644
--- a/GUI/View/Plot2D/ColorMapCanvas.cpp
+++ b/GUI/View/Plot2D/ColorMapCanvas.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Plot2D/ColorMapCanvas.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/View/PlotScale/ColorMap.h"
 #include "GUI/View/PlotScale/FontScalingEvent.h"
 #include "GUI/View/PlotUtil/PlotStatusLabel.h"
@@ -38,9 +38,9 @@ ColorMapCanvas::ColorMapCanvas(QWidget* parent)
     setStatusLabelEnabled(false);
 }
 
-void ColorMapCanvas::setIntensityItem(IntensityItem* intensityItem)
+void ColorMapCanvas::setData2DItem(Data2DItem* data2DItem)
 {
-    m_colorMap->setIntensityItem(intensityItem);
+    m_colorMap->setData2DItem(data2DItem);
 }
 
 ColorMap* ColorMapCanvas::colorMap()
diff --git a/GUI/View/Plot2D/ColorMapCanvas.h b/GUI/View/Plot2D/ColorMapCanvas.h
index c0b3f5afbb9..0fc5c4d4839 100644
--- a/GUI/View/Plot2D/ColorMapCanvas.h
+++ b/GUI/View/Plot2D/ColorMapCanvas.h
@@ -19,7 +19,7 @@
 
 class ColorMap;
 class FontScalingEvent;
-class IntensityItem;
+class Data2DItem;
 class PlotStatusLabel;
 class QCustomPlot;
 
@@ -31,7 +31,7 @@ class ColorMapCanvas : public QWidget {
 public:
     explicit ColorMapCanvas(QWidget* parent = nullptr);
 
-    void setIntensityItem(IntensityItem* intensityItem);
+    void setData2DItem(Data2DItem* data2DItem);
 
     ColorMap* colorMap();
     QCustomPlot* customPlot();
diff --git a/GUI/View/Plot2D/IntensityDataCanvas.cpp b/GUI/View/Plot2D/IntensityDataCanvas.cpp
index d36210fb861..e3f7d35ae51 100644
--- a/GUI/View/Plot2D/IntensityDataCanvas.cpp
+++ b/GUI/View/Plot2D/IntensityDataCanvas.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Plot2D/IntensityDataCanvas.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Tool/Globals.h"
 #include "GUI/View/Info/MessageBox.h"
@@ -73,16 +73,16 @@ IntensityDataCanvas::IntensityDataCanvas(QWidget* parent)
 void IntensityDataCanvas::setJobOrRealItem(QObject* job_or_real_Item)
 {
     DataAccessWidget::setJobOrRealItem(job_or_real_Item);
-    m_colorMapCanvas->setIntensityItem(currentIntensityItem());
+    m_colorMapCanvas->setData2DItem(currentData2DItem());
 
     if (!m_rotateDataAction)
         initRotation();
 }
 
-void IntensityDataCanvas::setFourierItem(IntensityItem* fftItem)
+void IntensityDataCanvas::setFourierItem(Data2DItem* fftItem)
 {
     DataAccessWidget::setFourierItem(fftItem);
-    m_colorMapCanvas->setIntensityItem(currentIntensityItem());
+    m_colorMapCanvas->setData2DItem(currentData2DItem());
 }
 
 QSize IntensityDataCanvas::sizeHint() const
@@ -105,20 +105,20 @@ QList<QAction*> IntensityDataCanvas::actionList()
 
 void IntensityDataCanvas::onResetViewAction()
 {
-    for (auto item : allIntensityItems())
+    for (auto item : allData2DItems())
         item->resetView();
     gProjectDocument.value()->setModified();
 
     // synchronize real item data range with current item
-    if (realIntensityItem())
-        realIntensityItem()->copyZRangeFromItem(currentIntensityItem());
+    if (realData2DItem())
+        realData2DItem()->copyZRangeFromItem(currentData2DItem());
 }
 
 void IntensityDataCanvas::onSavePlotAction()
 {
     ASSERT(gProjectDocument.has_value());
     QString dirname = gProjectDocument.value()->userExportDir();
-    GUI::Plot::savePlot(dirname, m_colorMapCanvas->customPlot(), currentIntensityItem()->c_field());
+    GUI::Plot::savePlot(dirname, m_colorMapCanvas->customPlot(), currentData2DItem()->c_field());
 }
 
 void IntensityDataCanvas::onMousePress(QMouseEvent* event)
diff --git a/GUI/View/Plot2D/IntensityDataCanvas.h b/GUI/View/Plot2D/IntensityDataCanvas.h
index 1a88488524d..d42488545af 100644
--- a/GUI/View/Plot2D/IntensityDataCanvas.h
+++ b/GUI/View/Plot2D/IntensityDataCanvas.h
@@ -18,10 +18,10 @@
 #include "GUI/View/Data/DataAccessWidget.h"
 
 class ColorMapCanvas;
-class IntensityItem;
+class Data2DItem;
 class QAction;
 
-//! A color map that represents a IntensityItem, and provides standard actions
+//! A color map that represents a Data2DItem, and provides standard actions
 //! (reset view, save as) for external toolbars and context menus.
 
 class IntensityDataCanvas : public DataAccessWidget {
@@ -29,7 +29,7 @@ public:
     explicit IntensityDataCanvas(QWidget* parent = nullptr);
 
     void setJobOrRealItem(QObject* job_or_real_Item) override;
-    void setFourierItem(IntensityItem* fftItem) override;
+    void setFourierItem(Data2DItem* fftItem) override;
 
     QSize sizeHint() const override;
     QSize minimumSizeHint() const override;
diff --git a/GUI/View/Plot2D/IntensityDataFFTPresenter.cpp b/GUI/View/Plot2D/IntensityDataFFTPresenter.cpp
index 4771e0aa134..f0ab78b3cfa 100644
--- a/GUI/View/Plot2D/IntensityDataFFTPresenter.cpp
+++ b/GUI/View/Plot2D/IntensityDataFFTPresenter.cpp
@@ -16,13 +16,13 @@
 #include "Base/Util/Assert.h"
 #include "Device/Analyze/Fourier.h"
 #include "Device/Data/Datafield.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include <QApplication>
 
 IntensityDataFFTPresenter::IntensityDataFFTPresenter(QWidget* parent)
     : QObject(parent)
     , m_fftAction(nullptr)
-    , m_fftItem(std::make_unique<IntensityItem>())
+    , m_fftItem(std::make_unique<Data2DItem>())
     , m_in_fft_mode(false)
 {
     m_fftAction = new QAction(this);
@@ -38,7 +38,7 @@ void IntensityDataFFTPresenter::reset()
     m_in_fft_mode = false;
 }
 
-IntensityItem* IntensityDataFFTPresenter::fftItem(IntensityItem* origItem)
+Data2DItem* IntensityDataFFTPresenter::fftItem(Data2DItem* origItem)
 {
     ASSERT(origItem);
     QApplication::setOverrideCursor(Qt::WaitCursor);
diff --git a/GUI/View/Plot2D/IntensityDataFFTPresenter.h b/GUI/View/Plot2D/IntensityDataFFTPresenter.h
index b9b2d96dcc6..6fbe4649ba0 100644
--- a/GUI/View/Plot2D/IntensityDataFFTPresenter.h
+++ b/GUI/View/Plot2D/IntensityDataFFTPresenter.h
@@ -18,10 +18,10 @@
 #include <QAction>
 #include <QWidget>
 
-class IntensityItem;
+class Data2DItem;
 
-//! Provides support in Fast Fourier transformation of IntensityItem.
-//! Contains own IntensityItem instance with fft-transformed results.
+//! Provides support in Fast Fourier transformation of Data2DItem.
+//! Contains own Data2DItem instance with fft-transformed results.
 
 class IntensityDataFFTPresenter : public QObject {
     Q_OBJECT
@@ -30,7 +30,7 @@ public:
 
     void reset();
 
-    IntensityItem* fftItem(IntensityItem* origItem);
+    Data2DItem* fftItem(Data2DItem* origItem);
 
     QList<QAction*> actionList();
 
@@ -44,7 +44,7 @@ private slots:
 
 private:
     QAction* m_fftAction;
-    std::unique_ptr<IntensityItem> m_fftItem;
+    std::unique_ptr<Data2DItem> m_fftItem;
     bool m_in_fft_mode;
 };
 
diff --git a/GUI/View/Plot2D/IntensityDataWidget.cpp b/GUI/View/Plot2D/IntensityDataWidget.cpp
index 113af056c7d..75afc68ab1a 100644
--- a/GUI/View/Plot2D/IntensityDataWidget.cpp
+++ b/GUI/View/Plot2D/IntensityDataWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Plot2D/IntensityDataWidget.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Support/Util/ActionFactory.h"
 #include "GUI/View/Data/IntensityDataPropertyWidget.h"
 #include "GUI/View/Plot2D/IntensityDataCanvas.h"
@@ -77,11 +77,11 @@ void IntensityDataWidget::onContextMenuRequest(const QPoint& point)
 
 void IntensityDataWidget::onFFTAction()
 {
-    if (!currentIntensityItem() || !currentIntensityItem()->c_field())
+    if (!currentData2DItem() || !currentData2DItem()->c_field())
         return;
 
     if (m_fftPresenter->inFFTMode()) {
-        auto* fftItem = m_fftPresenter->fftItem(currentIntensityItem());
+        auto* fftItem = m_fftPresenter->fftItem(currentData2DItem());
         m_intensityCanvas->setFourierItem(fftItem);
         m_propertyWidget->setFourierItem(fftItem);
     } else {
diff --git a/GUI/View/PlotComparison/Fitpair1DWidget.cpp b/GUI/View/PlotComparison/Fitpair1DWidget.cpp
index 319a81f67ce..484057308b0 100644
--- a/GUI/View/PlotComparison/Fitpair1DWidget.cpp
+++ b/GUI/View/PlotComparison/Fitpair1DWidget.cpp
@@ -18,7 +18,7 @@
 #include "Device/IO/DiffUtil.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Model/Job/FitSuiteItem.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
@@ -89,12 +89,12 @@ void Fitpair1DWidget::setJobOrRealItem(QObject* job_item)
     ASSERT(jobItem());
 
     if (oldJob != jobItem())
-        GUI::View::RangeUtil::setCommonRangeY(mainSpecularDataItems());
+        GUI::View::RangeUtil::setCommonRangeY(mainData1DItems());
     updateDiffData();
     connectItems();
 
-    m_data_canvas->setSpecularItems({simuSpecularDataItem(), realSpecularDataItem()});
-    m_diff_canvas->setSpecularItems({diffSpecularDataItem()});
+    m_data_canvas->setData1DItems({simuData1DItem(), realData1DItem()});
+    m_diff_canvas->setData1DItems({diffData1DItem()});
     m_fitFlowWidget->setJobOrRealItem(job_item);
     m_propertyWidget->setJobOrRealItem(job_item);
 }
@@ -106,13 +106,13 @@ QList<QAction*> Fitpair1DWidget::actionList()
 
 void Fitpair1DWidget::onResetViewAction()
 {
-    ASSERT(simuSpecularDataItem() && diffSpecularDataItem() && realSpecularDataItem());
-    simuSpecularDataItem()->resetView();
-    realSpecularDataItem()->resetView();
-    diffSpecularDataItem()->resetView();
+    ASSERT(simuData1DItem() && diffData1DItem() && realData1DItem());
+    simuData1DItem()->resetView();
+    realData1DItem()->resetView();
+    diffData1DItem()->resetView();
 
     // synchronize data range between simulated and real
-    GUI::View::RangeUtil::setCommonRangeY(mainSpecularDataItems());
+    GUI::View::RangeUtil::setCommonRangeY(mainData1DItems());
     gProjectDocument.value()->setModified();
 }
 
@@ -120,32 +120,32 @@ void Fitpair1DWidget::connectItems()
 {
     // sync X axis view area between simulated and difference plots
     // simu --> diff
-    connect(simuSpecularDataItem(), &DataItem::updateOtherPlots, diffSpecularDataItem(),
+    connect(simuData1DItem(), &DataItem::updateOtherPlots, diffData1DItem(),
             &DataItem::checkXranges, Qt::UniqueConnection);
     // diff --> simu
-    connect(diffSpecularDataItem(), &DataItem::updateOtherPlots, simuSpecularDataItem(),
+    connect(diffData1DItem(), &DataItem::updateOtherPlots, simuData1DItem(),
             &DataItem::checkXranges, Qt::UniqueConnection);
 
     // update diff data if simulation data changes
-    connect(simuSpecularDataItem(), &SpecularDataItem::datafieldChanged, this,
-            &Fitpair1DWidget::updateDiffData, Qt::UniqueConnection);
+    connect(simuData1DItem(), &Data1DItem::datafieldChanged, this, &Fitpair1DWidget::updateDiffData,
+            Qt::UniqueConnection);
 }
 
 void Fitpair1DWidget::updateDiffData()
 {
-    ASSERT(simuSpecularDataItem() && diffSpecularDataItem() && realSpecularDataItem());
-    if (!simuSpecularDataItem()->c_field() || !realSpecularDataItem()->c_field())
+    ASSERT(simuData1DItem() && diffData1DItem() && realData1DItem());
+    if (!simuData1DItem()->c_field() || !realData1DItem()->c_field())
         return;
 
-    diffSpecularDataItem()->setDatafield(DiffUtil::relativeDifferenceField(
-        *simuSpecularDataItem()->c_field(), *realSpecularDataItem()->c_field()));
+    diffData1DItem()->setDatafield(DiffUtil::relativeDifferenceField(*simuData1DItem()->c_field(),
+                                                                     *realData1DItem()->c_field()));
 
     // keep Y axis range up with data range
-    double min = diffSpecularDataItem()->yMin();
-    if (!diffSpecularDataItem()->yAxisItem()->isLogScale() || min > 0)
-        diffSpecularDataItem()->setLowerY(min);
+    double min = diffData1DItem()->yMin();
+    if (!diffData1DItem()->yAxisItem()->isLogScale() || min > 0)
+        diffData1DItem()->setLowerY(min);
 
-    double max = diffSpecularDataItem()->yMax();
-    if (!diffSpecularDataItem()->yAxisItem()->isLogScale() || max > 0)
-        diffSpecularDataItem()->setUpperY(max);
+    double max = diffData1DItem()->yMax();
+    if (!diffData1DItem()->yAxisItem()->isLogScale() || max > 0)
+        diffData1DItem()->setUpperY(max);
 }
diff --git a/GUI/View/PlotComparison/Fitpair1DWidget.h b/GUI/View/PlotComparison/Fitpair1DWidget.h
index b16a1a37f3f..b4e2c3d8b8e 100644
--- a/GUI/View/PlotComparison/Fitpair1DWidget.h
+++ b/GUI/View/PlotComparison/Fitpair1DWidget.h
@@ -21,7 +21,7 @@ class FitFlowWidget;
 class JobRealBase;
 class PlotStatusLabel;
 class QAction;
-class SpecularDataItem;
+class Data1DItem;
 class SpecularDataPropertyWidget;
 class SpecularPlotCanvas;
 
diff --git a/GUI/View/PlotComparison/Fitpair2DWidget.cpp b/GUI/View/PlotComparison/Fitpair2DWidget.cpp
index 8273519bb1c..58de083b462 100644
--- a/GUI/View/PlotComparison/Fitpair2DWidget.cpp
+++ b/GUI/View/PlotComparison/Fitpair2DWidget.cpp
@@ -16,8 +16,8 @@
 #include "Base/Util/Assert.h"
 #include "Device/Data/Datafield.h"
 #include "Device/IO/DiffUtil.h"
-#include "GUI/Model/Data/IntensityItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Util/ActionFactory.h"
 #include "GUI/View/Data/IntensityDataPropertyWidget.h"
@@ -91,13 +91,13 @@ void Fitpair2DWidget::setJobOrRealItem(QObject* job_item)
     ASSERT(jobItem());
 
     if (oldJob != jobItem())
-        GUI::View::RangeUtil::setCommonRangeZ(mainIntensityItems());
+        GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems());
     updateDiffData();
     connectItems();
 
-    m_simuCanvas->setIntensityItem(simuIntensityItem());
-    m_realCanvas->setIntensityItem(realIntensityItem());
-    m_diffCanvas->setIntensityItem(diffIntensityItem());
+    m_simuCanvas->setData2DItem(simuData2DItem());
+    m_realCanvas->setData2DItem(realData2DItem());
+    m_diffCanvas->setData2DItem(diffData2DItem());
     m_fitFlowWidget->setJobOrRealItem(job_item);
     m_propertyWidget->setJobOrRealItem(job_item);
 }
@@ -109,51 +109,51 @@ QList<QAction*> Fitpair2DWidget::actionList()
 
 void Fitpair2DWidget::onResetViewAction()
 {
-    ASSERT(simuIntensityItem() && diffIntensityItem() && realIntensityItem());
-    simuIntensityItem()->resetView();
-    realIntensityItem()->resetView();
-    diffIntensityItem()->resetView();
+    ASSERT(simuData2DItem() && diffData2DItem() && realData2DItem());
+    simuData2DItem()->resetView();
+    realData2DItem()->resetView();
+    diffData2DItem()->resetView();
 
     // synchronize data range between simulated and real
-    GUI::View::RangeUtil::setCommonRangeZ(mainIntensityItems());
+    GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems());
     gProjectDocument.value()->setModified();
 }
 
 void Fitpair2DWidget::connectItems()
 {
     // sync XY view area between simulated, real and difference plots
-    for (auto senderItem : allIntensityItems())
-        for (auto receiverItem : allIntensityItems())
+    for (auto senderItem : allData2DItems())
+        for (auto receiverItem : allData2DItems())
             if (receiverItem != senderItem)
                 connect(senderItem, &DataItem::updateOtherPlots, receiverItem,
                         &DataItem::checkXYranges, Qt::UniqueConnection);
 
     // sync Z range between simulated and real
-    connect(simuIntensityItem(), &IntensityItem::alignRanges,
-            [this] { GUI::View::RangeUtil::setCommonRangeZ(mainIntensityItems()); });
+    connect(simuData2DItem(), &Data2DItem::alignRanges,
+            [this] { GUI::View::RangeUtil::setCommonRangeZ(mainData2DItems()); });
 
     // sync Z range: simu --> real
-    connect(simuIntensityItem(), &DataItem::updateOtherPlots, realIntensityItem(),
-            &IntensityItem::copyZRangeFromItem, Qt::UniqueConnection);
+    connect(simuData2DItem(), &DataItem::updateOtherPlots, realData2DItem(),
+            &Data2DItem::copyZRangeFromItem, Qt::UniqueConnection);
 
     // sync Z range: real --> simu
-    connect(realIntensityItem(), &DataItem::updateOtherPlots, simuIntensityItem(),
-            &IntensityItem::copyZRangeFromItem, Qt::UniqueConnection);
+    connect(realData2DItem(), &DataItem::updateOtherPlots, simuData2DItem(),
+            &Data2DItem::copyZRangeFromItem, Qt::UniqueConnection);
 
     // update diff data if simulation data changes
-    connect(simuIntensityItem(), &SpecularDataItem::datafieldChanged, this,
-            &Fitpair2DWidget::updateDiffData, Qt::UniqueConnection);
+    connect(simuData2DItem(), &Data1DItem::datafieldChanged, this, &Fitpair2DWidget::updateDiffData,
+            Qt::UniqueConnection);
 }
 
 void Fitpair2DWidget::updateDiffData()
 {
-    ASSERT(simuIntensityItem() && diffIntensityItem() && realIntensityItem());
-    if (!simuIntensityItem()->c_field() || !realIntensityItem()->c_field())
+    ASSERT(simuData2DItem() && diffData2DItem() && realData2DItem());
+    if (!simuData2DItem()->c_field() || !realData2DItem()->c_field())
         return;
 
-    diffIntensityItem()->setDatafield(DiffUtil::relativeDifferenceField(
-        *simuIntensityItem()->c_field(), *realIntensityItem()->c_field()));
+    diffData2DItem()->setDatafield(DiffUtil::relativeDifferenceField(*simuData2DItem()->c_field(),
+                                                                     *realData2DItem()->c_field()));
 
     // keep Z axis range up with data range
-    diffIntensityItem()->computeDataRange();
+    diffData2DItem()->computeDataRange();
 }
diff --git a/GUI/View/PlotScale/ColorMap.cpp b/GUI/View/PlotScale/ColorMap.cpp
index 0cfd53d0d98..060660eb759 100644
--- a/GUI/View/PlotScale/ColorMap.cpp
+++ b/GUI/View/PlotScale/ColorMap.cpp
@@ -16,7 +16,7 @@
 #include "Device/Data/Datafield.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Tool/UpdateTimer.h"
 #include "GUI/Support/Util/QCP_Util.h"
@@ -62,14 +62,14 @@ ColorMap::ColorMap(QWidget* parent)
     //    setFixedColorMapMargins();
 }
 
-void ColorMap::setIntensityItem(IntensityItem* item)
+void ColorMap::setData2DItem(Data2DItem* item)
 {
-    m_intensityItem = item;
+    m_data2DItem = item;
 
     // set nullptr at destruction
-    if (m_intensityItem) {
-        disconnect(m_intensityItem, &DataItem::destroyed, this, nullptr);
-        connect(m_intensityItem, &DataItem::destroyed, this, [this] { m_intensityItem = nullptr; });
+    if (m_data2DItem) {
+        disconnect(m_data2DItem, &DataItem::destroyed, this, nullptr);
+        connect(m_data2DItem, &DataItem::destroyed, this, [this] { m_data2DItem = nullptr; });
     }
 
     setColorMapFromItem();
@@ -93,7 +93,7 @@ QRectF ColorMap::viewportRectangleInWidgetCoordinates()
 PlotEventInfo ColorMap::eventInfo(double xpos, double ypos) const
 {
     PlotEventInfo result(plotType());
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return result;
 
@@ -115,7 +115,7 @@ PlotEventInfo ColorMap::eventInfo(double xpos, double ypos) const
 //! sets logarithmic scale
 void ColorMap::setLogz()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     bool logz = ii->isLog();
@@ -139,7 +139,7 @@ void ColorMap::onUnitsChanged()
 
 void ColorMap::setGradient()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     m_colorMap->setGradient(ii->currentGradientQCP());
@@ -148,37 +148,37 @@ void ColorMap::setGradient()
 
 void ColorMap::setInterpolation()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     m_colorMap->setInterpolate(ii->isInterpolated());
     replot();
 }
 
-//! Propagate zmin, zmax back to IntensityItem
+//! Propagate zmin, zmax back to Data2DItem
 void ColorMap::onDataRangeChanged(QCPRange newRange)
 {
-    IntensityItem* ii = intensityItem();
+    Data2DItem* ii = data2DItem();
     ii->setLowerAndUpperZ(newRange.lower, newRange.upper);
     ii->zAxisItem()->adjustLogRangeOrders();
     emit ii->updateOtherPlots(ii);
     gProjectDocument.value()->setModified();
 }
 
-//! Propagate xmin, xmax back to IntensityItem
+//! Propagate xmin, xmax back to Data2DItem
 void ColorMap::onXaxisRangeChanged(QCPRange newRange)
 {
-    IntensityItem* ii = intensityItem();
+    Data2DItem* ii = data2DItem();
     ii->setLowerX(newRange.lower);
     ii->setUpperX(newRange.upper);
     emit ii->updateOtherPlots(ii);
     gProjectDocument.value()->setModified();
 }
 
-//! Propagate ymin, ymax back to IntensityItem
+//! Propagate ymin, ymax back to Data2DItem
 void ColorMap::onYaxisRangeChanged(QCPRange newRange)
 {
-    IntensityItem* ii = intensityItem();
+    Data2DItem* ii = data2DItem();
     ii->setLowerY(newRange.lower);
     ii->setUpperY(newRange.upper);
     emit ii->updateOtherPlots(ii);
@@ -227,21 +227,20 @@ void ColorMap::initColorMap()
 
 void ColorMap::connectItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     // data
-    connect(ii, &IntensityItem::datafieldChanged, this, &ColorMap::onIntensityModified,
+    connect(ii, &Data2DItem::datafieldChanged, this, &ColorMap::onIntensityModified,
             Qt::UniqueConnection);
 
     // units
-    connect(ii, &IntensityItem::axesUnitsReplotRequested, this, &ColorMap::onUnitsChanged,
+    connect(ii, &Data2DItem::axesUnitsReplotRequested, this, &ColorMap::onUnitsChanged,
             Qt::UniqueConnection);
 
     // color scheme
-    connect(ii, &IntensityItem::gradientChanged, this, &ColorMap::setGradient,
-            Qt::UniqueConnection);
+    connect(ii, &Data2DItem::gradientChanged, this, &ColorMap::setGradient, Qt::UniqueConnection);
 
     // interpolation
-    connect(ii, &IntensityItem::interpolationChanged, this, &ColorMap::setInterpolation,
+    connect(ii, &Data2DItem::interpolationChanged, this, &ColorMap::setInterpolation,
             Qt::UniqueConnection);
 
     // x axis
@@ -338,7 +337,7 @@ void ColorMap::setColorMapFromItem()
 
 void ColorMap::setAxesRangeFromItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     m_custom_plot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
@@ -353,7 +352,7 @@ void ColorMap::setAxesRangeFromItem()
 
 void ColorMap::setAxesZoomFromItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     setAxesRangeConnected(false);
@@ -367,7 +366,7 @@ void ColorMap::setAxesZoomFromItem()
 
 void ColorMap::setAxesLabelsFromItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
 
@@ -382,7 +381,7 @@ void ColorMap::setAxesLabelsFromItem()
 
 void ColorMap::setDataFromItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     const Datafield* data = ii->c_field();
@@ -416,7 +415,7 @@ void ColorMap::setColorScaleAppearanceFromItem()
 
 void ColorMap::setDataRangeFromItem()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     setDataRangeConnected(false);
@@ -427,7 +426,7 @@ void ColorMap::setDataRangeFromItem()
 
 void ColorMap::setColorScaleVisible()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
     bool visibility_flag = ii->zAxisItem()->isVisible();
diff --git a/GUI/View/PlotScale/ColorMap.h b/GUI/View/PlotScale/ColorMap.h
index 0046c3e1938..ba33adbbf5a 100644
--- a/GUI/View/PlotScale/ColorMap.h
+++ b/GUI/View/PlotScale/ColorMap.h
@@ -17,14 +17,14 @@
 
 #include "GUI/View/PlotUtil/ScientificPlot.h"
 
-class IntensityItem;
+class Data2DItem;
 class QCPColorMap;
 class QCPColorScale;
 class QCPLayoutGrid;
 class QCPRange;
 class UpdateTimer;
 
-//! Presents 2D intensity data from IntensityItem as color map.
+//! Presents 2D intensity data from Data2DItem as color map.
 
 //! Provides a minimal functionality for data plotting and axes interaction.
 //! Is used as a component of more complicated plotting widgets.
@@ -35,7 +35,7 @@ class ColorMap : public ScientificPlot {
 public:
     explicit ColorMap(QWidget* parent = nullptr);
 
-    void setIntensityItem(IntensityItem* item);
+    void setData2DItem(Data2DItem* item);
 
     QSize sizeHint() const override { return QSize(500, 400); }
     QSize minimumSizeHint() const override { return QSize(128, 128); }
@@ -52,7 +52,7 @@ signals:
     void marginsChanged(double left, double right);
 
 private:
-    IntensityItem* intensityItem() const { return m_intensityItem; }
+    Data2DItem* data2DItem() const { return m_data2DItem; }
 
     void onIntensityModified();
     void onUnitsChanged();
@@ -86,7 +86,7 @@ private:
     void setDataRangeFromItem();
     void setColorScaleVisible();
 
-    IntensityItem* m_intensityItem = nullptr;
+    Data2DItem* m_data2DItem = nullptr;
     QCPColorMap* m_colorMap;
     QCPColorScale* m_colorScale;
     QCPLayoutGrid* m_colorBarLayout;
diff --git a/GUI/View/PlotScale/RangeUtil.cpp b/GUI/View/PlotScale/RangeUtil.cpp
index 86bad70acbd..1a40f374786 100644
--- a/GUI/View/PlotScale/RangeUtil.cpp
+++ b/GUI/View/PlotScale/RangeUtil.cpp
@@ -14,8 +14,8 @@
 
 #include "GUI/View/PlotScale/RangeUtil.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
-#include "GUI/Model/Data/IntensityItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include <qcustomplot.h>
 
 namespace {
@@ -43,7 +43,7 @@ QCPRange commonRange(const QList<AmplitudeAxisItem*>& axes)
     return QCPRange(commonMin(axes), commonMax(axes));
 }
 
-QList<AmplitudeAxisItem*> valueAxesFromSpecularItems(const QList<SpecularDataItem*>& items)
+QList<AmplitudeAxisItem*> valueAxesFromData1DItems(const QList<Data1DItem*>& items)
 {
     QList<AmplitudeAxisItem*> axes;
     for (auto item : items)
@@ -51,7 +51,7 @@ QList<AmplitudeAxisItem*> valueAxesFromSpecularItems(const QList<SpecularDataIte
     return axes;
 }
 
-QList<AmplitudeAxisItem*> valueAxesFromIntensityItems(const QList<IntensityItem*>& items)
+QList<AmplitudeAxisItem*> valueAxesFromData2DItems(const QList<Data2DItem*>& items)
 {
     QList<AmplitudeAxisItem*> axes;
     for (auto item : items)
@@ -61,18 +61,18 @@ QList<AmplitudeAxisItem*> valueAxesFromIntensityItems(const QList<IntensityItem*
 
 } // namespace
 
-void GUI::View::RangeUtil::setCommonRangeY(QList<SpecularDataItem*> items)
+void GUI::View::RangeUtil::setCommonRangeY(QList<Data1DItem*> items)
 {
-    QCPRange range = commonRange(valueAxesFromSpecularItems(items));
+    QCPRange range = commonRange(valueAxesFromData1DItems(items));
     for (auto item : items) {
         item->setLowerY(range.lower);
         item->setUpperY(range.upper);
     }
 }
 
-void GUI::View::RangeUtil::setCommonRangeZ(QList<IntensityItem*> items)
+void GUI::View::RangeUtil::setCommonRangeZ(QList<Data2DItem*> items)
 {
-    QCPRange range = commonRange(valueAxesFromIntensityItems(items));
+    QCPRange range = commonRange(valueAxesFromData2DItems(items));
     for (auto item : items) {
         item->setLowerZ(range.lower);
         item->setUpperZ(range.upper);
diff --git a/GUI/View/PlotScale/RangeUtil.h b/GUI/View/PlotScale/RangeUtil.h
index 4be84eff9c6..57ef0e3b2b3 100644
--- a/GUI/View/PlotScale/RangeUtil.h
+++ b/GUI/View/PlotScale/RangeUtil.h
@@ -17,18 +17,18 @@
 
 #include <QList>
 
-class IntensityItem;
-class SpecularDataItem;
+class Data2DItem;
+class Data1DItem;
 
 //! Provides few helper functions for ColorMapPlot.
 
 namespace GUI::View::RangeUtil {
 
 //! Sets common Y range for a list of items (zoom).
-void setCommonRangeY(QList<SpecularDataItem*> items);
+void setCommonRangeY(QList<Data1DItem*> items);
 
 //! Sets common Z range for a list of items (zoom).
-void setCommonRangeZ(QList<IntensityItem*> items);
+void setCommonRangeZ(QList<Data2DItem*> items);
 
 } // namespace GUI::View::RangeUtil
 
diff --git a/GUI/View/PlotSpecular/SpecularDataCanvas.cpp b/GUI/View/PlotSpecular/SpecularDataCanvas.cpp
index da5b914b02c..52bee4bd100 100644
--- a/GUI/View/PlotSpecular/SpecularDataCanvas.cpp
+++ b/GUI/View/PlotSpecular/SpecularDataCanvas.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/PlotSpecular/SpecularDataCanvas.h"
 #include "Base/Util/Assert.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/PlotScale/SavePlotAssistant.h"
 #include "GUI/View/PlotSpecular/SpecularPlotCanvas.h"
@@ -57,7 +57,7 @@ SpecularDataCanvas::SpecularDataCanvas(QWidget* parent)
 void SpecularDataCanvas::setJobOrRealItem(QObject* job_or_real_Item)
 {
     DataAccessWidget::setJobOrRealItem(job_or_real_Item);
-    m_plot_canvas->setSpecularItems({currentSpecularDataItem()});
+    m_plot_canvas->setData1DItems({currentData1DItem()});
 }
 
 QSize SpecularDataCanvas::sizeHint() const
@@ -92,7 +92,7 @@ void SpecularDataCanvas::enableDeprecatedOnMousePress(bool b)
 
 void SpecularDataCanvas::onResetViewAction()
 {
-    for (auto item : allSpecularDataItems())
+    for (auto item : allData1DItems())
         item->resetView();
     gProjectDocument.value()->setModified();
 }
@@ -101,7 +101,7 @@ void SpecularDataCanvas::onSavePlotAction()
 {
     ASSERT(gProjectDocument.has_value());
     QString dirname = gProjectDocument.value()->userExportDir();
-    GUI::Plot::savePlot(dirname, m_plot_canvas->customPlot(), currentSpecularDataItem()->c_field());
+    GUI::Plot::savePlot(dirname, m_plot_canvas->customPlot(), currentData1DItem()->c_field());
 }
 
 void SpecularDataCanvas::onMousePress(QMouseEvent* event)
diff --git a/GUI/View/PlotSpecular/SpecularDataCanvas.h b/GUI/View/PlotSpecular/SpecularDataCanvas.h
index 674f9fbf99f..2e51346479a 100644
--- a/GUI/View/PlotSpecular/SpecularDataCanvas.h
+++ b/GUI/View/PlotSpecular/SpecularDataCanvas.h
@@ -18,7 +18,7 @@
 #include "GUI/View/Data/DataAccessWidget.h"
 #include <QWidget>
 
-class SpecularDataItem;
+class Data1DItem;
 class SpecularPlotCanvas;
 class QCustomPlot;
 
diff --git a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
index 48e0f2172ec..243e2b74f08 100644
--- a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
+++ b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
 #include "GUI/Model/Data/ComboProperty.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Tool/LayoutUtil.h"
 #include "GUI/View/Numeric/DoubleSpinBox.h"
@@ -33,10 +33,10 @@ SpecularDataPropertyWidget::SpecularDataPropertyWidget(QWidget* parent)
 
 void SpecularDataPropertyWidget::createPanelElements()
 {
-    if (allSpecularDataItems().size() == 0)
+    if (allData1DItems().size() == 0)
         return;
 
-    for (auto item : allSpecularDataItems())
+    for (auto item : allData1DItems())
         disconnect(item, nullptr, this, nullptr);
 
     GUI::Util::Layout::clearLayout(m_mainLayout);
@@ -46,9 +46,9 @@ void SpecularDataPropertyWidget::createPanelElements()
     m_mainLayout->addRow("Axes units:",
                          GUI::Util::createUnitsComboBox(
                              axesUnitsList(),
-                             [this] { return currentSpecularDataItem()->currentAxesUnits(); },
+                             [this] { return currentData1DItem()->currentAxesUnits(); },
                              [this](const QString& newVal) {
-                                 for (auto item : allSpecularDataItems())
+                                 for (auto item : allData1DItems())
                                      item->setCurrentAxesUnits(newVal);
                                  emit axesRangeResetRequested();
                                  gProjectDocument.value()->setModified();
@@ -62,25 +62,23 @@ void SpecularDataPropertyWidget::createPanelElements()
     xFormLayout->setContentsMargins(0, 0, 0, 0);
     xFormLayout->setSpacing(5);
 
-    xFormLayout->addRow("Min:",
-                        GUI::Util::createDoubleSpinbox(
-                            [this] { return currentSpecularDataItem()->xAxisItem()->min(); },
-                            [this](double newValue) {
-                                for (auto item : allSpecularDataItems())
-                                    item->xAxisItem()->setMin(newValue);
-                                gProjectDocument.value()->setModified();
-                            },
-                            &m_updaters));
-
-    xFormLayout->addRow("Max:",
-                        GUI::Util::createDoubleSpinbox(
-                            [this] { return currentSpecularDataItem()->xAxisItem()->max(); },
-                            [this](double newValue) {
-                                for (auto item : allSpecularDataItems())
-                                    item->xAxisItem()->setMax(newValue);
-                                gProjectDocument.value()->setModified();
-                            },
-                            &m_updaters));
+    xFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
+                                    [this] { return currentData1DItem()->xAxisItem()->min(); },
+                                    [this](double newValue) {
+                                        for (auto item : allData1DItems())
+                                            item->xAxisItem()->setMin(newValue);
+                                        gProjectDocument.value()->setModified();
+                                    },
+                                    &m_updaters));
+
+    xFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
+                                    [this] { return currentData1DItem()->xAxisItem()->max(); },
+                                    [this](double newValue) {
+                                        for (auto item : allData1DItems())
+                                            item->xAxisItem()->setMax(newValue);
+                                        gProjectDocument.value()->setModified();
+                                    },
+                                    &m_updaters));
 
     m_mainLayout->addRow(xGroup);
 
@@ -91,9 +89,9 @@ void SpecularDataPropertyWidget::createPanelElements()
     yFormLayout->setSpacing(5);
 
     auto* logRangeSpinbox = GUI::Util::createDoubleSpinbox(
-        [this] { return currentSpecularDataItem()->yAxisItem()->logRangeOrders(); },
+        [this] { return currentData1DItem()->yAxisItem()->logRangeOrders(); },
         [this](double newValue) {
-            for (auto item : mainSpecularDataItems()) {
+            for (auto item : mainData1DItems()) {
                 item->yAxisItem()->setLogRangeOrders(newValue);
                 updateUIValues();
             }
@@ -101,37 +99,35 @@ void SpecularDataPropertyWidget::createPanelElements()
         },
         &m_updaters, "Dynamic range to display values", RealLimits::positive());
 
-    yFormLayout->addRow("Min:",
-                        GUI::Util::createDoubleSpinbox(
-                            [this] { return currentSpecularDataItem()->yAxisItem()->min(); },
-                            [this](double newValue) {
-                                for (auto item : mainSpecularDataItems()) {
-                                    item->yAxisItem()->setMin(newValue);
-                                    item->yAxisItem()->adjustLogRangeOrders();
-                                    updateUIValues();
-                                }
-                                gProjectDocument.value()->setModified();
-                            },
-                            &m_updaters));
-
-    yFormLayout->addRow("Max:",
-                        GUI::Util::createDoubleSpinbox(
-                            [this] { return currentSpecularDataItem()->yAxisItem()->max(); },
-                            [this](double newValue) {
-                                for (auto item : mainSpecularDataItems()) {
-                                    item->yAxisItem()->setMax(newValue);
-                                    item->yAxisItem()->adjustLogRangeOrders();
-                                    updateUIValues();
-                                }
-                                gProjectDocument.value()->setModified();
-                            },
-                            &m_updaters));
+    yFormLayout->addRow("Min:", GUI::Util::createDoubleSpinbox(
+                                    [this] { return currentData1DItem()->yAxisItem()->min(); },
+                                    [this](double newValue) {
+                                        for (auto item : mainData1DItems()) {
+                                            item->yAxisItem()->setMin(newValue);
+                                            item->yAxisItem()->adjustLogRangeOrders();
+                                            updateUIValues();
+                                        }
+                                        gProjectDocument.value()->setModified();
+                                    },
+                                    &m_updaters));
+
+    yFormLayout->addRow("Max:", GUI::Util::createDoubleSpinbox(
+                                    [this] { return currentData1DItem()->yAxisItem()->max(); },
+                                    [this](double newValue) {
+                                        for (auto item : mainData1DItems()) {
+                                            item->yAxisItem()->setMax(newValue);
+                                            item->yAxisItem()->adjustLogRangeOrders();
+                                            updateUIValues();
+                                        }
+                                        gProjectDocument.value()->setModified();
+                                    },
+                                    &m_updaters));
 
     yFormLayout->addRow(GUI::Util::createCheckBox(
-        "log10", [this] { return currentSpecularDataItem()->yAxisItem()->isLogScale(); },
+        "log10", [this] { return currentData1DItem()->yAxisItem()->isLogScale(); },
         [this, logRangeSpinbox](bool b) {
             logRangeSpinbox->setEnabled(b);
-            for (auto item : allSpecularDataItems())
+            for (auto item : allData1DItems())
                 item->yAxisItem()->setLogScale(b);
             gProjectDocument.value()->setModified();
         },
@@ -144,11 +140,11 @@ void SpecularDataPropertyWidget::createPanelElements()
     updateUIValues();
 
     // react on external changes (e.g. zooming in customplot shall update the axis values)
-    connect(currentSpecularDataItem(), &DataItem::itemAxesRangeChanged, this,
+    connect(currentData1DItem(), &DataItem::itemAxesRangeChanged, this,
             &SpecularDataPropertyWidget::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
-    for (auto item : allSpecularDataItems())
+    for (auto item : allData1DItems())
         connect(item, &DataItem::axesUnitsChanged, this,
                 &SpecularDataPropertyWidget::updateItemCoords, Qt::UniqueConnection);
 }
diff --git a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
index 6e89572f238..606928af656 100644
--- a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
+++ b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.h
@@ -17,7 +17,7 @@
 
 #include "GUI/View/Data/DataPropertyWidget.h"
 
-//! Widget to edit properties of a SpecularDataItem.
+//! Widget to edit properties of a Data1DItem.
 
 class SpecularDataPropertyWidget : public DataPropertyWidget {
     Q_OBJECT
diff --git a/GUI/View/PlotSpecular/SpecularDataWidget.cpp b/GUI/View/PlotSpecular/SpecularDataWidget.cpp
index e79473564de..00255c3f5c9 100644
--- a/GUI/View/PlotSpecular/SpecularDataWidget.cpp
+++ b/GUI/View/PlotSpecular/SpecularDataWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/PlotSpecular/SpecularDataWidget.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Support/Util/ActionFactory.h"
 #include "GUI/View/PlotSpecular/SpecularDataCanvas.h"
 #include "GUI/View/PlotSpecular/SpecularDataPropertyWidget.h"
diff --git a/GUI/View/PlotSpecular/SpecularDataWidget.h b/GUI/View/PlotSpecular/SpecularDataWidget.h
index 8bbe9ea97ad..65799f05986 100644
--- a/GUI/View/PlotSpecular/SpecularDataWidget.h
+++ b/GUI/View/PlotSpecular/SpecularDataWidget.h
@@ -18,7 +18,7 @@
 #include "GUI/View/Data/DataAccessWidget.h"
 
 class SpecularDataCanvas;
-class SpecularDataItem;
+class Data1DItem;
 class SpecularDataPropertyWidget;
 
 class SpecularDataWidget : public DataAccessWidget {
diff --git a/GUI/View/PlotSpecular/SpecularPlot.cpp b/GUI/View/PlotSpecular/SpecularPlot.cpp
index db66f3b6cb3..f17d60575ee 100644
--- a/GUI/View/PlotSpecular/SpecularPlot.cpp
+++ b/GUI/View/PlotSpecular/SpecularPlot.cpp
@@ -18,7 +18,7 @@
 #include "Device/Data/Datafield.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Tool/UpdateTimer.h"
 #include "GUI/Support/Util/QCP_Util.h"
@@ -48,12 +48,12 @@ SpecularPlot::SpecularPlot(QWidget* parent)
     setMouseTrackingEnabled(true);
 }
 
-void SpecularPlot::setSpecularItems(const QList<SpecularDataItem*>& items)
+void SpecularPlot::setData1DItems(const QList<Data1DItem*>& items)
 {
-    m_specularDataItems = items;
+    m_data1DItems = items;
 
     // set nullptr at destruction
-    for (auto*& item : m_specularDataItems)
+    for (auto*& item : m_data1DItems)
         if (item) {
             disconnect(item, &DataItem::destroyed, this, nullptr);
             connect(item, &DataItem::destroyed, this, [&item] { item = nullptr; });
@@ -63,21 +63,21 @@ void SpecularPlot::setSpecularItems(const QList<SpecularDataItem*>& items)
     connectItems();
 }
 
-QList<SpecularDataItem*> SpecularPlot::specularDataItems() const
+QList<Data1DItem*> SpecularPlot::data1DItems() const
 {
-    QList<SpecularDataItem*> nonNullItems;
-    for (auto* item : m_specularDataItems)
+    QList<Data1DItem*> nonNullItems;
+    for (auto* item : m_data1DItems)
         if (item)
             nonNullItems.append(item);
     return nonNullItems;
 }
 
-SpecularDataItem* SpecularPlot::currentSpecularDataItem() const
+Data1DItem* SpecularPlot::currentData1DItem() const
 {
-    if (specularDataItems().size() == 0)
+    if (data1DItems().size() == 0)
         return nullptr;
 
-    return specularDataItems().first();
+    return data1DItems().first();
 }
 
 PlotEventInfo SpecularPlot::eventInfo(double xpos, double ypos) const
@@ -95,33 +95,33 @@ PlotEventInfo SpecularPlot::eventInfo(double xpos, double ypos) const
 
 void SpecularPlot::setLog()
 {
-    if (!currentSpecularDataItem())
+    if (!currentData1DItem())
         return;
-    GUI::QCP_Util::setLogz(m_custom_plot->yAxis, currentSpecularDataItem()->isLog());
-    GUI::QCP_Util::setLogz(m_custom_plot->yAxis2, currentSpecularDataItem()->isLog());
+    GUI::QCP_Util::setLogz(m_custom_plot->yAxis, currentData1DItem()->isLog());
+    GUI::QCP_Util::setLogz(m_custom_plot->yAxis2, currentData1DItem()->isLog());
     replot();
 }
 
 void SpecularPlot::onXaxisRangeChanged(QCPRange newRange)
 {
-    for (auto item : specularDataItems()) {
+    for (auto item : data1DItems()) {
         item->setLowerX(newRange.lower);
         item->setUpperX(newRange.upper);
     }
     gProjectDocument.value()->setModified();
-    if (currentSpecularDataItem())
-        emit currentSpecularDataItem()->updateOtherPlots(currentSpecularDataItem());
+    if (currentData1DItem())
+        emit currentData1DItem()->updateOtherPlots(currentData1DItem());
 }
 
 void SpecularPlot::onYaxisRangeChanged(QCPRange newRange)
 {
-    for (auto item : specularDataItems()) {
+    for (auto item : data1DItems()) {
         item->setLowerY(newRange.lower);
         item->setUpperY(newRange.upper);
     }
     gProjectDocument.value()->setModified();
-    if (currentSpecularDataItem())
-        emit currentSpecularDataItem()->updateOtherPlots(currentSpecularDataItem());
+    if (currentData1DItem())
+        emit currentData1DItem()->updateOtherPlots(currentData1DItem());
 }
 
 void SpecularPlot::onTimeToReplot()
@@ -132,27 +132,27 @@ void SpecularPlot::onTimeToReplot()
 void SpecularPlot::connectItems()
 {
     // data
-    for (auto item : specularDataItems())
+    for (auto item : data1DItems())
         connect(item, &DataItem::datafieldChanged, this, &SpecularPlot::initPlot,
                 Qt::UniqueConnection);
 
     // units
-    for (auto item : specularDataItems())
+    for (auto item : data1DItems())
         connect(item, &DataItem::axesUnitsReplotRequested, this, &SpecularPlot::setPlot,
                 Qt::UniqueConnection);
 
     // x axis
-    connect(currentSpecularDataItem()->xAxisItem(), &BasicAxisItem::axisTitleChanged, this,
+    connect(currentData1DItem()->xAxisItem(), &BasicAxisItem::axisTitleChanged, this,
             &SpecularPlot::setAxesLabels, Qt::UniqueConnection);
-    connect(currentSpecularDataItem()->xAxisItem(), &BasicAxisItem::axisRangeChanged, this,
+    connect(currentData1DItem()->xAxisItem(), &BasicAxisItem::axisRangeChanged, this,
             &SpecularPlot::setAxesRanges, Qt::UniqueConnection);
 
     // y axis
-    connect(currentSpecularDataItem()->yAxisItem(), &BasicAxisItem::axisTitleChanged, this,
+    connect(currentData1DItem()->yAxisItem(), &BasicAxisItem::axisTitleChanged, this,
             &SpecularPlot::setAxesLabels, Qt::UniqueConnection);
-    connect(currentSpecularDataItem()->yAxisItem(), &BasicAxisItem::axisRangeChanged, this,
+    connect(currentData1DItem()->yAxisItem(), &BasicAxisItem::axisRangeChanged, this,
             &SpecularPlot::setAxesRanges, Qt::UniqueConnection);
-    connect(currentSpecularDataItem()->yAxisItem(), &AmplitudeAxisItem::logScaleChanged, this,
+    connect(currentData1DItem()->yAxisItem(), &AmplitudeAxisItem::logScaleChanged, this,
             &SpecularPlot::setLog, Qt::UniqueConnection);
 
     setConnected(true);
@@ -163,7 +163,7 @@ void SpecularPlot::initPlot()
     m_custom_plot->clearPlottables(); // clear graphs and error bars
     m_graph_map.clear();
     m_errorbar_map.clear();
-    for (auto item : specularDataItems()) {
+    for (auto item : data1DItems()) {
         m_custom_plot->addGraph();
         m_graph_map.insert(item, m_custom_plot->graph());
         m_custom_plot->graph()->setLineStyle(item->lineStyle());
@@ -227,7 +227,7 @@ void SpecularPlot::setUpdateTimerConnected(bool isConnected)
 
 void SpecularPlot::setPlot()
 {
-    for (auto item : specularDataItems())
+    for (auto item : data1DItems())
         setDataFromItem(item);
     setAxes();
     setAxesLabels();
@@ -244,27 +244,25 @@ void SpecularPlot::setAxes()
 
 void SpecularPlot::setAxesRanges()
 {
-    if (!currentSpecularDataItem())
+    if (!currentData1DItem())
         return;
     setAxesRangeConnected(false);
-    m_custom_plot->xAxis->setRange(currentSpecularDataItem()->lowerX(),
-                                   currentSpecularDataItem()->upperX());
-    m_custom_plot->yAxis->setRange(currentSpecularDataItem()->lowerY(),
-                                   currentSpecularDataItem()->upperY());
+    m_custom_plot->xAxis->setRange(currentData1DItem()->lowerX(), currentData1DItem()->upperX());
+    m_custom_plot->yAxis->setRange(currentData1DItem()->lowerY(), currentData1DItem()->upperY());
     setAxesRangeConnected(true);
     replot();
 }
 
 void SpecularPlot::setAxesLabels()
 {
-    if (!currentSpecularDataItem())
+    if (!currentData1DItem())
         return;
-    m_custom_plot->xAxis->setLabel(currentSpecularDataItem()->XaxisTitle());
+    m_custom_plot->xAxis->setLabel(currentData1DItem()->XaxisTitle());
     m_custom_plot->yAxis->setLabel("Reflectivity");
     replot();
 }
 
-void SpecularPlot::setDataFromItem(SpecularDataItem* item)
+void SpecularPlot::setDataFromItem(Data1DItem* item)
 {
     ASSERT(item && m_graph_map.contains(item));
     QCPGraph* graph = m_graph_map.value(item);
diff --git a/GUI/View/PlotSpecular/SpecularPlot.h b/GUI/View/PlotSpecular/SpecularPlot.h
index 99499772d18..985b80a802b 100644
--- a/GUI/View/PlotSpecular/SpecularPlot.h
+++ b/GUI/View/PlotSpecular/SpecularPlot.h
@@ -24,10 +24,10 @@ class QCPAxis;
 class QCPErrorBars;
 class QCPGraph;
 class QCPRange;
-class SpecularDataItem;
+class Data1DItem;
 class UpdateTimer;
 
-//! The SpecularPlot class presents 1D intensity data from SpecularDataItem.
+//! The SpecularPlot class presents 1D intensity data from Data1DItem.
 
 //! Provides minimal functionality for data plotting and axes interaction. Should be a component
 //! for more complicated plotting widgets. Corresponds to ColorMap for 2D intensity data.
@@ -37,9 +37,9 @@ class SpecularPlot : public ScientificPlot {
 public:
     explicit SpecularPlot(QWidget* parent = nullptr);
 
-    void setSpecularItems(const QList<SpecularDataItem*>& items);
-    QList<SpecularDataItem*> specularDataItems() const;
-    SpecularDataItem* currentSpecularDataItem() const;
+    void setData1DItems(const QList<Data1DItem*>& items);
+    QList<Data1DItem*> data1DItems() const;
+    Data1DItem* currentData1DItem() const;
 
     QSize sizeHint() const override { return QSize(500, 400); }
     QSize minimumSizeHint() const override { return QSize(128, 128); }
@@ -51,10 +51,10 @@ public:
     void setLog();
 
 private:
-    //! Propagate xmin, xmax back to IntensityItem
+    //! Propagate xmin, xmax back to Data2DItem
     void onXaxisRangeChanged(QCPRange newRange);
 
-    //! Propagate ymin, ymax back to IntensityItem
+    //! Propagate ymin, ymax back to Data2DItem
     void onYaxisRangeChanged(QCPRange newRange);
 
     //! Replots SpecularPlot.
@@ -85,17 +85,17 @@ private:
     void setAxesLabels();
 
     //! Sets the data values to SpecularPlot.
-    void setDataFromItem(SpecularDataItem* item);
+    void setDataFromItem(Data1DItem* item);
 
     //! Schedule replot for later execution by onTimeReplot() slot.
     void replot();
 
-    QList<SpecularDataItem*> m_specularDataItems;
+    QList<Data1DItem*> m_data1DItems;
 
     UpdateTimer* m_update_timer;
 
-    QMap<SpecularDataItem*, QCPGraph*> m_graph_map;
-    QMap<SpecularDataItem*, QCPErrorBars*> m_errorbar_map;
+    QMap<Data1DItem*, QCPGraph*> m_graph_map;
+    QMap<Data1DItem*, QCPErrorBars*> m_errorbar_map;
 };
 
 #endif // BORNAGAIN_GUI_VIEW_PLOTSPECULAR_SPECULARPLOT_H
diff --git a/GUI/View/PlotSpecular/SpecularPlotCanvas.cpp b/GUI/View/PlotSpecular/SpecularPlotCanvas.cpp
index f4a793b9e11..d4083db964a 100644
--- a/GUI/View/PlotSpecular/SpecularPlotCanvas.cpp
+++ b/GUI/View/PlotSpecular/SpecularPlotCanvas.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/PlotSpecular/SpecularPlotCanvas.h"
-#include "GUI/Model/Data/SpecularDataItem.h"
+#include "GUI/Model/Data/Data1DItem.h"
 #include "GUI/View/PlotScale/FontScalingEvent.h"
 #include "GUI/View/PlotSpecular/SpecularPlot.h"
 #include "GUI/View/PlotUtil/PlotStatusLabel.h"
@@ -37,9 +37,9 @@ SpecularPlotCanvas::SpecularPlotCanvas(QWidget* parent)
     setStatusLabelEnabled(false);
 }
 
-void SpecularPlotCanvas::setSpecularItems(const QList<SpecularDataItem*>& specularItems)
+void SpecularPlotCanvas::setData1DItems(const QList<Data1DItem*>& data1DItems)
 {
-    m_plot->setSpecularItems(specularItems);
+    m_plot->setData1DItems(data1DItems);
 }
 
 SpecularPlot* SpecularPlotCanvas::specularPlot()
diff --git a/GUI/View/PlotSpecular/SpecularPlotCanvas.h b/GUI/View/PlotSpecular/SpecularPlotCanvas.h
index 4e5ac25a567..ca6de937f88 100644
--- a/GUI/View/PlotSpecular/SpecularPlotCanvas.h
+++ b/GUI/View/PlotSpecular/SpecularPlotCanvas.h
@@ -21,7 +21,7 @@ class DataItem;
 class FontScalingEvent;
 class PlotStatusLabel;
 class QCustomPlot;
-class SpecularDataItem;
+class Data1DItem;
 class SpecularPlot;
 
 //! Contains SpecularPlot for specular data presentation, and provides status string appearance.
@@ -31,7 +31,7 @@ class SpecularPlotCanvas : public QWidget {
 public:
     explicit SpecularPlotCanvas(QWidget* parent = nullptr);
 
-    void setSpecularItems(const QList<SpecularDataItem*>& specularItems);
+    void setData1DItems(const QList<Data1DItem*>& data1DItems);
 
     SpecularPlot* specularPlot();
     QCustomPlot* customPlot();
diff --git a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
index 9d3827e3a36..0db751d7470 100644
--- a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
+++ b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Projection/IntensityDataProjectionsWidget.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 #include "GUI/View/Data/IntensityDataPropertyWidget.h"
 #include "GUI/View/Projection/ProjectionsEditorActions.h"
@@ -61,28 +61,28 @@ void IntensityDataProjectionsWidget::setJobOrRealItem(QObject* job_or_real_item)
 
 void IntensityDataProjectionsWidget::setContext()
 {
-    ASSERT(currentIntensityItem());
+    ASSERT(currentData2DItem());
 
     // The following line must come before 'm_projectionsCanvas->setContext()'!
     // It prevents problem with switching between datasets in projection mode.
     m_projectionsWidget->disconnectItem();
 
-    m_projectionsCanvas->setContext(currentIntensityItem());
-    m_projectionsWidget->setIntensityItem(currentIntensityItem());
+    m_projectionsCanvas->setContext(currentData2DItem());
+    m_projectionsWidget->setData2DItem(currentData2DItem());
 
-    m_editorActions->setContext(currentIntensityItem());
+    m_editorActions->setContext(currentData2DItem());
 }
 
 void IntensityDataProjectionsWidget::resetContext()
 {
     m_projectionsCanvas->resetContext();
     m_projectionsWidget->disconnectItem();
-    m_projectionsWidget->setIntensityItem(nullptr);
+    m_projectionsWidget->setData2DItem(nullptr);
 }
 
 void IntensityDataProjectionsWidget::showEvent(QShowEvent*)
 {
-    if (currentIntensityItem())
+    if (currentData2DItem())
         setContext();
 }
 
diff --git a/GUI/View/Projection/IntensityDataProjectionsWidget.h b/GUI/View/Projection/IntensityDataProjectionsWidget.h
index c0fb76bf28b..77baf89d146 100644
--- a/GUI/View/Projection/IntensityDataProjectionsWidget.h
+++ b/GUI/View/Projection/IntensityDataProjectionsWidget.h
@@ -23,7 +23,7 @@ class ProjectionsEditorCanvas;
 class ProjectionsToolbar;
 class ProjectionsWidget;
 
-//! Main widget to embed projections editor for IntensityItem.
+//! Main widget to embed projections editor for Data2DItem.
 //! Part of RealDataPresenter and JobResultsPresenter.
 
 class IntensityDataProjectionsWidget : public DataAccessWidget {
diff --git a/GUI/View/Projection/ProjectionsEditorActions.cpp b/GUI/View/Projection/ProjectionsEditorActions.cpp
index ac55709dac1..00e01b54516 100644
--- a/GUI/View/Projection/ProjectionsEditorActions.cpp
+++ b/GUI/View/Projection/ProjectionsEditorActions.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Projection/ProjectionsEditorActions.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/View/Projection/SaveProjectionsAssistant.h"
@@ -50,11 +50,11 @@ ProjectionsEditorActions::ProjectionsEditorActions(QWidget* parent)
     connect(m_deleteAction, &QAction::triggered, this, &ProjectionsEditorActions::onDeleteAction);
 }
 
-void ProjectionsEditorActions::setContext(IntensityItem* intensityItem)
+void ProjectionsEditorActions::setContext(Data2DItem* data2DItem)
 {
-    m_intensityItem = intensityItem;
+    m_data2DItem = data2DItem;
 
-    ProjectionContainerItem* containerItem = intensityItem->getOrCreateProjectionContainerItem();
+    ProjectionContainerItem* containerItem = data2DItem->getOrCreateProjectionContainerItem();
     ASSERT(containerItem);
 
     m_maskContainerModel = containerItem->model();
@@ -82,9 +82,9 @@ void ProjectionsEditorActions::onDeleteAction()
 //! Performs saving of projections in ascii file
 void ProjectionsEditorActions::onSaveAction()
 {
-    if (!m_intensityItem)
+    if (!m_data2DItem)
         return;
 
     SaveProjectionsAssistant assistant;
-    assistant.saveProjections(m_parent, m_intensityItem);
+    assistant.saveProjections(m_parent, m_data2DItem);
 }
diff --git a/GUI/View/Projection/ProjectionsEditorActions.h b/GUI/View/Projection/ProjectionsEditorActions.h
index 92dfa93093a..48f060fee38 100644
--- a/GUI/View/Projection/ProjectionsEditorActions.h
+++ b/GUI/View/Projection/ProjectionsEditorActions.h
@@ -18,7 +18,7 @@
 #include <QAction>
 #include <QItemSelectionModel>
 
-class IntensityItem;
+class Data2DItem;
 class MaskContainerModel;
 class ProjectionContainerItem;
 
@@ -30,7 +30,7 @@ class ProjectionsEditorActions : public QObject {
 public:
     ProjectionsEditorActions(QWidget* parent = nullptr);
 
-    void setContext(IntensityItem* intensityItem);
+    void setContext(Data2DItem* data2DItem);
 
     QList<QAction*> topToolbarActions();
 
@@ -47,7 +47,7 @@ private:
     QAction* m_togglePanelAction;
     QAction* m_deleteAction;
     MaskContainerModel* m_maskContainerModel;
-    IntensityItem* m_intensityItem;
+    Data2DItem* m_data2DItem;
     QItemSelectionModel* m_selectionModel;
     QWidget* m_parent;
 };
diff --git a/GUI/View/Projection/ProjectionsEditorCanvas.cpp b/GUI/View/Projection/ProjectionsEditorCanvas.cpp
index 452bbd8a642..88079132eca 100644
--- a/GUI/View/Projection/ProjectionsEditorCanvas.cpp
+++ b/GUI/View/Projection/ProjectionsEditorCanvas.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Projection/ProjectionsEditorCanvas.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
@@ -52,25 +52,25 @@ ProjectionsEditorCanvas::ProjectionsEditorCanvas(QWidget* parent)
             &ProjectionsEditorCanvas::onLineItemMoved, Qt::UniqueConnection);
 }
 
-void ProjectionsEditorCanvas::setContext(IntensityItem* intensityItem)
+void ProjectionsEditorCanvas::setContext(Data2DItem* data2DItem)
 {
-    ProjectionContainerItem* containerItem = intensityItem->getOrCreateProjectionContainerItem();
+    ProjectionContainerItem* containerItem = data2DItem->getOrCreateProjectionContainerItem();
     ASSERT(containerItem);
 
-    m_scene->setMaskContext(intensityItem, containerItem);
+    m_scene->setMaskContext(data2DItem, containerItem);
     m_scene->setSelectionModel(containerItem->selectionModel());
 
     // notify ProjectionPlot about the changes
-    connect(m_scene, &MaskGraphicsScene::lineItemProcessed, intensityItem,
-            &IntensityItem::projectionCreated, Qt::UniqueConnection);
-    connect(m_scene, &MaskGraphicsScene::lineItemMoved, intensityItem,
-            &IntensityItem::projectionPositionChanged, Qt::UniqueConnection);
-    connect(m_scene, &MaskGraphicsScene::lineItemDeleted, intensityItem,
-            &IntensityItem::projectionGone, Qt::UniqueConnection);
+    connect(m_scene, &MaskGraphicsScene::lineItemProcessed, data2DItem,
+            &Data2DItem::projectionCreated, Qt::UniqueConnection);
+    connect(m_scene, &MaskGraphicsScene::lineItemMoved, data2DItem,
+            &Data2DItem::projectionPositionChanged, Qt::UniqueConnection);
+    connect(m_scene, &MaskGraphicsScene::lineItemDeleted, data2DItem, &Data2DItem::projectionGone,
+            Qt::UniqueConnection);
 
     m_view->updateSize(m_view->size());
 
-    m_intensityItem = intensityItem;
+    m_data2DItem = data2DItem;
 
     setColorMap(m_scene->colorMap());
 
@@ -80,7 +80,7 @@ void ProjectionsEditorCanvas::setContext(IntensityItem* intensityItem)
 
 void ProjectionsEditorCanvas::resetContext()
 {
-    m_intensityItem = nullptr;
+    m_data2DItem = nullptr;
     setConnected(false);
     m_colorMap = nullptr;
     m_scene->resetContext();
@@ -103,8 +103,8 @@ void ProjectionsEditorCanvas::onEnteringColorMap()
         m_liveProjection->setParent(this);
 
         // notify ProjectionPlot about the changes
-        connect(m_liveProjection.get(), &MaskItem::maskGeometryChanged, m_intensityItem,
-                &IntensityItem::projectionPositionChanged, Qt::UniqueConnection);
+        connect(m_liveProjection.get(), &MaskItem::maskGeometryChanged, m_data2DItem,
+                &Data2DItem::projectionPositionChanged, Qt::UniqueConnection);
     }
 
     m_block_update = false;
@@ -118,8 +118,8 @@ void ProjectionsEditorCanvas::onLeavingColorMap()
     m_block_update = true;
 
     if (m_liveProjection) {
-        disconnect(m_liveProjection.get(), nullptr, m_intensityItem, nullptr);
-        emit m_intensityItem->projectionGone(m_liveProjection.get());
+        disconnect(m_liveProjection.get(), nullptr, m_data2DItem, nullptr);
+        emit m_data2DItem->projectionGone(m_liveProjection.get());
         m_liveProjection.reset();
     }
 
@@ -146,7 +146,7 @@ void ProjectionsEditorCanvas::onPositionChanged(double x, double y)
 void ProjectionsEditorCanvas::onResetViewRequest()
 {
     m_view->onResetViewRequest();
-    m_intensityItem->resetView();
+    m_data2DItem->resetView();
     gProjectDocument.value()->setModified();
 }
 
diff --git a/GUI/View/Projection/ProjectionsEditorCanvas.h b/GUI/View/Projection/ProjectionsEditorCanvas.h
index 2fab7e84e24..d216cdc5119 100644
--- a/GUI/View/Projection/ProjectionsEditorCanvas.h
+++ b/GUI/View/Projection/ProjectionsEditorCanvas.h
@@ -22,7 +22,7 @@
 
 class MaskGraphicsScene;
 class MaskGraphicsView;
-class IntensityItem;
+class Data2DItem;
 class ColorMap;
 class PlotStatusLabel;
 class MaskItem;
@@ -40,7 +40,7 @@ class ProjectionsEditorCanvas : public QWidget {
 public:
     ProjectionsEditorCanvas(QWidget* parent = nullptr);
 
-    void setContext(IntensityItem* intensityItem);
+    void setContext(Data2DItem* data2DItem);
     void resetContext();
 
 signals:
@@ -67,7 +67,7 @@ private:
     PlotStatusLabel* m_statusLabel;
 
     std::unique_ptr<MaskItem> m_liveProjection; //!< temporary projection item matching mouse move
-    IntensityItem* m_intensityItem;
+    Data2DItem* m_data2DItem;
 
     MaskEditorFlags::Activity m_currentActivity;
     bool m_block_update = false;
diff --git a/GUI/View/Projection/ProjectionsPlot.cpp b/GUI/View/Projection/ProjectionsPlot.cpp
index e49947ca104..f244c21cccd 100644
--- a/GUI/View/Projection/ProjectionsPlot.cpp
+++ b/GUI/View/Projection/ProjectionsPlot.cpp
@@ -17,7 +17,7 @@
 #include "Device/Data/Datafield.h"
 #include "GUI/Model/Axis/AmplitudeAxisItem.h"
 #include "GUI/Model/Axis/BasicAxisItem.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Data/ProjectionItems.h"
 #include "GUI/Support/Util/QCP_Util.h"
@@ -49,14 +49,14 @@ ProjectionsPlot::ProjectionsPlot(GUI::ID::ProjectionType projectionType, QWidget
     GUI::QCP_Util::setDefaultMargins(m_custom_plot);
 }
 
-void ProjectionsPlot::setIntensityItem(IntensityItem* item)
+void ProjectionsPlot::setData2DItem(Data2DItem* item)
 {
-    m_intensityItem = item;
+    m_data2DItem = item;
 
     // set nullptr at destruction
-    if (m_intensityItem) {
-        disconnect(m_intensityItem, &DataItem::destroyed, this, nullptr);
-        connect(m_intensityItem, &DataItem::destroyed, this, [this] { m_intensityItem = nullptr; });
+    if (m_data2DItem) {
+        disconnect(m_data2DItem, &DataItem::destroyed, this, nullptr);
+        connect(m_data2DItem, &DataItem::destroyed, this, [this] { m_data2DItem = nullptr; });
     }
 
     clearAll();
@@ -72,55 +72,55 @@ void ProjectionsPlot::onMarginsChanged(double left, double right)
 
 void ProjectionsPlot::connectItems()
 {
-    if (!intensityItem())
+    if (!data2DItem())
         return;
 
     // Units changed
-    connect(intensityItem(), &IntensityItem::axesUnitsReplotRequested, this,
+    connect(data2DItem(), &Data2DItem::axesUnitsReplotRequested, this,
             &ProjectionsPlot::updateProjections, Qt::UniqueConnection);
 
     // Update projection plot on new item appearance
-    connect(intensityItem(), &IntensityItem::projectionCreated, this,
-            &ProjectionsPlot::updateProjections, Qt::UniqueConnection);
+    connect(data2DItem(), &Data2DItem::projectionCreated, this, &ProjectionsPlot::updateProjections,
+            Qt::UniqueConnection);
 
     // Update projection position
-    connect(intensityItem(), &IntensityItem::projectionPositionChanged, this,
+    connect(data2DItem(), &Data2DItem::projectionPositionChanged, this,
             &ProjectionsPlot::onProjectionPropertyChanged, Qt::UniqueConnection);
 
     // Remove projection plot
-    connect(intensityItem(), &IntensityItem::projectionGone, this,
-            &ProjectionsPlot::clearProjection, Qt::UniqueConnection);
+    connect(data2DItem(), &Data2DItem::projectionGone, this, &ProjectionsPlot::clearProjection,
+            Qt::UniqueConnection);
 
     // Values of intensity changed, regenerate everything.
-    connect(intensityItem(), &IntensityItem::datafieldChanged, this,
+    connect(data2DItem(), &Data2DItem::datafieldChanged, this,
             &ProjectionsPlot::updateProjectionsData, Qt::UniqueConnection);
 
     // interpolation changed
-    connect(intensityItem(), &IntensityItem::interpolationChanged, this,
-            &ProjectionsPlot::setInterpolate, Qt::UniqueConnection);
+    connect(data2DItem(), &Data2DItem::interpolationChanged, this, &ProjectionsPlot::setInterpolate,
+            Qt::UniqueConnection);
 
     // AXES
     // if the colormap is zoomed or dragged:
-    connect(intensityItem(), &IntensityItem::updateOtherPlots, this,
-            &ProjectionsPlot::updateAxesRange, Qt::UniqueConnection);
+    connect(data2DItem(), &Data2DItem::updateOtherPlots, this, &ProjectionsPlot::updateAxesRange,
+            Qt::UniqueConnection);
 
     // if axes are changed externally, from the properties panel:
     // axes range
-    connect(intensityItem()->xAxisItem(), &BasicAxisItem::axisRangeChanged, this,
+    connect(data2DItem()->xAxisItem(), &BasicAxisItem::axisRangeChanged, this,
             &ProjectionsPlot::updateAxesRange, Qt::UniqueConnection);
-    connect(intensityItem()->yAxisItem(), &BasicAxisItem::axisRangeChanged, this,
+    connect(data2DItem()->yAxisItem(), &BasicAxisItem::axisRangeChanged, this,
             &ProjectionsPlot::updateAxesRange, Qt::UniqueConnection);
-    connect(intensityItem()->zAxisItem(), &BasicAxisItem::axisRangeChanged, this,
+    connect(data2DItem()->zAxisItem(), &BasicAxisItem::axisRangeChanged, this,
             &ProjectionsPlot::updateAxesRange, Qt::UniqueConnection);
 
     // axes title
-    connect(intensityItem()->xAxisItem(), &BasicAxisItem::axisTitleChanged, this,
+    connect(data2DItem()->xAxisItem(), &BasicAxisItem::axisTitleChanged, this,
             &ProjectionsPlot::updateAxesTitle, Qt::UniqueConnection);
-    connect(intensityItem()->yAxisItem(), &BasicAxisItem::axisTitleChanged, this,
+    connect(data2DItem()->yAxisItem(), &BasicAxisItem::axisTitleChanged, this,
             &ProjectionsPlot::updateAxesTitle, Qt::UniqueConnection);
 
     // z log scale
-    connect(intensityItem()->zAxisItem(), &AmplitudeAxisItem::logScaleChanged, this,
+    connect(data2DItem()->zAxisItem(), &AmplitudeAxisItem::logScaleChanged, this,
             &ProjectionsPlot::setLogz, Qt::UniqueConnection);
 
     updateProjectionsData();
@@ -128,23 +128,23 @@ void ProjectionsPlot::connectItems()
 
 void ProjectionsPlot::disconnectItems()
 {
-    if (!intensityItem())
+    if (!data2DItem())
         return;
 
-    disconnect(intensityItem(), nullptr, this, nullptr);
-    disconnect(intensityItem()->xAxisItem(), nullptr, this, nullptr);
-    disconnect(intensityItem()->yAxisItem(), nullptr, this, nullptr);
-    disconnect(intensityItem()->zAxisItem(), nullptr, this, nullptr);
+    disconnect(data2DItem(), nullptr, this, nullptr);
+    disconnect(data2DItem()->xAxisItem(), nullptr, this, nullptr);
+    disconnect(data2DItem()->yAxisItem(), nullptr, this, nullptr);
+    disconnect(data2DItem()->zAxisItem(), nullptr, this, nullptr);
 }
 
-IntensityItem* ProjectionsPlot::intensityItem()
+Data2DItem* ProjectionsPlot::data2DItem()
 {
-    return m_intensityItem;
+    return m_data2DItem;
 }
 
 ProjectionContainerItem* ProjectionsPlot::projectionContainerItem()
 {
-    ProjectionContainerItem* result = intensityItem()->projectionContainerItem();
+    ProjectionContainerItem* result = data2DItem()->projectionContainerItem();
     ASSERT(result);
     return result;
 }
@@ -167,7 +167,7 @@ bool ProjectionsPlot::isCorrectProjectionType(MaskItem* item)
 
 QCPGraph* ProjectionsPlot::graphForItem(MaskItemObject* item)
 {
-    if (!intensityItem())
+    if (!data2DItem())
         return nullptr;
 
     QCPGraph* graph = m_item_to_graph[item];
@@ -175,8 +175,8 @@ QCPGraph* ProjectionsPlot::graphForItem(MaskItemObject* item)
         graph = m_custom_plot->addGraph();
         QPen pen;
         pen.setColor(QColor(0, 0, 255, 200));
-        graph->setLineStyle(intensityItem()->isInterpolated() ? QCPGraph::lsLine
-                                                              : QCPGraph::lsStepCenter);
+        graph->setLineStyle(data2DItem()->isInterpolated() ? QCPGraph::lsLine
+                                                           : QCPGraph::lsStepCenter);
         graph->setPen(pen);
         m_item_to_graph[item] = graph;
     }
@@ -188,12 +188,12 @@ QCPGraph* ProjectionsPlot::graphForItem(MaskItemObject* item)
 
 void ProjectionsPlot::updateProjectionsData()
 {
-    if (!intensityItem())
+    if (!data2DItem())
         return;
 
     updateAxesRange();
     updateAxesTitle();
-    setLogz(intensityItem()->isLog());
+    setLogz(data2DItem()->isLog());
     updateProjections();
 }
 
@@ -219,11 +219,11 @@ void ProjectionsPlot::onProjectionPropertyChanged(MaskItemObject* item)
     replot();
 }
 
-//! Updates canva's axes to match current zoom level of IntensityItem
+//! Updates canva's axes to match current zoom level of Data2DItem
 
 void ProjectionsPlot::updateAxesRange()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
 
@@ -237,7 +237,7 @@ void ProjectionsPlot::updateAxesRange()
 
 void ProjectionsPlot::updateAxesTitle()
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii)
         return;
 
@@ -270,7 +270,7 @@ void ProjectionsPlot::clearAll()
 
 void ProjectionsPlot::setGraphFromItem(QCPGraph* graph, MaskItem* item)
 {
-    const IntensityItem* ii = intensityItem();
+    const Data2DItem* ii = data2DItem();
     if (!ii || !ii->c_field())
         return;
 
diff --git a/GUI/View/Projection/ProjectionsPlot.h b/GUI/View/Projection/ProjectionsPlot.h
index d206152c1d7..45c2fcbfe12 100644
--- a/GUI/View/Projection/ProjectionsPlot.h
+++ b/GUI/View/Projection/ProjectionsPlot.h
@@ -20,14 +20,14 @@
 #include <QWidget>
 
 class Datafield;
-class IntensityItem;
+class Data2DItem;
 class MaskItem;
 class MaskItemObject;
 class ProjectionContainerItem;
 class QCPGraph;
 class QCustomPlot;
 
-//! A customplot based widget to display projections of IntensityItem on X,Y axes.
+//! A customplot based widget to display projections of Data2DItem on X,Y axes.
 
 class ProjectionsPlot : public QWidget {
     Q_OBJECT
@@ -35,7 +35,7 @@ class ProjectionsPlot : public QWidget {
 public:
     ProjectionsPlot(GUI::ID::ProjectionType projectionType, QWidget* parent = nullptr);
 
-    void setIntensityItem(IntensityItem* item);
+    void setData2DItem(Data2DItem* item);
 
     void connectItems();
     void disconnectItems();
@@ -44,7 +44,7 @@ public slots:
     void onMarginsChanged(double left, double right);
 
 private:
-    IntensityItem* intensityItem();
+    Data2DItem* data2DItem();
     QVector<MaskItem*> projectionItems();
     bool isCorrectProjectionType(MaskItem* item);
     ProjectionContainerItem* projectionContainerItem();
@@ -67,7 +67,7 @@ private:
 
     bool isHorizontalType();
 
-    IntensityItem* m_intensityItem = nullptr;
+    Data2DItem* m_data2DItem = nullptr;
     GUI::ID::ProjectionType m_projectionType = GUI::ID::ProjectionType::Invalid;
     QCustomPlot* m_custom_plot;
     QMap<MaskItemObject*, QCPGraph*> m_item_to_graph;
diff --git a/GUI/View/Projection/ProjectionsWidget.cpp b/GUI/View/Projection/ProjectionsWidget.cpp
index 22a14726394..2801da19ed0 100644
--- a/GUI/View/Projection/ProjectionsWidget.cpp
+++ b/GUI/View/Projection/ProjectionsWidget.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Projection/ProjectionsWidget.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/View/Projection/ProjectionsPlot.h"
 #include <QTabWidget>
@@ -46,10 +46,10 @@ ProjectionsWidget::ProjectionsWidget(QWidget* parent)
     setConnected(true);
 }
 
-void ProjectionsWidget::setIntensityItem(IntensityItem* intensityItem)
+void ProjectionsWidget::setData2DItem(Data2DItem* data2DItem)
 {
-    m_xProjection->setIntensityItem(intensityItem);
-    m_yProjection->setIntensityItem(intensityItem);
+    m_xProjection->setData2DItem(data2DItem);
+    m_yProjection->setData2DItem(data2DItem);
 }
 
 void ProjectionsWidget::disconnectItem()
diff --git a/GUI/View/Projection/ProjectionsWidget.h b/GUI/View/Projection/ProjectionsWidget.h
index b59baaec8ca..84216c6f841 100644
--- a/GUI/View/Projection/ProjectionsWidget.h
+++ b/GUI/View/Projection/ProjectionsWidget.h
@@ -19,7 +19,7 @@
 #include <QTabWidget>
 
 class ProjectionsPlot;
-class IntensityItem;
+class Data2DItem;
 
 //! Holds tabs of vertical and horizontal projections, located at the bottom of ProjectionsEditor.
 
@@ -29,7 +29,7 @@ class ProjectionsWidget : public QWidget {
 public:
     ProjectionsWidget(QWidget* parent = nullptr);
 
-    void setIntensityItem(IntensityItem* intensityItem);
+    void setData2DItem(Data2DItem* data2DItem);
     void disconnectItem();
 
 signals:
diff --git a/GUI/View/Projection/SaveProjectionsAssistant.cpp b/GUI/View/Projection/SaveProjectionsAssistant.cpp
index 9d7122e02f9..b042544ebed 100644
--- a/GUI/View/Projection/SaveProjectionsAssistant.cpp
+++ b/GUI/View/Projection/SaveProjectionsAssistant.cpp
@@ -16,7 +16,7 @@
 #include "Base/Axis/Scale.h"
 #include "Base/Py/PyFmt.h"
 #include "Device/Data/Datafield.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Project/ProjectDocument.h"
 #include "GUI/Support/Style/ApplicationSettings.h"
@@ -62,9 +62,9 @@ SaveProjectionsAssistant::~SaveProjectionsAssistant() = default;
 
 //! Calls file open dialog and writes projection data as ASCII
 
-void SaveProjectionsAssistant::saveProjections(QWidget* parent, IntensityItem* intensityItem)
+void SaveProjectionsAssistant::saveProjections(QWidget* parent, Data2DItem* data2DItem)
 {
-    ASSERT(intensityItem);
+    ASSERT(data2DItem);
     ASSERT(gProjectDocument.has_value());
 
     QString defaultName = gProjectDocument.value()->userExportDir() + "/untitled.txt";
@@ -80,16 +80,16 @@ void SaveProjectionsAssistant::saveProjections(QWidget* parent, IntensityItem* i
     if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
         throw std::runtime_error("Cannot create file for saving projections");
 
-    m_field = intensityItem->c_field();
+    m_field = data2DItem->c_field();
 
     QTextStream out(&file);
 
     out << "# Projections along x-axis (horizontal projections) \n";
-    out << projectionsToString(GUI::ID::ProjectionType::Horizontal, intensityItem);
+    out << projectionsToString(GUI::ID::ProjectionType::Horizontal, data2DItem);
     out << "\n";
 
     out << "# Projections along y-axis (vertical projections) \n";
-    out << projectionsToString(GUI::ID::ProjectionType::Vertical, intensityItem);
+    out << projectionsToString(GUI::ID::ProjectionType::Vertical, data2DItem);
     out << "\n";
 
     file.close();
@@ -98,12 +98,12 @@ void SaveProjectionsAssistant::saveProjections(QWidget* parent, IntensityItem* i
 //! Generates multi-line string with projections data of given type (horizontal, vertical).
 
 QString SaveProjectionsAssistant::projectionsToString(GUI::ID::ProjectionType projectionsType,
-                                                      IntensityItem* intensityItem)
+                                                      Data2DItem* data2DItem)
 {
     QString result;
     QTextStream out(&result);
 
-    auto projData = projectionsData(projectionsType, intensityItem);
+    auto projData = projectionsData(projectionsType, data2DItem);
 
     if (projData.projections.isEmpty())
         return result;
@@ -125,12 +125,12 @@ QString SaveProjectionsAssistant::projectionsToString(GUI::ID::ProjectionType pr
 
 SaveProjectionsAssistant::ProjectionsData
 SaveProjectionsAssistant::projectionsData(GUI::ID::ProjectionType projectionsType,
-                                          IntensityItem* intensityItem)
+                                          Data2DItem* data2DItem)
 {
     ProjectionsData result;
     result.is_horizontal = (projectionsType == GUI::ID::ProjectionType::Horizontal);
 
-    for (auto* item : projectionItems(projectionsType, intensityItem)) {
+    for (auto* item : projectionItems(projectionsType, data2DItem)) {
         std::unique_ptr<Datafield> field;
         SaveProjectionsAssistant::Projection data;
 
@@ -157,9 +157,9 @@ SaveProjectionsAssistant::projectionsData(GUI::ID::ProjectionType projectionsTyp
 
 QVector<MaskItem*>
 SaveProjectionsAssistant::projectionItems(GUI::ID::ProjectionType projectionsType,
-                                          IntensityItem* intensityItem)
+                                          Data2DItem* data2DItem)
 {
-    auto result = intensityItem->projectionContainerItem()->projectionsOfType(projectionsType);
+    auto result = data2DItem->projectionContainerItem()->projectionsOfType(projectionsType);
     std::sort(result.begin(), result.end(),
               projectionsType == GUI::ID::ProjectionType::Horizontal ? horiz_less_posy
                                                                      : vert_less_posx);
diff --git a/GUI/View/Projection/SaveProjectionsAssistant.h b/GUI/View/Projection/SaveProjectionsAssistant.h
index d8c4456f86f..eeb1bec8115 100644
--- a/GUI/View/Projection/SaveProjectionsAssistant.h
+++ b/GUI/View/Projection/SaveProjectionsAssistant.h
@@ -21,7 +21,7 @@
 #include <QWidget>
 #include <memory>
 
-class IntensityItem;
+class Data2DItem;
 class Datafield;
 
 //! Assistant class which save all projections of IndensityDataItem into ASCII file.
@@ -31,7 +31,7 @@ public:
     SaveProjectionsAssistant();
     ~SaveProjectionsAssistant();
 
-    void saveProjections(QWidget* parent, IntensityItem* intensityItem);
+    void saveProjections(QWidget* parent, Data2DItem* data2DItem);
 
 private:
     struct Projection {
@@ -45,14 +45,13 @@ private:
         QVector<Projection> projections;
     };
 
-    QString projectionsToString(GUI::ID::ProjectionType projectionsType,
-                                IntensityItem* intensityItem);
+    QString projectionsToString(GUI::ID::ProjectionType projectionsType, Data2DItem* data2DItem);
 
     const Datafield* m_field;
     ProjectionsData projectionsData(GUI::ID::ProjectionType projectionsType,
-                                    IntensityItem* intensityItem);
+                                    Data2DItem* data2DItem);
     QVector<MaskItem*> projectionItems(GUI::ID::ProjectionType projectionsType,
-                                       IntensityItem* intensityItem);
+                                       Data2DItem* data2DItem);
 
     QString projectionFileHeader(ProjectionsData& projectionsData);
 };
diff --git a/Tests/Unit/GUI/TestAutosaveController.cpp b/Tests/Unit/GUI/TestAutosaveController.cpp
index f4eb6bd9a8e..80d64eff860 100644
--- a/Tests/Unit/GUI/TestAutosaveController.cpp
+++ b/Tests/Unit/GUI/TestAutosaveController.cpp
@@ -1,6 +1,6 @@
 #include "Base/Axis/Frame.h"
 #include "Device/Data/Datafield.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Device/InstrumentItems.h"
 #include "GUI/Model/Device/RealItem.h"
 #include "GUI/Model/Project/ProjectUtil.h"
@@ -116,10 +116,10 @@ TEST_F(TestAutosaveController, autosaveEnabled)
     instrument->setInstrumentName("GISAS");
 
     RealItem* realData = UTest::GUI::createRealData("TestData", *document->realModel(), 0., 2);
-    DataItem* intensityItem = realData->dataItem();
-    intensityItem->setSaveInBackground(false);
+    DataItem* data2DItem = realData->dataItem();
+    data2DItem->setSaveInBackground(false);
     const Frame frame = document->instrumentModel()->instrument2DItems().front()->makeFrame();
-    intensityItem->setDatafield({frame.clonedAxes()});
+    data2DItem->setDatafield({frame.clonedAxes()});
     document->clearModified();
     EXPECT_FALSE(document->isModified());
 
diff --git a/Tests/Unit/GUI/TestProjectDocument.cpp b/Tests/Unit/GUI/TestProjectDocument.cpp
index b0b15ad4b38..6e6cddd0086 100644
--- a/Tests/Unit/GUI/TestProjectDocument.cpp
+++ b/Tests/Unit/GUI/TestProjectDocument.cpp
@@ -1,6 +1,6 @@
 #include "Base/Axis/Frame.h"
 #include "Device/Data/Datafield.h"
-#include "GUI/Model/Data/IntensityItem.h"
+#include "GUI/Model/Data/Data2DItem.h"
 #include "GUI/Model/Device/InstrumentItems.h"
 #include "GUI/Model/Device/RealItem.h"
 #include "GUI/Model/Model/RealModel.h"
@@ -77,11 +77,11 @@ TEST_F(TestProjectDocument, projectDocumentWithData)
     instrument->setInstrumentName("GISAS");
     RealItem* realData = UTest::GUI::createRealData("TestData", *document.realModel(), 0., 2);
     ASSERT(realData);
-    DataItem* intensityItem = realData->dataItem();
+    DataItem* data2DItem = realData->dataItem();
     const Frame frame = document.instrumentModel()->instrument2DItems().front()->makeFrame();
-    intensityItem->setDatafield({frame.clonedAxes()});
+    data2DItem->setDatafield({frame.clonedAxes()});
 
-    intensityItem->setSaveInBackground(false);
+    data2DItem->setSaveInBackground(false);
     document.setProjectDir(projectDir);
     document.saveProjectFileWithData(projectDir + "/untitled" + ext);
 
-- 
GitLab