diff --git a/GUI/Models/AxesItems.cpp b/GUI/Models/AxesItems.cpp
index 644b1ab5961f4642fcf049d47ae1ae865edeea65..59c8b1614d5fcd83760f8f7b764dbe0a41804766 100644
--- a/GUI/Models/AxesItems.cpp
+++ b/GUI/Models/AxesItems.cpp
@@ -22,12 +22,12 @@ const QString BasicAxisItem::P_MAX_DEG = "Max [deg]";
 const QString BasicAxisItem::P_TITLE = "Title";
 const QString BasicAxisItem::P_TITLE_IS_VISIBLE = "Title Visibility";
 
+const QString BasicAxisItem::M_TYPE = "BasicAxis";
+
 const int max_detector_pixels = 65536;
 
-BasicAxisItem::BasicAxisItem(const QString& type) : SessionItem(type)
-{
-    register_basic_properties();
-}
+BasicAxisItem::BasicAxisItem() : BasicAxisItem(M_TYPE)
+{}
 
 int BasicAxisItem::binCount() const
 {
@@ -132,6 +132,11 @@ bool BasicAxisItem::isVisibilityPropertyName(const QString& name)
 
 BasicAxisItem::~BasicAxisItem() = default;
 
+BasicAxisItem::BasicAxisItem(const QString& type) : SessionItem(type)
+{
+    register_basic_properties();
+}
+
 void BasicAxisItem::register_basic_properties()
 {
     addProperty(P_IS_VISIBLE, true)->setVisible(false);
@@ -147,7 +152,9 @@ void BasicAxisItem::register_basic_properties()
 const QString AmplitudeAxisItem::P_IS_LOGSCALE = "log10";
 const QString AmplitudeAxisItem::P_LOCK_MIN_MAX = "Lock (min, max)";
 
-AmplitudeAxisItem::AmplitudeAxisItem() : BasicAxisItem("AmplitudeAxis")
+const QString AmplitudeAxisItem::M_TYPE = "AmplitudeAxis";
+
+AmplitudeAxisItem::AmplitudeAxisItem() : BasicAxisItem(M_TYPE)
 {
     addProperty(P_LOCK_MIN_MAX, false)->setVisible(false);
     addProperty(P_IS_LOGSCALE, true);
diff --git a/GUI/Models/AxesItems.h b/GUI/Models/AxesItems.h
index bf15e92b767d210523d53d060f5ad1c27c7a34ef..ac0b370adce232049ece286db577a117624ed702 100644
--- a/GUI/Models/AxesItems.h
+++ b/GUI/Models/AxesItems.h
@@ -30,8 +30,9 @@ private:
     static const QString P_TITLE_IS_VISIBLE;
 
 public:
+    static const QString M_TYPE;
 
-    explicit BasicAxisItem(const QString& type = "BasicAxis");
+    BasicAxisItem();
     virtual ~BasicAxisItem();
 
     int binCount() const;
@@ -63,6 +64,7 @@ public:
     static bool isVisibilityPropertyName(const QString& name);
 
 protected:
+    explicit BasicAxisItem(const QString& type);
     void register_basic_properties();
 };
 
@@ -72,6 +74,9 @@ private:
     static const QString P_LOCK_MIN_MAX;
 
 public:
+
+    static const QString M_TYPE;
+
     AmplitudeAxisItem();
 
     bool isLogScale() const;
diff --git a/GUI/Models/BeamItems.cpp b/GUI/Models/BeamItems.cpp
index 16403dc46107c60e29e9e4ef043bc68c9e6a9614..ebad6c5523e80ecb0b81b39eac4069fe9a76eedd 100644
--- a/GUI/Models/BeamItems.cpp
+++ b/GUI/Models/BeamItems.cpp
@@ -235,7 +235,7 @@ void SpecularBeamItem::updateFileName(const QString& filename)
 void SpecularBeamItem::updateToData(const IAxis& axis, QString units)
 {
     if (units == "nbins") {
-        inclinationAxisGroup()->setCurrentType("BasicAxis");
+        inclinationAxisGroup()->setCurrentType(BasicAxisItem::M_TYPE);
         auto axis_item = currentInclinationAxisItem();
         axis_item->setBinCount(static_cast<int>(axis.size()));
         return;
diff --git a/GUI/Models/ComponentProxyStrategy.cpp b/GUI/Models/ComponentProxyStrategy.cpp
index 413897f8f35b0d1df297044d83c5671adbcdf6bb..47cb395cea07f3972b50453349448f7207452cfd 100644
--- a/GUI/Models/ComponentProxyStrategy.cpp
+++ b/GUI/Models/ComponentProxyStrategy.cpp
@@ -60,7 +60,8 @@ bool ComponentProxyStrategy::processSourceIndex(const QModelIndex& index)
 
 bool ComponentProxyStrategy::isPropertyRelated(SessionItem* item)
 {
-    static QStringList propertyRelated = ComponentUtils::propertyRelatedTypes();
+    static const QStringList& propertyRelated =
+        ComponentUtils::propertyRelatedTypes();
 
     if (m_sourceRootIndex.isValid() && item->parent()->index() == m_sourceRootIndex
         && item->parent()->modelType() != "GroupProperty")
diff --git a/GUI/Models/GroupInfoCatalog.cpp b/GUI/Models/GroupInfoCatalog.cpp
index 9bcd400935283f7a51d3975ad9dcac18c1c82c2d..fcca8814bf4d86882b525acd44d21ac584c96115 100644
--- a/GUI/Models/GroupInfoCatalog.cpp
+++ b/GUI/Models/GroupInfoCatalog.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Models/GroupInfoCatalog.h"
+#include "GUI/Models/AxesItems.h"
 #include "GUI/Models/MaterialDataItems.h"
 #include "GUI/utils/GUIHelpers.h"
 
@@ -187,9 +188,9 @@ GroupInfoCatalog::GroupInfoCatalog()
     addInfo(info);
 
     info = GroupInfo("Axes group");
-    info.add("BasicAxis", "Uniform axis");
+    info.add(BasicAxisItem::M_TYPE, "Uniform axis");
     info.add("PointwiseAxis", "Non-uniform axis");
-    info.setDefaultType("BasicAxis");
+    info.setDefaultType(BasicAxisItem::M_TYPE);
     addInfo(info);
 
     info = GroupInfo("Variance group");
diff --git a/GUI/Models/InstrumentItems.cpp b/GUI/Models/InstrumentItems.cpp
index 62d9031ffb7404fc445c34639a1a40989fdaa088..01acf7118c83035b3a5f9c17d2dfa70664541042 100644
--- a/GUI/Models/InstrumentItems.cpp
+++ b/GUI/Models/InstrumentItems.cpp
@@ -168,7 +168,8 @@ bool SpecularInstrumentItem::alignedWith(const RealDataItem* item) const
 {
     const QString native_units = item->nativeDataUnits();
     if (native_units == "nbins") {
-        return beamItem()->currentInclinationAxisItem()->modelType() == "BasicAxis"
+        return beamItem()->currentInclinationAxisItem()->modelType()
+               == BasicAxisItem::M_TYPE
                && shape() == item->shape();
     } else {
         auto axis_item = dynamic_cast<PointwiseAxisItem*>(beamItem()->currentInclinationAxisItem());
diff --git a/GUI/Models/ItemCatalog.cpp b/GUI/Models/ItemCatalog.cpp
index c890517c3e2dcea5e3c4e6dac5879f6d5ba90e81..976e533e87b885560d69f1e96203e3cc6e882b94 100644
--- a/GUI/Models/ItemCatalog.cpp
+++ b/GUI/Models/ItemCatalog.cpp
@@ -179,9 +179,9 @@ ItemCatalog::ItemCatalog()
     add("DataPropertyContainer", create_new<DataPropertyContainer>);
     add("DataItem1DProperties", create_new<Data1DProperties>);
 
-    add("BasicAxis", create_new<BasicAxisItem>);
+    addItem<BasicAxisItem>();
     add("PointwiseAxis", create_new<PointwiseAxisItem>);
-    add("AmplitudeAxis", create_new<AmplitudeAxisItem>);
+    addItem<AmplitudeAxisItem>();
 
     add("BeamWavelength", create_new<BeamWavelengthItem>);
     add("BeamAzimuthalAngle", create_new<BeamAzimuthalAngleItem>);
diff --git a/GUI/Models/SpecularBeamInclinationItem.cpp b/GUI/Models/SpecularBeamInclinationItem.cpp
index 2ce2380ef9fe4271987453a7e5805e463ef5796e..efda538988d3d059d9c352b3b1353ab1a71b0f01 100644
--- a/GUI/Models/SpecularBeamInclinationItem.cpp
+++ b/GUI/Models/SpecularBeamInclinationItem.cpp
@@ -60,7 +60,7 @@ void SpecularBeamInclinationItem::setupAxisGroup()
     group_item->setCurrentType("PointwiseAxis");
     setAxisPresentationDefaults(group_item->currentItem(), group_item->currentType());
 
-    group_item->setCurrentType("BasicAxis");
+    group_item->setCurrentType(BasicAxisItem::M_TYPE);
     setAxisPresentationDefaults(group_item->currentItem(), group_item->currentType());
 
     group_item->setToolTip("Axis type selected");
@@ -100,7 +100,7 @@ void setAxisPresentationDefaults(SessionItem* item, const QString& type)
     axis_item->lowerBoundItem()->setLimits(RealLimits::limited(0., 90.));
     axis_item->upperBoundItem()->setLimits(RealLimits::limited(0., 90.));
 
-    if (type == "BasicAxis") {
+    if (type == BasicAxisItem::M_TYPE) {
         axis_item->setLowerBound(0.0);
         axis_item->setUpperBound(3.0);
         axis_item->setBinCount(500);
diff --git a/GUI/Views/IntensityDataWidgets/ColorMap.cpp b/GUI/Views/IntensityDataWidgets/ColorMap.cpp
index d0784512cdb0e0d6366432d44f9c482070efc2a2..b0b7cd9811ec1b235aa28c3e12427b1ad9759715 100644
--- a/GUI/Views/IntensityDataWidgets/ColorMap.cpp
+++ b/GUI/Views/IntensityDataWidgets/ColorMap.cpp
@@ -213,7 +213,8 @@ void ColorMap::subscribeToItem()
 
     intensityItem()->mapper()->setOnChildPropertyChange(
         [this](SessionItem* item, const QString name) {
-            if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis")
+            if (item->modelType() == BasicAxisItem::M_TYPE
+                || item->modelType() == AmplitudeAxisItem::M_TYPE)
                 onAxisPropertyChanged(item->itemName(), name);
         },
         this);
diff --git a/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp b/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp
index 4ae5de5281370caff527dcff39dc006a5f90d8c2..38728e340a3b6a9a912374e131c1cf4e1be8d1b7 100644
--- a/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp
+++ b/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp
@@ -89,7 +89,8 @@ void ProjectionsPlot::subscribeToItem()
     // Update to changed IntensityDataItem axes
     intensityItem()->mapper()->setOnChildPropertyChange(
         [this](SessionItem* item, const QString name) {
-            if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis")
+            if (item->modelType() == BasicAxisItem::M_TYPE
+                || item->modelType() == AmplitudeAxisItem::M_TYPE)
                 onAxisPropertyChanged(item->itemName(), name);
         },
         this);
diff --git a/GUI/Views/PropertyEditor/ComponentUtils.cpp b/GUI/Views/PropertyEditor/ComponentUtils.cpp
index f5969d8d2334c74cb9e8ea8cde158dd581a5d71d..7637cd5a17e72c5f5f529fb22b729034ff218fa3 100644
--- a/GUI/Views/PropertyEditor/ComponentUtils.cpp
+++ b/GUI/Views/PropertyEditor/ComponentUtils.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Views/PropertyEditor/ComponentUtils.h"
+#include "GUI/Models/AxesItems.h"
 #include "GUI/Models/MaterialDataItems.h"
 #include "GUI/Models/SessionItem.h"
 
@@ -20,19 +21,22 @@ namespace {
 QList<const SessionItem*> groupItems(const SessionItem& item);
 }
 
-QStringList ComponentUtils::propertyRelatedTypes()
+const QStringList& ComponentUtils::propertyRelatedTypes()
 {
-    QStringList result = QStringList() << "Property"
-                                       << "GroupProperty"
-                                       << "Vector"
-                                       << "BasicAxis"
-                                       << "AmplitudeAxis" << MaterialRefractiveDataItem::M_TYPE;
+    static const QStringList result =
+        { "Property",
+          "GroupProperty",
+          "Vector",
+          BasicAxisItem::M_TYPE,
+          AmplitudeAxisItem::M_TYPE,
+          MaterialRefractiveDataItem::M_TYPE };
     return result;
 }
 
 QList<const SessionItem*> ComponentUtils::componentItems(const SessionItem& item)
 {
-    static QStringList propertyRelated = ComponentUtils::propertyRelatedTypes();
+    static const QStringList& propertyRelated =
+        ComponentUtils::propertyRelatedTypes();
 
     QList<const SessionItem*> result;
 
diff --git a/GUI/Views/PropertyEditor/ComponentUtils.h b/GUI/Views/PropertyEditor/ComponentUtils.h
index 89fb43b0daf9c61a5b56d9208a5085841781ee6a..9eabaea5403a5134af870f6751dfa29969884840 100644
--- a/GUI/Views/PropertyEditor/ComponentUtils.h
+++ b/GUI/Views/PropertyEditor/ComponentUtils.h
@@ -25,7 +25,7 @@ class SessionItem;
 namespace ComponentUtils {
 
 //! Returns list of strings representing modelTypes suitable for editing in component editors.
-QStringList propertyRelatedTypes();
+const QStringList& propertyRelatedTypes();
 
 //! Returns list of SessionItem's children suitable for editing in property editors.
 QList<const SessionItem*> componentItems(const SessionItem& item);
diff --git a/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp b/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp
index 6d2b0f945d3137fd4ca517977b85eb699e4e1d97..5df339dd388fef78b8a01d3f8840ad81e6fffdc1 100644
--- a/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp
+++ b/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp
@@ -111,7 +111,8 @@ void SpecularPlot::subscribeToItem()
 
     specularItem()->mapper()->setOnChildPropertyChange(
         [this](SessionItem* item, const QString name) {
-            if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis")
+            if (item->modelType() == BasicAxisItem::M_TYPE
+                || item->modelType() == AmplitudeAxisItem::M_TYPE)
                 modifyAxesProperties(item->itemName(), name);
         },
         this);
diff --git a/Tests/UnitTests/GUI/TestSavingSpecularData.cpp b/Tests/UnitTests/GUI/TestSavingSpecularData.cpp
index a20b0bb11ddda0f3090b4261be23a27484f970bf..0285cf5af65314177293267192475f4bc3152d44 100644
--- a/Tests/UnitTests/GUI/TestSavingSpecularData.cpp
+++ b/Tests/UnitTests/GUI/TestSavingSpecularData.cpp
@@ -86,7 +86,7 @@ TEST_F(TestSavingSpecularData, test_SpecularInsturment)
     EXPECT_EQ(models.instrumentModel()->nonXMLItems().size(), 1);
 
     // hiding pointwise axis item back
-    axis_group->setCurrentType("BasicAxis");
+    axis_group->setCurrentType(BasicAxisItem::M_TYPE);
     EXPECT_EQ(models.instrumentModel()->nonXMLItems().size(), 1);
 
     // checking data items of OutputDataIOService
@@ -127,7 +127,7 @@ TEST_F(TestSavingSpecularData, test_InstrumentInJobItem)
     EXPECT_EQ(dataItems.indexOf(dataItem), 0);
 
     // hiding pointwise axis, should be saved anyway
-    axis_group->setCurrentType("BasicAxis");
+    axis_group->setCurrentType(BasicAxisItem::M_TYPE);
     EXPECT_EQ(models.jobModel()->nonXMLItems().size(), 2);
     EXPECT_EQ(service.dataInterfaces().size(), 2);
     dataItems = models.nonXMLItems();