diff --git a/GUI/View/Plot2D/IntensityDataWidget.cpp b/GUI/View/Plot2D/IntensityDataWidget.cpp
index bf6385c2a20397e02efb141d3bf52b7ff19f7cd7..51b473de6d7024afd4b821415222aca0efcc5105 100644
--- a/GUI/View/Plot2D/IntensityDataWidget.cpp
+++ b/GUI/View/Plot2D/IntensityDataWidget.cpp
@@ -12,20 +12,17 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/View/Plot2D/IntensityDataWidget.h"
 #include "GUI/Model/Data/IntensityDataItem.h"
-#include "GUI/Model/Data/RealDataItem.h"
-#include "GUI/Model/Job/JobItem.h"
-#include "GUI/Util/ActionFactory.h"
+#include "GUI/View/Plot2D/IntensityDataWidget.h"
 #include "GUI/View/Plot2D/IntensityDataCanvas.h"
 #include "GUI/View/Plot2D/IntensityDataFFTPresenter.h"
 #include "GUI/View/Plot2D/IntensityDataPropertyWidget.h"
-#include "GUI/View/Tool/DataItemUtils.h"
+#include "GUI/Util/ActionFactory.h"
 #include <QBoxLayout>
 #include <QMenu>
 
 IntensityDataWidget::IntensityDataWidget(QWidget* parent)
-    : SessionItemWidget(parent)
+    : DataAccessWidget(parent)
     , m_intensityCanvas(new IntensityDataCanvas)
     , m_propertyWidget(new IntensityDataPropertyWidget(this))
     , m_fftPresenter(new IntensityDataFFTPresenter(this))
@@ -49,46 +46,28 @@ IntensityDataWidget::IntensityDataWidget(QWidget* parent)
     m_togglePropertiesAction =
         ActionFactory::createTogglePropertiesPanelAction(this, m_propertyWidget);
 
-
     m_propertyWidget->setVisible(false);
 }
 
-void IntensityDataWidget::setItem(SessionItem* _jobItem)
+void IntensityDataWidget::setItem(SessionItem* item)
 {
-    SessionItemWidget::setItem(_jobItem); // now we can access to jobItem()
-
-    if(dynamic_cast<JobItem*>(_jobItem))
-        m_intensityCanvas->setJobOrRealItem(dynamic_cast<JobItem*>(_jobItem));
+    SessionItemWidget::setItem(item);
+    if(dynamic_cast<JobItem*>(item))
+        setJobOrRealItem(dynamic_cast<JobItem*>(item));
     else
-        m_intensityCanvas->setJobOrRealItem(dynamic_cast<RealDataItem*>(_jobItem));
+        setJobOrRealItem(dynamic_cast<RealDataItem*>(item));
+}
 
-    m_propertyWidget->setIntensityItems({intensityDataItem(),
+void IntensityDataWidget::setJobOrRealItem(JobRealBase* job_or_real_item)
+{
+    DataAccessWidget::setJobOrRealItem(job_or_real_item);
+    m_intensityCanvas->setJobOrRealItem(job_or_real_item);
+    m_propertyWidget->setIntensityItems({currentIntensityDataItem(),
                                          realIntensityDataItem(),
                                          diffIntensityDataItem()});
     m_fftPresenter->reset();
 }
 
-JobItem* IntensityDataWidget::jobItem()
-{
-    return dynamic_cast<JobItem*>(currentItem());
-}
-
-IntensityDataItem* IntensityDataWidget::realIntensityDataItem()
-{
-    if (jobItem() && jobItem()->realDataItem())
-        return jobItem()->realDataItem()->intensityDataItem();
-    else
-        return nullptr;
-}
-
-IntensityDataItem* IntensityDataWidget::diffIntensityDataItem()
-{
-    if (jobItem())
-        return dynamic_cast<IntensityDataItem*>(jobItem()->diffDataItem());
-    else
-        return nullptr;
-}
-
 QList<QAction*> IntensityDataWidget::actionList()
 {
     return m_intensityCanvas->actionList() + m_fftPresenter->actionList()
@@ -105,21 +84,18 @@ void IntensityDataWidget::onContextMenuRequest(const QPoint& point)
 
 void IntensityDataWidget::onFFTAction()
 {
-    if (!intensityDataItem() || !intensityDataItem()->getDatafield())
+    if (!currentIntensityDataItem() || !currentIntensityDataItem()->getDatafield())
         return;
 
     if (m_fftPresenter->inFFTMode()) {
-        auto* fftItem = m_fftPresenter->fftItem(intensityDataItem());
+        auto* fftItem = m_fftPresenter->fftItem(currentIntensityDataItem());
         m_intensityCanvas->setFourierIntensity(fftItem);
         m_propertyWidget->setIntensityItems({fftItem});
     } else {
         // returning ColorMap to non-fft presentation
         m_intensityCanvas->setFourierIntensity(nullptr);
-        m_propertyWidget->setIntensityItems({intensityDataItem()});
+        m_propertyWidget->setIntensityItems({currentIntensityDataItem(),
+                                             realIntensityDataItem(),
+                                             diffIntensityDataItem()});
     }
 }
-
-IntensityDataItem* IntensityDataWidget::intensityDataItem()
-{
-    return GUI::Model::DataItemUtils::intensityDataItem(currentItem());
-}
diff --git a/GUI/View/Plot2D/IntensityDataWidget.h b/GUI/View/Plot2D/IntensityDataWidget.h
index 5eba67932868563d59d2edefa908e88c30297ad9..6da60d548a6dbbf9bcd27a629976a7ed5098c837 100644
--- a/GUI/View/Plot2D/IntensityDataWidget.h
+++ b/GUI/View/Plot2D/IntensityDataWidget.h
@@ -15,41 +15,32 @@
 #ifndef BORNAGAIN_GUI_VIEW_PLOT2D_INTENSITYDATAWIDGET_H
 #define BORNAGAIN_GUI_VIEW_PLOT2D_INTENSITYDATAWIDGET_H
 
-#include "GUI/View/Common/SessionItemWidget.h"
-#include <memory>
+#include "GUI/View/Common/DataAccessWidget.h"
 
 class SessionItem;
 class IntensityDataCanvas;
 class IntensityDataPropertyWidget;
-class IntensityDataItem;
 class QAction;
-class QContextMenuEvent;
 class IntensityDataFFTPresenter;
-class JobItem;
 
 //! A common widget to display color map (IntensityDataCanvas) and properties
 //! (ItemPropertyWidget) of intensity data item.
 
-class IntensityDataWidget : public SessionItemWidget {
+class IntensityDataWidget : public DataAccessWidget {
     Q_OBJECT
 
 public:
     IntensityDataWidget(QWidget* parent = nullptr);
 
-    void setItem(SessionItem* _jobItem) override;
-    JobItem* jobItem();
-    IntensityDataItem* realIntensityDataItem();
-    IntensityDataItem* diffIntensityDataItem();
+    void setItem(SessionItem* item) override;
+    void setJobOrRealItem(JobRealBase* job_or_real_item) override;
 
     QList<QAction*> actionList() override;
 
-private slots:
+private:
     void onContextMenuRequest(const QPoint& point);
     void onFFTAction();
 
-private:
-    IntensityDataItem* intensityDataItem();
-
     IntensityDataCanvas* m_intensityCanvas;
     IntensityDataPropertyWidget* m_propertyWidget;
     IntensityDataFFTPresenter* m_fftPresenter;
diff --git a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
index c9222b1b1a071719e66fa79df36fd0017ec10879..081c6121bacb0b02863d4676ddfb013becf9b106 100644
--- a/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
+++ b/GUI/View/Projection/IntensityDataProjectionsWidget.cpp
@@ -130,4 +130,3 @@ void IntensityDataProjectionsWidget::setup_connections()
 
     m_toolbar->onChangeActivityRequest(MaskEditorFlags::HORIZONTAL_LINE_MODE);
 }
-