diff --git a/GUI/Models/Data1DViewItem.cpp b/GUI/Models/Data1DViewItem.cpp
index f0e6cb7f15c9667ae6201a74d2b45f0ede4fd55c..41ba9862869d5900877b23c02cc54c6495b21c4c 100644
--- a/GUI/Models/Data1DViewItem.cpp
+++ b/GUI/Models/Data1DViewItem.cpp
@@ -36,7 +36,9 @@ const QString Data1DViewItem::P_YAXIS = "y-axis";
 const QString Data1DViewItem::P_AXES_UNITS = "Axes Units";
 const QString Data1DViewItem::T_DATA_PROPERTIES = "Data property container";
 
-Data1DViewItem::Data1DViewItem() : SessionItem("Data1DViewItem"), m_job_item(nullptr)
+const QString Data1DViewItem::M_TYPE = "Data1DViewItem";
+
+Data1DViewItem::Data1DViewItem() : SessionItem(M_TYPE), m_job_item(nullptr)
 {
     addProperty(P_TITLE, QString())->setVisible(false);
 
@@ -139,6 +141,21 @@ void Data1DViewItem::setAxesRangeToData()
     setUpperY(data_range.second);
 }
 
+ComboProperty Data1DViewItem::axesUnits() const
+{
+    return getItemValue(P_AXES_UNITS).value<ComboProperty>();
+}
+
+void Data1DViewItem::setAxesUnits(const ComboProperty& units)
+{
+    setItemValue(Data1DViewItem::P_AXES_UNITS, units.variant());
+}
+
+bool Data1DViewItem::isAxesUnitsPropertyName(const QString& name)
+{
+    return name == P_AXES_UNITS;
+}
+
 void Data1DViewItem::resetToDefault()
 {
     // TODO: implement when applying DataITem1DView in ImportView
@@ -207,6 +224,11 @@ DataPropertyContainer* Data1DViewItem::propertyContainerItem()
     return item<DataPropertyContainer>(T_DATA_PROPERTIES);
 }
 
+DataPropertyContainer* Data1DViewItem::createPropertyContainerItem()
+{
+    return model()->insertItem<DataPropertyContainer>(this, -1, T_DATA_PROPERTIES);
+}
+
 const BasicAxisItem* Data1DViewItem::xAxisItem() const
 {
     return item<BasicAxisItem>(P_XAXIS);
@@ -227,6 +249,16 @@ AmplitudeAxisItem* Data1DViewItem::yAxisItem()
     return item<AmplitudeAxisItem>(P_YAXIS);
 }
 
+bool Data1DViewItem::isXAxisPropertyName(const QString& name)
+{
+    return name == P_XAXIS;
+}
+
+bool Data1DViewItem::isYAxisPropertyName(const QString& name)
+{
+    return name == P_YAXIS;
+}
+
 //! Set axes viewport to original data.
 
 void Data1DViewItem::resetView()
diff --git a/GUI/Models/Data1DViewItem.h b/GUI/Models/Data1DViewItem.h
index 679c02ba965471995966450934022280f09736d4..1f1154954d41f886bde66aca70672498976980f4 100644
--- a/GUI/Models/Data1DViewItem.h
+++ b/GUI/Models/Data1DViewItem.h
@@ -19,6 +19,7 @@
 
 class AmplitudeAxisItem;
 class BasicAxisItem;
+class ComboProperty;
 class DataPropertyContainer;
 class Data1DProperties;
 class DataItem;
@@ -30,13 +31,16 @@ template <class T> class OutputData;
 //! items determines axes' limits.
 
 class BA_CORE_API_ Data1DViewItem : public SessionItem {
-public:
+private:
     static const QString P_TITLE;
     static const QString P_XAXIS;
     static const QString P_YAXIS;
     static const QString P_AXES_UNITS;
     static const QString T_DATA_PROPERTIES;
 
+public:
+    static const QString M_TYPE;
+
     Data1DViewItem();
 
     //! Number of bins in data
@@ -59,12 +63,19 @@ public:
     const AmplitudeAxisItem* yAxisItem() const;
     AmplitudeAxisItem* yAxisItem();
 
+    static bool isXAxisPropertyName(const QString& name);
+    static bool isYAxisPropertyName(const QString& name);    
+
     void resetView();
 
     void setXaxisTitle(const QString& title);
     void setYaxisTitle(const QString& title);
     void setAxesRangeToData();
 
+    ComboProperty axesUnits() const;
+    void setAxesUnits(const ComboProperty& units);
+    static bool isAxesUnitsPropertyName(const QString& name);
+
     //! Returns data view to default state (no dimensional units, default axes' names)
     void resetToDefault();
 
@@ -86,6 +97,7 @@ public:
     void setLog(bool log_flag);
 
     DataPropertyContainer* propertyContainerItem();
+    DataPropertyContainer* createPropertyContainerItem();
 
 private:
     QPair<double, double> dataRange(const OutputData<double>* data) const;
diff --git a/GUI/Models/DataViewUtils.cpp b/GUI/Models/DataViewUtils.cpp
index d069c1631e87ee00bc717b438e1d6147ea27f0b3..c2bb50ff4a9973c56eda54b6a86ebe6aca6d6fde 100644
--- a/GUI/Models/DataViewUtils.cpp
+++ b/GUI/Models/DataViewUtils.cpp
@@ -34,8 +34,7 @@ ICoordSystem* getConverter(Data1DViewItem* view_item)
 
 Axes::Coords selectedUnits(Data1DViewItem* view_item)
 {
-    auto current_unit_name =
-        view_item->getItemValue(Data1DViewItem::P_AXES_UNITS).value<ComboProperty>().getValue();
+    QString current_unit_name = view_item->axesUnits().getValue();
     return JobItemUtils::coordsFromName(current_unit_name);
 }
 
diff --git a/GUI/Models/ItemCatalog.cpp b/GUI/Models/ItemCatalog.cpp
index dcc941bb984ed10ab897429ffd6774adb4e320d1..c51d8395da3a21225669996cd49f57ef2f9a6af7 100644
--- a/GUI/Models/ItemCatalog.cpp
+++ b/GUI/Models/ItemCatalog.cpp
@@ -178,7 +178,7 @@ ItemCatalog::ItemCatalog()
 
     addItem<IntensityDataItem>();
     addItem<SpecularDataItem>();
-    add("Data1DViewItem", create_new<Data1DViewItem>);
+    addItem<Data1DViewItem>();
     add("DataPropertyContainer", create_new<DataPropertyContainer>);
     add("DataItem1DProperties", create_new<Data1DProperties>);
 
diff --git a/GUI/Models/JobItem.cpp b/GUI/Models/JobItem.cpp
index 047dbd29709116bd024932bae3d681b3685b3406..106140e31a93959ea90c1bc9390a70a1aae93110 100644
--- a/GUI/Models/JobItem.cpp
+++ b/GUI/Models/JobItem.cpp
@@ -73,13 +73,13 @@ JobItem::JobItem() : SessionItem(M_TYPE)
     addProperty(P_PRESENTATION_TYPE, QVariant::Type::Invalid)->setVisible(false);
 
     registerTag(T_SAMPLE, 1, 1, QStringList() << "MultiLayer");
-    registerTag(T_MATERIAL_CONTAINER, 1, 1, QStringList{"MaterialContainer"});
+    registerTag(T_MATERIAL_CONTAINER, 1, 1, { MaterialItemContainer::M_TYPE });
     registerTag(T_INSTRUMENT, 1, 1,
                 {GISASInstrumentItem::M_TYPE, OffSpecularInstrumentItem::M_TYPE,
                  SpecularInstrumentItem::M_TYPE, DepthProbeInstrumentItem::M_TYPE});
     registerTag(T_OUTPUT, 1, 1, {IntensityDataItem::M_TYPE, SpecularDataItem::M_TYPE});
     registerTag(T_REALDATA, 1, 1, QStringList() << "RealData");
-    registerTag(T_DATAVIEW, 1, 1, QStringList() << "Data1DViewItem");
+    registerTag(T_DATAVIEW, 1, 1, { Data1DViewItem::M_TYPE });
     registerTag(T_PARAMETER_TREE, 0, -1, QStringList() << "Parameter Container");
 
     registerTag(T_SIMULATION_OPTIONS, 1, 1, QStringList() << "SimulationOptions");
diff --git a/GUI/Models/JobModelFunctions.cpp b/GUI/Models/JobModelFunctions.cpp
index eb0273a4ff6ead79accd7ec789c3f184440e2024..b7ae3631ca77c03b8ecceae16b8293b855798fa0 100644
--- a/GUI/Models/JobModelFunctions.cpp
+++ b/GUI/Models/JobModelFunctions.cpp
@@ -70,8 +70,7 @@ void JobModelFunctions::initDataView(JobItem* job_item)
     SessionModel* model = job_item->model();
     auto view_item = job_item->createDataViewItem();
 
-    auto property_container =
-        model->insertItem<DataPropertyContainer>(view_item, -1, Data1DViewItem::T_DATA_PROPERTIES);
+    auto property_container = view_item->createPropertyContainerItem();
 
     property_container->addItem(job_item->realDataItem()->dataItem());
     property_container->addItem(job_item->dataItem());
@@ -79,8 +78,7 @@ void JobModelFunctions::initDataView(JobItem* job_item)
     // also triggers Data1DViewItem::setAxesRangeToData and DataViewUtils::updateAxesTitle by
     // setting new value of P_AXES_UNITS.
     auto converter = job_item->instrumentItem()->createCoordSystem();
-    view_item->setItemValue(Data1DViewItem::P_AXES_UNITS,
-                            JobItemUtils::availableUnits(*converter).variant());
+    view_item->setAxesUnits(JobItemUtils::availableUnits(*converter));
 }
 
 void JobModelFunctions::setupJobItemSampleData(JobItem* jobItem, const MultiLayerItem* sampleItem)
diff --git a/GUI/Views/FitWidgets/FitComparisonViewController.cpp b/GUI/Views/FitWidgets/FitComparisonViewController.cpp
index ad31e77bc69c1e72e32e410ca9ab808c704d9042..83ea4da200ffa99611c7e92586854455e63c872a 100644
--- a/GUI/Views/FitWidgets/FitComparisonViewController.cpp
+++ b/GUI/Views/FitWidgets/FitComparisonViewController.cpp
@@ -15,6 +15,7 @@
 #include "GUI/Views/FitWidgets/FitComparisonViewController.h"
 #include "Device/Data/DataUtils.h"
 #include "GUI/Models/AxesItems.h"
+#include "GUI/Models/ComboProperty.h"
 #include "GUI/Models/Data1DViewItem.h"
 #include "GUI/Models/DataItem.h"
 #include "GUI/Models/DataPropertyContainer.h"
@@ -91,14 +92,13 @@ void FitComparison1DViewController::clear()
 void FitComparison1DViewController::createDiffViewItem(JobItem* job_item)
 {
     m_diff_view_item = m_diff_item_controller->model()->insertItem<Data1DViewItem>();
-    auto container = m_diff_view_item->model()->insertItem<DataPropertyContainer>(
-        m_diff_view_item, -1, Data1DViewItem::T_DATA_PROPERTIES);
+    auto container = m_diff_view_item->createPropertyContainerItem();
     container->addItem(m_diff_item_controller->diffItem());
 
     m_diff_view_item->setJobItem(job_item);
     auto job_data_view = job_item->dataItemView();
-    auto units_value = job_data_view->getItemValue(Data1DViewItem::P_AXES_UNITS);
-    m_diff_view_item->setItemValue(Data1DViewItem::P_AXES_UNITS, units_value);
+    ComboProperty units_value = job_data_view->axesUnits();
+    m_diff_view_item->setAxesUnits(units_value);
 }
 
 void FitComparison1DViewController::deleteDiffViewItem()
diff --git a/GUI/Views/IntensityDataWidgets/Plot1D.cpp b/GUI/Views/IntensityDataWidgets/Plot1D.cpp
index caa5cb2593c9fc7698c81d531065c5658d0fc4cc..93035da72ca376968f925e7af5108eb6a1ae5fb8 100644
--- a/GUI/Views/IntensityDataWidgets/Plot1D.cpp
+++ b/GUI/Views/IntensityDataWidgets/Plot1D.cpp
@@ -81,7 +81,7 @@ void Plot1D::onPropertyChanged(const QString& property_name)
     if (m_block_update)
         return;
 
-    if (property_name == Data1DViewItem::P_AXES_UNITS) {
+    if (Data1DViewItem::isAxesUnitsPropertyName(property_name)) {
         setAxesRangeFromItem(viewItem());
         updateAllGraphs();
         replot();
@@ -275,14 +275,14 @@ void Plot1D::modifyAxesProperties(const QString& axisName, const QString& proper
         replot();
     }
 
-    if (axisName == Data1DViewItem::P_XAXIS) {
+    if (Data1DViewItem::isXAxisPropertyName(axisName)) {
         if (BasicAxisItem::isBoundsPropertiesName(propertyName)) {
             setAxesRangeConnected(false);
             m_custom_plot->xAxis->setRange(viewItem()->getLowerX(), viewItem()->getUpperX());
             setAxesRangeConnected(true);
             replot();
         }
-    } else if (axisName == Data1DViewItem::P_YAXIS) {
+    } else if (Data1DViewItem::isYAxisPropertyName(axisName)) {
         if (BasicAxisItem::isBoundsPropertiesName(propertyName)) {
             setAxesRangeConnected(false);
             m_custom_plot->yAxis->setRange(viewItem()->getLowerY(), viewItem()->getUpperY());
diff --git a/GUI/Views/TestView.cpp b/GUI/Views/TestView.cpp
index c1a267c057fb61e7b40743c7b89dc3edf9f766e2..fd93a2498e0df6b396d0bf790ce7ae58db2df23f 100644
--- a/GUI/Views/TestView.cpp
+++ b/GUI/Views/TestView.cpp
@@ -197,8 +197,7 @@ void TestView::test_specular_data_widget()
     // creating data view
     auto data_view = new Data1DViewItem();
     job_item->addDataViewItem(data_view);
-    data_view->insertItem(-1, new DataPropertyContainer, Data1DViewItem::T_DATA_PROPERTIES);
-    auto container = data_view->item<DataPropertyContainer>(Data1DViewItem::T_DATA_PROPERTIES);
+    auto container = data_view->createPropertyContainerItem();
     container->addItem(job_item->realDataItem()->dataItem());
     container->addItem(job_item->dataItem());