diff --git a/GUI/coregui/DataLoaders/QREDataLoader.cpp b/GUI/coregui/DataLoaders/QREDataLoader.cpp
index f9b4d4b6a1fd1292416acb4dcb7e03ce0e8c9694..298cb003ef9668ed6f50f7aa8cfa22b8c1390385 100644
--- a/GUI/coregui/DataLoaders/QREDataLoader.cpp
+++ b/GUI/coregui/DataLoaders/QREDataLoader.cpp
@@ -557,8 +557,8 @@ void QREDataLoader::createOutputDataFromParsingResult(RealDataItem* item) const
     SpecularDataItem* specularItem = item->specularDataItem();
     ComboProperty combo = ComboProperty() << units_name;
 
-    specularItem->setItemValue(SpecularDataItem::P_AXES_UNITS, combo.variant());
-    specularItem->getItem(SpecularDataItem::P_AXES_UNITS)->setVisible(true);
+    specularItem->setAxesUnits(combo);
+    specularItem->getAxesUnitsItem()->setVisible(true);
 
     auto label_map = AxisNames::specAxis;
     const auto xAxisTitle = QString::fromStdString(label_map[Axes::Coords::QSPACE]);
diff --git a/GUI/coregui/Models/DataItem.cpp b/GUI/coregui/Models/DataItem.cpp
index c7bfdd816160c85d6592648e7fe7cca7b65accec..dd6b6a18ea3f83131e564fb7e38b0c65797b05c7 100644
--- a/GUI/coregui/Models/DataItem.cpp
+++ b/GUI/coregui/Models/DataItem.cpp
@@ -90,6 +90,21 @@ QString DataItem::selectedCoords() const
     return combo.getValue();
 }
 
+void DataItem::setAxesUnits(const ComboProperty& units)
+{
+    setItemValue(P_AXES_UNITS, units.variant());
+}
+
+SessionItem* DataItem::getAxesUnitsItem() const
+{
+    return getItem(P_AXES_UNITS);
+}
+
+bool DataItem::isAxesUnitsPropertyName(const QString& name)
+{
+    return name == P_AXES_UNITS;
+}
+
 DataItem::DataItem(const QString& modelType) : SessionItem(modelType)
 {
     // name of the file used to serialize given IntensityDataItem
diff --git a/GUI/coregui/Models/DataItem.h b/GUI/coregui/Models/DataItem.h
index 8ab0d2c885c6347245d48de316e9efac076e4137..eec5c2d59559ecf805d35d6451d9efbcb8697e93 100644
--- a/GUI/coregui/Models/DataItem.h
+++ b/GUI/coregui/Models/DataItem.h
@@ -21,6 +21,7 @@
 #include <QDateTime>
 #include <mutex>
 
+class ComboProperty;
 class ImportDataInfo;
 class InstrumentItem;
 
@@ -32,9 +33,9 @@ class InstrumentItem;
 class BA_CORE_API_ DataItem : public SessionItem, public SaveLoadInterface {
 private:
     static const QString P_FILE_NAME;
+    static const QString P_AXES_UNITS;
 
 public:
-    static const QString P_AXES_UNITS;
 
     OutputData<double>* getOutputData() { return m_data.get(); }
     const OutputData<double>* getOutputData() const { return m_data.get(); }
@@ -58,6 +59,10 @@ public:
 
     QString selectedCoords() const;
 
+    void setAxesUnits(const ComboProperty& units);
+    SessionItem* getAxesUnitsItem() const;
+    static bool isAxesUnitsPropertyName(const QString& name);
+    
     virtual void setXaxisTitle(const QString& title) = 0;
     virtual void setYaxisTitle(const QString& title) = 0;
     virtual void setAxesRangeToData() = 0;
diff --git a/GUI/coregui/Models/IntensityDataItem.cpp b/GUI/coregui/Models/IntensityDataItem.cpp
index a9387823a678215ac1dbde15c00f6a0377f04e4d..6b9d6b959479aab4abd978289e3d95f1d9b38bbf 100644
--- a/GUI/coregui/Models/IntensityDataItem.cpp
+++ b/GUI/coregui/Models/IntensityDataItem.cpp
@@ -234,8 +234,8 @@ void IntensityDataItem::reset(ImportDataInfo data)
 {
     ASSERT(data.unitsLabel() == "nbins");
     ComboProperty combo = ComboProperty() << data.unitsLabel();
-    setItemValue(IntensityDataItem::P_AXES_UNITS, combo.variant());
-    getItem(IntensityDataItem::P_AXES_UNITS)->setVisible(true);
+    setAxesUnits(combo);
+    getAxesUnitsItem()->setVisible(true);
 
     setXaxisTitle(data.axisLabel(0));
     setYaxisTitle(data.axisLabel(1));
diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp
index 791be4d035e65527a554cad6760f8bcb6eb19001..1d90da71bba17c627d4915ef0c8796701fd88fa3 100644
--- a/GUI/coregui/Models/JobItem.cpp
+++ b/GUI/coregui/Models/JobItem.cpp
@@ -90,7 +90,7 @@ JobItem::JobItem() : SessionItem("JobItem")
 
     mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
         if (item->parent() == this && dynamic_cast<DataItem*>(item)
-            && name == DataItem::P_AXES_UNITS)
+            && DataItem::isAxesUnitsPropertyName(name))
             dynamic_cast<DataItem*>(item)->updateCoords(instrumentItem());
     });
 
diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp
index c2dd4df2f74f9e0e7975b2f0d875b3e0ba089519..6dc14916a6231e1c6c7160cf023fcc01f7a79a79 100644
--- a/GUI/coregui/Models/JobItemUtils.cpp
+++ b/GUI/coregui/Models/JobItemUtils.cpp
@@ -107,7 +107,7 @@ void JobItemUtils::setIntensityItemCoords(DataItem* intensityItem,
 void JobItemUtils::setIntensityItemCoords(DataItem* intensityItem, const ICoordSystem& converter)
 {
     ComboProperty combo = availableUnits(converter);
-    intensityItem->setItemValue(DataItem::P_AXES_UNITS, combo.variant());
+    intensityItem->setAxesUnits(combo);
 }
 
 void JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem,
diff --git a/GUI/coregui/Models/RealDataItem.cpp b/GUI/coregui/Models/RealDataItem.cpp
index 81091b0488c285fc0c3a460c5f9a517d274895ba..e7bfe494450c00460f0f5ac281ee3f359f16dc6f 100644
--- a/GUI/coregui/Models/RealDataItem.cpp
+++ b/GUI/coregui/Models/RealDataItem.cpp
@@ -70,7 +70,8 @@ RealDataItem::RealDataItem() : SessionItem("RealData")
 
     mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
         auto data_item = dynamic_cast<DataItem*>(item);
-        if (!data_item || !linkedInstrument() || name != DataItem::P_AXES_UNITS)
+        if (!data_item || !linkedInstrument()
+            || DataItem::isAxesUnitsPropertyName(name))
             return;
 
         mapper()->setActive(false);
diff --git a/GUI/coregui/Models/SpecularDataItem.cpp b/GUI/coregui/Models/SpecularDataItem.cpp
index 1deeed9338102762ef536dec85ad2037889ccfc4..88a2fdd1d9b1cb7c2725beb94f5871c5e63c43d2 100644
--- a/GUI/coregui/Models/SpecularDataItem.cpp
+++ b/GUI/coregui/Models/SpecularDataItem.cpp
@@ -149,8 +149,8 @@ std::vector<int> SpecularDataItem::shape() const
 void SpecularDataItem::reset(ImportDataInfo data)
 {
     ComboProperty combo = ComboProperty() << data.unitsLabel();
-    setItemValue(SpecularDataItem::P_AXES_UNITS, combo.variant());
-    getItem(SpecularDataItem::P_AXES_UNITS)->setVisible(true);
+    setAxesUnits(combo);
+    getAxesUnitsItem()->setVisible(true);
 
     setXaxisTitle(data.axisLabel(0));
     setYaxisTitle(data.axisLabel(1));
diff --git a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
index 6f42427bcb59c635e387814a441df22209463235..92ac0d04c0e4b273fec664e189eb304d1ec02fee 100644
--- a/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
+++ b/GUI/coregui/Views/FitWidgets/FitComparisonController.cpp
@@ -177,7 +177,7 @@ void DiffItemController::subscribe()
     // on diff item units change
     m_diff_item->mapper()->setOnPropertyChange(
         [this](const QString& name) {
-            if (name == DataItem::P_AXES_UNITS)
+            if (DataItem::isAxesUnitsPropertyName(name))
                 m_diff_item->updateCoords(m_current_item->instrumentItem());
         },
         this);
diff --git a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
index 4cab14fadb2d2dbdd6f9146545252dcc192c8e8d..40959d74c674a513392f0085f99c6a1c9446bf1b 100644
--- a/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
+++ b/GUI/coregui/Views/InstrumentWidgets/DetectorMaskDelegate.cpp
@@ -73,5 +73,5 @@ void DetectorMaskDelegate::createIntensityDataItem()
     JobItemUtils::createDefaultDetectorMap(m_intensityItem, instrument);
 
     m_intensityItem->getOutputData()->setAllTo(1.0);
-    m_intensityItem->getItem(DataItem::P_AXES_UNITS)->setEnabled(false);
+    m_intensityItem->getAxesUnitsItem()->setEnabled(false);
 }
diff --git a/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp b/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
index bdd0c12a135e83c4274e58557f0e74d4c2cb74c9..38878e917e0363888de906c3b2e6f2d11e78ae25 100644
--- a/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
+++ b/GUI/coregui/Views/IntensityDataWidgets/ColorMap.cpp
@@ -115,7 +115,7 @@ void ColorMap::onPropertyChanged(const QString& property_name)
     } else if (property_name == IntensityDataItem::P_IS_INTERPOLATED) {
         m_colorMap->setInterpolate(intensityItem()->isInterpolated());
         replot();
-    } else if (property_name == DataItem::P_AXES_UNITS) {
+    } else if (DataItem::isAxesUnitsPropertyName(property_name)) {
         setAxesRangeFromItem(intensityItem());
         replot();
     }
diff --git a/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp b/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
index e76cc5bb26e1ac54c89700ad33a80bd264bd6afc..b39ab181dbeb5e457a05686b1f5977bc486ab4d6 100644
--- a/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
+++ b/GUI/coregui/Views/SpecularDataWidgets/SpecularPlot.cpp
@@ -75,7 +75,7 @@ void SpecularPlot::onPropertyChanged(const QString& property_name)
     if (m_block_update)
         return;
 
-    if (property_name == DataItem::P_AXES_UNITS) {
+    if (DataItem::isAxesUnitsPropertyName(property_name)) {
         setAxesRangeFromItem(specularItem());
         replot();
     }