diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp
index fd3aab175c902407a2e0d94f16ad6b91de1d1e42..bdf1ff40b7f36d92c47d2047e4179dde66a28de3 100644
--- a/GUI/coregui/Models/BeamItems.cpp
+++ b/GUI/coregui/Models/BeamItems.cpp
@@ -153,10 +153,15 @@ void SpecularBeamItem::setInclinationAngle(double value)
     BeamItem::setInclinationAngle(value);
 }
 
-BasicAxisItem& SpecularBeamItem::getInclinationAngleAxis()
+SessionItem* SpecularBeamItem::inclinationAxisGroup()
 {
-    return getItem(BeamItem::P_INCLINATION_ANGLE)
-        ->item<BasicAxisItem>(SpecularBeamInclinationItem::P_ALPHA_AXIS);
+    return getItem(P_INCLINATION_ANGLE)->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS);
+}
+
+BasicAxisItem* SpecularBeamItem::currentInclinationAxisItem()
+{
+    return &getItem(BeamItem::P_INCLINATION_ANGLE)
+        ->groupItem<BasicAxisItem>(SpecularBeamInclinationItem::P_ALPHA_AXIS);
 }
 
 FootprintItem* SpecularBeamItem::currentFootprintItem() const
diff --git a/GUI/coregui/Models/BeamItems.h b/GUI/coregui/Models/BeamItems.h
index 6af8d8a8012a04b0a20dc39afa770896513b4ba0..ac72138b29c1b21710645b438ba2d8bfe0cf66d2 100644
--- a/GUI/coregui/Models/BeamItems.h
+++ b/GUI/coregui/Models/BeamItems.h
@@ -63,7 +63,8 @@ public:
     double getInclinationAngle() const override;
     void setInclinationAngle(double value) override;
 
-    BasicAxisItem& getInclinationAngleAxis();
+    SessionItem* inclinationAxisGroup();
+    BasicAxisItem* currentInclinationAxisItem();
     FootprintItem* currentFootprintItem() const;
 };
 
diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp
index 010387c6ce6a0f91698bfa75c9a99bef797a5802..a405c1ca4c1ba1a24b750abb77bbc3b08659f45d 100644
--- a/GUI/coregui/Models/DomainObjectBuilder.cpp
+++ b/GUI/coregui/Models/DomainObjectBuilder.cpp
@@ -140,12 +140,9 @@ DomainObjectBuilder::createUnitConverter(const InstrumentItem* instrumentItem)
     if (instrumentItem->modelType() == Constants::GISASInstrumentType)
         return UnitConverterUtils::createConverterForGISAS(*instrument);
 
-    if (instrumentItem->modelType() == Constants::SpecularInstrumentType)
+    if (auto specular_instrument = dynamic_cast<const SpecularInstrumentItem*>(instrumentItem))
     {
-        auto axis_item = dynamic_cast<BasicAxisItem*>(
-            instrumentItem->beamItem()
-                ->getItem(SpecularBeamItem::P_INCLINATION_ANGLE)
-                ->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS));
+        auto axis_item = specular_instrument->beamItem()->currentInclinationAxisItem();
         return std::make_unique<UnitConverter1D>(instrument->getBeam(),
                                                  *axis_item->createAxis(Units::degree));
     }
diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp
index 3d57ea3d69bbb53ce512737f525c21236b7b16f4..6c1597a01c9d8b5155299af44aafd2221f1d83fe 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.cpp
+++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp
@@ -141,9 +141,7 @@ createSpecularSimulation(std::unique_ptr<MultiLayer> P_multilayer,
         = std::make_unique<SpecularSimulation>(*P_multilayer);
 
     auto beam_item = specular_instrument->beamItem();
-    const auto axis_item
-        = dynamic_cast<BasicAxisItem*>(beam_item->getItem(SpecularBeamItem::P_INCLINATION_ANGLE)
-                                           ->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS));
+    const auto axis_item = beam_item->currentInclinationAxisItem();
     const auto footprint = beam_item->currentFootprintItem();
 
     specular_simulation->setBeamIntensity(beam_item->getIntensity());
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index a44b096329b96251b9dac45cacda9896d69d874d..762bb95f70a3374ba0eaed43c3867f07a562ea8b 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -111,8 +111,8 @@ std::unique_ptr<Instrument> SpecularInstrumentItem::createInstrument() const
 
 std::vector<int> SpecularInstrumentItem::shape() const
 {
-    const auto& axis_item = beamItem()->getInclinationAngleAxis();
-    return {axis_item.getItemValue(BasicAxisItem::P_NBINS).toInt()};
+    const auto axis_item = beamItem()->currentInclinationAxisItem();
+    return {axis_item->getItemValue(BasicAxisItem::P_NBINS).toInt()};
 }
 
 void SpecularInstrumentItem::setShape(const std::vector<int>& data_shape)
@@ -120,8 +120,8 @@ void SpecularInstrumentItem::setShape(const std::vector<int>& data_shape)
     if (shape().size() != data_shape.size())
         throw GUIHelpers::Error("Error in SpecularInstrumentItem::setShape: The type of "
                                 "instrument is incompatible with passed data shape.");
-    auto& axis_item = beamItem()->getInclinationAngleAxis();
-    axis_item.setItemValue(BasicAxisItem::P_NBINS, data_shape[0]);
+    auto axis_item = beamItem()->currentInclinationAxisItem();
+    axis_item->setItemValue(BasicAxisItem::P_NBINS, data_shape[0]);
 }
 
 const QString Instrument2DItem::P_DETECTOR = "Detector";
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index c2b6b1fa85af1dd110f6b49d0bb31191d8020582..a2c911d9590ef8858d17045818189136b8f3cb2b 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -272,8 +272,7 @@ void TransformFromDomain::setSpecularBeamItem(SpecularBeamItem* beam_item,
     beam_item->setInclinationAngle(0.0); // inclination angle is hardcoded
     beam_item->setAzimuthalAngle(0.0); // azimuthal angle is hardcoded
 
-    auto axis_item = beam_item->getItem(SpecularBeamItem::P_INCLINATION_ANGLE)
-                         ->getItem(SpecularBeamInclinationItem::P_ALPHA_AXIS);
+    auto axis_item = beam_item->currentInclinationAxisItem();
     TransformFromDomain::setAxisItem(axis_item, *simulation.getAlphaAxis(), 1. / Units::deg);
 
     // distribution parameters