diff --git a/GUI/coregui/Models/Data1DViewItem.cpp b/GUI/coregui/Models/Data1DViewItem.cpp
index 8f6cec0ce80b63027afb91fa3978f886285f018c..a10585dbe944a2b4cf978b631905d3f0c17d7739 100644
--- a/GUI/coregui/Models/Data1DViewItem.cpp
+++ b/GUI/coregui/Models/Data1DViewItem.cpp
@@ -40,16 +40,14 @@ Data1DViewItem::Data1DViewItem() : SessionItem("Data1DViewItem"), m_job_item(nul
 {
     addProperty(P_TITLE, QString())->setVisible(false);
 
-    SessionItem* item = addGroupProperty(P_XAXIS, "BasicAxis");
-    item->getItem(BasicAxisItem::P_NBINS)->setVisible(false);
-
-    item = addGroupProperty(P_YAXIS, "AmplitudeAxis");
-    item->getItem(BasicAxisItem::P_NBINS)->setVisible(false);
-    item->getItem(BasicAxisItem::P_TITLE)->setVisible(true);
-
-    item = item->getItem(AmplitudeAxisItem::P_IS_VISIBLE);
-    item->setValue(true);
-    item->setVisible(false);
+    auto basicAxis = addProperty<BasicAxisItem>(P_XAXIS);
+    basicAxis->getItem(BasicAxisItem::P_NBINS)->setVisible(false);
+
+    auto amplitudeAxis = addProperty<AmplitudeAxisItem>(P_YAXIS);
+    amplitudeAxis->getItem(BasicAxisItem::P_NBINS)->setVisible(false);
+    amplitudeAxis->getItem(BasicAxisItem::P_TITLE)->setVisible(true);
+    amplitudeAxis->getItem(AmplitudeAxisItem::P_IS_VISIBLE)->setValue(true);
+    amplitudeAxis->getItem(AmplitudeAxisItem::P_IS_VISIBLE)->setVisible(false);
 
     registerTag(T_DATA_PROPERTIES, 1, 1, QStringList() << "DataPropertyContainer");
 
diff --git a/GUI/coregui/Models/DepthProbeInstrumentItem.cpp b/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
index 56c2c4825e4de8475fcd24ddc22ae7fad1a64040..a1fd3cd9325f0996f0fe32bf207a4d263ed44462 100644
--- a/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
+++ b/GUI/coregui/Models/DepthProbeInstrumentItem.cpp
@@ -17,6 +17,7 @@
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Device/Detector/SimpleUnitConverters.h"
 #include "GUI/coregui/Models/AxesItems.h"
+#include "GUI/coregui/Models/BeamItems.h"
 #include "GUI/coregui/Models/BeamWavelengthItem.h"
 #include "GUI/coregui/Models/SpecularBeamInclinationItem.h"
 #include "GUI/coregui/Models/TransformToDomain.h"
@@ -28,17 +29,17 @@ DepthProbeInstrumentItem::DepthProbeInstrumentItem() : InstrumentItem("DepthProb
 {
     setItemName("DepthProbeInstrument");
 
-    addGroupProperty(P_BEAM, "SpecularBeam");
+    addProperty<SpecularBeamItem>(P_BEAM);
 
     auto axisItem = beamItem()->currentInclinationAxisItem();
     axisItem->setLowerBound(0.0);
     axisItem->setUpperBound(1.0);
     axisItem->setBinCount(500);
 
-    auto axis = addGroupProperty(P_Z_AXIS, "BasicAxis");
+    auto axis = addProperty<BasicAxisItem>(P_Z_AXIS);
+    axis->setLowerBound(-100.0);
+    axis->setUpperBound(100.0);
     axis->getItem(BasicAxisItem::P_TITLE)->setVisible(false);
-    axis->setItemValue(BasicAxisItem::P_MIN_DEG, -100.0);
-    axis->setItemValue(BasicAxisItem::P_MAX_DEG, 100.0);
     axis->getItem(BasicAxisItem::P_NBINS)
         ->setToolTip("Number of points in scan across sample bulk");
     axis->getItem(BasicAxisItem::P_MIN_DEG)
diff --git a/GUI/coregui/Models/DetectorItems.cpp b/GUI/coregui/Models/DetectorItems.cpp
index bb44a35ecb3fb306cf98180ef21529faf84ebda8..2a25707dd4135a2b1b4cc90ca0635cd260b8fd26 100644
--- a/GUI/coregui/Models/DetectorItems.cpp
+++ b/GUI/coregui/Models/DetectorItems.cpp
@@ -40,7 +40,7 @@ DetectorItem::DetectorItem(const QString& modelType) : SessionItem(modelType)
     registerTag(T_MASKS, 0, -1, QStringList() << "MaskContainer");
     setDefaultTag(T_MASKS);
 
-    addGroupProperty(P_ANALYZER_DIRECTION, "Vector")->setToolTip(analyzer_direction_tooltip);
+    addProperty<VectorItem>(P_ANALYZER_DIRECTION)->setToolTip(analyzer_direction_tooltip);
     addProperty(P_ANALYZER_EFFICIENCY, 0.0)
         ->setLimits(RealLimits::limitless())
         .setToolTip(analyzer_efficiency_tooltip);
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index dacba428cfeaafa3ade52b39510f7ac0f0efbf00..7cf7fdd63f6387368fee10d46c014c6a382555b0 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -284,15 +284,15 @@ void OffSpecularInstrumentItem::updateToRealData(const RealDataItem* dataItem)
 namespace {
 void addAxisGroupProperty(SessionItem* parent, const QString& tag)
 {
-    auto item = parent->addGroupProperty(tag, "BasicAxis");
-    item->setToolTip("Incoming alpha range [deg]");
-    item->getItem(BasicAxisItem::P_TITLE)->setVisible(false);
-    item->getItem(BasicAxisItem::P_NBINS)->setToolTip("Number of points in scan");
-    item->getItem(BasicAxisItem::P_MIN_DEG)->setToolTip("Starting value [deg]");
-    item->getItem(BasicAxisItem::P_MAX_DEG)->setToolTip("Ending value [deg]");
-
-    item->setItemValue(BasicAxisItem::P_TITLE, "alpha_i");
-    item->setItemValue(BasicAxisItem::P_MIN_DEG, 0.0);
-    item->setItemValue(BasicAxisItem::P_MAX_DEG, 10.0);
+    auto axisItem = parent->addProperty<BasicAxisItem>(tag);
+    axisItem->setToolTip("Incoming alpha range [deg]");
+    axisItem->getItem(BasicAxisItem::P_TITLE)->setVisible(false);
+    axisItem->getItem(BasicAxisItem::P_NBINS)->setToolTip("Number of points in scan");
+    axisItem->getItem(BasicAxisItem::P_MIN_DEG)->setToolTip("Starting value [deg]");
+    axisItem->getItem(BasicAxisItem::P_MAX_DEG)->setToolTip("Ending value [deg]");
+
+    axisItem->setTitle("alpha_i");
+    axisItem->setLowerBound(0.0);
+    axisItem->setUpperBound(10.0);
 }
 } // namespace