diff --git a/GUI/Model/Job/JobModelFunctions.cpp b/GUI/Model/Job/JobModelFunctions.cpp
index b978203f7f982489628fe4c8af3d868b8672e807..848b5d3b91e1bd34423b1453965521bed043d881 100644
--- a/GUI/Model/Job/JobModelFunctions.cpp
+++ b/GUI/Model/Job/JobModelFunctions.cpp
@@ -28,6 +28,7 @@
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobItemUtils.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemContainer.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Sample/ItemWithMaterial.h"
@@ -136,7 +137,7 @@ void GUI::Model::JobFunctions::setupJobItemSampleData(JobItem* jobItem,
     std::map<MaterialItem*, MaterialItem*> materials;
     for (auto* itemWithMaterial : multilayer->itemsWithMaterial()) {
         auto materialIdentifier = itemWithMaterial->materialIdentifier();
-        auto material = GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier);
+        auto material = GUI::MaterialUtil::findMaterial(materialIdentifier);
 
         auto iter = materials.find(material);
         if (iter == materials.end()) {
diff --git a/GUI/Model/Material/MaterialItemUtils.cpp b/GUI/Model/Material/MaterialItemUtils.cpp
index 3050ff683927a00c7df0c69edbe662abb3222418..a389b590b6d8d6b4ad9874d282709a754c6532ec 100644
--- a/GUI/Model/Material/MaterialItemUtils.cpp
+++ b/GUI/Model/Material/MaterialItemUtils.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Material/MaterialItemUtils.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemContainer.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "GUI/Model/Material/MaterialModelStore.h"
@@ -31,7 +32,7 @@ using boost::polymorphic_cast;
 #include <deque>
 #include <random>
 
-QColor GUI::Model::MaterialItemUtils::suggestMaterialColor(const QString& name)
+QColor GUI::MaterialUtil::suggestMaterialColor(const QString& name)
 {
     if (name.contains("Vacuum"))
         return QColor(179, 242, 255);
@@ -44,7 +45,7 @@ QColor GUI::Model::MaterialItemUtils::suggestMaterialColor(const QString& name)
     return randomMaterialColor();
 }
 
-QColor GUI::Model::MaterialItemUtils::randomMaterialColor()
+QColor GUI::MaterialUtil::randomMaterialColor()
 {
     static std::random_device r;
     std::default_random_engine re(r());
@@ -53,7 +54,7 @@ QColor GUI::Model::MaterialItemUtils::randomMaterialColor()
     return QColor(ru(re), ru(re), ru(re));
 }
 
-QString GUI::Model::MaterialItemUtils::defaultMaterialIdentifier()
+QString GUI::MaterialUtil::defaultMaterialIdentifier()
 {
     if (!GUI::Model::MaterialModelStore::materialModel())
         return QString();
@@ -63,14 +64,14 @@ QString GUI::Model::MaterialItemUtils::defaultMaterialIdentifier()
 }
 
 std::unique_ptr<Material>
-GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdentifier)
+GUI::MaterialUtil::createDomainMaterial(const QString& materialIdentifier)
 {
     MaterialItem* materialItem = findMaterial(materialIdentifier);
     return materialItem->createMaterial();
 }
 
 std::unique_ptr<Material>
-GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdentifier,
+GUI::MaterialUtil::createDomainMaterial(const QString& materialIdentifier,
                                                     const MaterialItemContainer& container)
 {
     const MaterialItem* material_item = container.findMaterialById(materialIdentifier);
@@ -81,10 +82,10 @@ GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdent
     return material_item->createMaterial();
 }
 
-MaterialItem* GUI::Model::MaterialItemUtils::findMaterial(const QString& materialIdentifier)
+MaterialItem* GUI::MaterialUtil::findMaterial(const QString& materialIdentifier)
 {
     if (!GUI::Model::MaterialModelStore::materialModel())
-        throw Error("GUI::Model::MaterialItemUtils::findMaterial() -> Error. "
+        throw Error("GUI::MaterialUtil::findMaterial() -> Error. "
                     "Attempt to access non-existing material model");
 
     auto material =
@@ -98,7 +99,7 @@ MaterialItem* GUI::Model::MaterialItemUtils::findMaterial(const QString& materia
 }
 
 QVector<ItemWithMaterial*>
-GUI::Model::MaterialItemUtils::itemsWithMaterial(ParticleLayoutItem* item)
+GUI::MaterialUtil::itemsWithMaterial(ParticleLayoutItem* item)
 {
     QVector<ItemWithMaterial*> itemsWithMaterial;
 
@@ -120,7 +121,7 @@ GUI::Model::MaterialItemUtils::itemsWithMaterial(ParticleLayoutItem* item)
             if (auto shell = dynamic_cast<ParticleCoreShellItem*>(item)->shell())
                 itemsWithMaterial << shell;
         } else
-            throw Error("Error in GUI::Model::MaterialItemUtils::materialProperties: cannot handle "
+            throw Error("Error in GUI::MaterialUtil::materialProperties: cannot handle "
                         "passed model type '"
                         + item->modelType() + "'");
     }
diff --git a/GUI/Model/Material/MaterialItemUtils.h b/GUI/Model/Material/MaterialItemUtils.h
index 0283dfee524cc3bb37d11404612db6a6cb409b85..96a0030a259723425dcfa44715524d5678ff8bbf 100644
--- a/GUI/Model/Material/MaterialItemUtils.h
+++ b/GUI/Model/Material/MaterialItemUtils.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit reflection and scattering
 //
 //! @file      GUI/Model/Material/MaterialItemUtils.h
-//! @brief     Defines namespace GUI::Model::MaterialItemUtils
+//! @brief     Defines namespace GUI::MaterialUtil
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -15,17 +15,17 @@
 #ifndef BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H
 #define BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H
 
-#include "GUI/Model/Material/MaterialItem.h"
 #include <QColor>
 #include <QString>
 #include <memory>
 
 class Material;
+class MaterialItem;
 class MaterialItemContainer;
 class ItemWithMaterial;
 class ParticleLayoutItem;
 
-namespace GUI::Model::MaterialItemUtils {
+namespace GUI::MaterialUtil {
 
 QColor suggestMaterialColor(const QString& name);
 QColor randomMaterialColor();
@@ -41,6 +41,6 @@ MaterialItem* findMaterial(const QString& materialIdentifier);
 //! Gather material property items from a given item
 QVector<ItemWithMaterial*> itemsWithMaterial(ParticleLayoutItem* item);
 
-} // namespace GUI::Model::MaterialItemUtils
+} // namespace GUI::MaterialUtil
 
 #endif // BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H
diff --git a/GUI/Model/Material/MaterialModel.cpp b/GUI/Model/Material/MaterialModel.cpp
index 16dbdd658b20fc34d7cae7ed341c12e702b43585..511f648b0f8a359166f74d6b683575fb06c11711 100644
--- a/GUI/Model/Material/MaterialModel.cpp
+++ b/GUI/Model/Material/MaterialModel.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Material/MaterialModel.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModelStore.h"
 #include <QUuid>
@@ -42,7 +43,7 @@ MaterialItem* MaterialModel::addRefractiveMaterial(const QString& name, double d
 {
     auto materialItem = insertItem<MaterialItem>();
     materialItem->setItemName(name);
-    materialItem->setColor(GUI::Model::MaterialItemUtils::suggestMaterialColor(name));
+    materialItem->setColor(GUI::MaterialUtil::suggestMaterialColor(name));
     materialItem->setRefractiveIndex(delta, beta);
     return materialItem;
 }
@@ -51,7 +52,7 @@ MaterialItem* MaterialModel::addSLDMaterial(const QString& name, double sld, dou
 {
     auto materialItem = insertItem<MaterialItem>();
     materialItem->setItemName(name);
-    materialItem->setColor(GUI::Model::MaterialItemUtils::suggestMaterialColor(name));
+    materialItem->setColor(GUI::MaterialUtil::suggestMaterialColor(name));
     materialItem->setScatteringLengthDensity(complex_t(sld, abs_term));
     return materialItem;
 }
diff --git a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
index 9e9d51814147d544f2b537b7c98c113ba84673ff..c145decaadacfdadb3dd371706e58f26f0ad605f 100644
--- a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
+++ b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
@@ -15,6 +15,7 @@
 #include "GUI/Model/Sample/GUIDomainSampleVisitor.h"
 #include "Base/Const/Units.h"
 #include "GUI/Model/Domain/TransformFromDomain.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "GUI/Model/Sample/FormFactorItems.h"
diff --git a/GUI/Model/Sample/ItemWithMaterial.cpp b/GUI/Model/Sample/ItemWithMaterial.cpp
index 4322c7b99f3f691762040dfd3597392362b475cf..055306a4c4cd9414536fa05e64f25106b3f448b4 100644
--- a/GUI/Model/Sample/ItemWithMaterial.cpp
+++ b/GUI/Model/Sample/ItemWithMaterial.cpp
@@ -15,6 +15,7 @@
 #include "GUI/Model/Sample/ItemWithMaterial.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobModelFunctions.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemContainer.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "Sample/Material/Material.h"
@@ -45,7 +46,7 @@ QColor ItemWithMaterial::materialColor() const
     if (parentJob)
         return parentJob->materialContainerItem()->findMaterialById(materialIdentifier())->color();
 
-    return GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier())->color();
+    return GUI::MaterialUtil::findMaterial(materialIdentifier())->color();
 }
 
 QString ItemWithMaterial::materialName() const
@@ -56,7 +57,7 @@ QString ItemWithMaterial::materialName() const
             ->findMaterialById(materialIdentifier())
             ->itemName();
 
-    return GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier())->itemName();
+    return GUI::MaterialUtil::findMaterial(materialIdentifier())->itemName();
 }
 
 QString ItemWithMaterial::materialIdentifier() const
@@ -66,7 +67,7 @@ QString ItemWithMaterial::materialIdentifier() const
 
 ItemWithMaterial::ItemWithMaterial(const QString& model_type) : SessionGraphicsItem(model_type)
 {
-    addProperty(P_MATERIAL, GUI::Model::MaterialItemUtils::defaultMaterialIdentifier())
+    addProperty(P_MATERIAL, GUI::MaterialUtil::defaultMaterialIdentifier())
         ->setToolTip("Material this item is made of")
         .setEditorType(SessionItem::EDITOR_TYPE_MATERIAL);
 }
@@ -77,7 +78,7 @@ std::unique_ptr<Material> ItemWithMaterial::domainMaterial() const
     const MaterialItemContainer* container =
         parent_job ? parent_job->materialContainerItem() : nullptr;
     return container
-               ? GUI::Model::MaterialItemUtils::createDomainMaterial(materialIdentifier(),
+               ? GUI::MaterialUtil::createDomainMaterial(materialIdentifier(),
                                                                      *container)
-               : GUI::Model::MaterialItemUtils::createDomainMaterial(materialIdentifier());
+               : GUI::MaterialUtil::createDomainMaterial(materialIdentifier());
 }
diff --git a/GUI/Model/Sample/LayerItem.cpp b/GUI/Model/Sample/LayerItem.cpp
index 913202225cb19ca96ce999312b6783b6d73be4ae..d76dd0b2919e27156aa6c50d56da6a4a604b93c7 100644
--- a/GUI/Model/Sample/LayerItem.cpp
+++ b/GUI/Model/Sample/LayerItem.cpp
@@ -59,7 +59,7 @@ QVector<ItemWithMaterial*> LayerItem::itemsWithMaterial()
     QVector<ItemWithMaterial*> result;
     result.push_back(this);
     for (auto layout : layouts())
-        result.append(GUI::Model::MaterialItemUtils::itemsWithMaterial(layout));
+        result.append(GUI::MaterialUtil::itemsWithMaterial(layout));
     return result;
 }
 
diff --git a/GUI/Model/Session/SessionModel.cpp b/GUI/Model/Session/SessionModel.cpp
index cfaf47eb684c5cd9321a116ce24dddadf39d9242..6a30956a84cd349bc487301cd9ddf7eb28dd7e67 100644
--- a/GUI/Model/Session/SessionModel.cpp
+++ b/GUI/Model/Session/SessionModel.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/Model/Session/SessionModel.h"
 #include "GUI/Model/Group/ItemFactory.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Session/SessionItemTags.h"
 #include "GUI/Model/Session/SessionItemUtils.h"
 #include "GUI/Util/Error.h"
diff --git a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
index 9b8b88445532a926ffe7a68062e730abb6b8522b..2d8b6da18509aee7885b5931af473ee4b010b9f6 100644
--- a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
+++ b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/View/MaterialEditor/MaterialEditorDialog.h"
 #include "GUI/Application/GlobalSettings.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "GUI/Model/Material/MaterialModelStore.h"
diff --git a/GUI/View/PropertyEditor/CustomEditors.cpp b/GUI/View/PropertyEditor/CustomEditors.cpp
index 1005f9f72d83c194f5cc1baae5a62ec590652a1f..671007d896a0c9cff49a35bed397eda0cedb78c4 100644
--- a/GUI/View/PropertyEditor/CustomEditors.cpp
+++ b/GUI/View/PropertyEditor/CustomEditors.cpp
@@ -15,6 +15,7 @@
 #include "GUI/View/PropertyEditor/CustomEditors.h"
 #include "Base/Utils/Assert.h"
 #include "Fit/Param/RealLimits.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/State/SessionData.h"
 #include "GUI/Util/ComboProperty.h"
@@ -112,7 +113,7 @@ void MaterialSelectionEditor::buttonClicked()
 void MaterialSelectionEditor::initEditor()
 {
     ASSERT(m_data.canConvert<QString>());
-    const auto material = GUI::Model::MaterialItemUtils::findMaterial(m_data.toString());
+    const auto material = GUI::MaterialUtil::findMaterial(m_data.toString());
 
     m_textLabel->setText(material->itemName());
 
diff --git a/GUI/View/PropertyEditor/PropertyEditorFactory.cpp b/GUI/View/PropertyEditor/PropertyEditorFactory.cpp
index d7801c9f9100f74da2509eaf810a19f003476ae7..b46d447f1c9dd1a705825150880520a730c3f941 100644
--- a/GUI/View/PropertyEditor/PropertyEditorFactory.cpp
+++ b/GUI/View/PropertyEditor/PropertyEditorFactory.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/PropertyEditor/PropertyEditorFactory.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Session/SessionFlags.h"
 #include "GUI/Model/Session/SessionItem.h"
@@ -26,8 +27,23 @@
 
 namespace {
 
-QWidget* createCustomStringEditor(const SessionItem& item);
-double getStep(double val);
+QWidget* createCustomStringEditor(const SessionItem& item)
+{
+    if (item.isEditable()) {
+        auto* editor = new QLineEdit;
+        editor->setText(item.value().toString());
+        return editor;
+    }
+
+    auto* editor = new QLabel;
+    editor->setText(item.value().toString());
+    return editor;
+}
+
+double getStep(double val)
+{
+    return val == 0.0 ? 1.0 : val / 100.;
+}
 
 bool isDoubleProperty(const QVariant& variant)
 {
@@ -82,7 +98,7 @@ QString GUI::View::PropertyEditorFactory::toString(const QModelIndex& index)
 {
     auto variant = index.data();
     if (isMaterialProperty(index)) {
-        const auto* material = GUI::Model::MaterialItemUtils::findMaterial(variant.toString());
+        const auto* material = GUI::MaterialUtil::findMaterial(variant.toString());
         return material->itemName();
     }
     if (isComboProperty(variant))
@@ -149,25 +165,3 @@ QWidget* GUI::View::PropertyEditorFactory::CreateEditor(const SessionItem& item,
 
     return result;
 }
-
-namespace {
-
-QWidget* createCustomStringEditor(const SessionItem& item)
-{
-    if (item.isEditable()) {
-        auto* editor = new QLineEdit;
-        editor->setText(item.value().toString());
-        return editor;
-    }
-
-    auto* editor = new QLabel;
-    editor->setText(item.value().toString());
-    return editor;
-}
-
-double getStep(double val)
-{
-    return val == 0.0 ? 1.0 : val / 100.;
-}
-
-} // namespace
diff --git a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
index ece5122592e94f270715e4f535f4cb2bca88b87e..033ae5bd796e67ddcd2390650bc989ed74b06bde 100644
--- a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
+++ b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
@@ -13,6 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/SampleDesigner/MaterialInplaceForm.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "GUI/Model/Material/MaterialModelStore.h"
@@ -90,7 +91,7 @@ void MaterialInplaceForm::createWidgets()
 
     // -- Create UI for delta/beta resp. sldRe/sldIm
     DoubleDescriptors values;
-    auto* materialItem = GUI::Model::MaterialItemUtils::findMaterial(m_item->materialIdentifier());
+    auto* materialItem = GUI::MaterialUtil::findMaterial(m_item->materialIdentifier());
     if (materialItem->hasRefractiveIndex()) {
         DoubleDescriptor delta = materialItem->delta();
         delta.set = [=](double value) { material()->delta().set(value); };
@@ -161,7 +162,7 @@ void MaterialInplaceForm::createWidgets()
 
 MaterialItem* MaterialInplaceForm::material()
 {
-    return GUI::Model::MaterialItemUtils::findMaterial(m_item->materialIdentifier());
+    return GUI::MaterialUtil::findMaterial(m_item->materialIdentifier());
 }
 
 void MaterialInplaceForm::onMaterialChanged(MaterialItem* materialItem)
diff --git a/GUI/Widget/Common/DesignerHelper.cpp b/GUI/Widget/Common/DesignerHelper.cpp
index 8235f28782c2739d3b8f20771df5848f71c61055..203ec9b295c75233a3d97a34d0038488fa496bc5 100644
--- a/GUI/Widget/Common/DesignerHelper.cpp
+++ b/GUI/Widget/Common/DesignerHelper.cpp
@@ -255,7 +255,7 @@ QRectF DesignerHelper::getTransformationBoundingRect()
 
 QColor DesignerHelper::getDefaultMaterialColor()
 {
-    return GUI::Model::MaterialItemUtils::randomMaterialColor();
+    return GUI::MaterialUtil::randomMaterialColor();
 }
 
 int DesignerHelper::getSectionFontSize()
diff --git a/Tests/Unit/GUI/TestMaterialModel.cpp b/Tests/Unit/GUI/TestMaterialModel.cpp
index 7b432832b160724d7570c4d7bdf3ab1455302514..a334c735e698a34f11da0446a4816f48bd3fd668 100644
--- a/Tests/Unit/GUI/TestMaterialModel.cpp
+++ b/Tests/Unit/GUI/TestMaterialModel.cpp
@@ -1,4 +1,5 @@
 #include "GUI/Model/Material/MaterialDataItems.h"
+#include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "Tests/GTestWrapper/google_test.h"
@@ -131,12 +132,12 @@ TEST_F(TestMaterialModel, defaultMaterialProperty)
 
     // testing default material property from MaterialItemUtils
     // in the absence of any materials, property should be in invalid state
-    QString id = GUI::Model::MaterialItemUtils::defaultMaterialIdentifier();
+    QString id = GUI::MaterialUtil::defaultMaterialIdentifier();
     EXPECT_TRUE(id.isEmpty());
 
     // adding materials to the model, default property should refer to first material in a model
     MaterialItem* mat1 = model.addRefractiveMaterial("Something1", 1.0, 2.0);
     model.addRefractiveMaterial("Something2", 3.0, 4.0);
-    id = GUI::Model::MaterialItemUtils::defaultMaterialIdentifier();
+    id = GUI::MaterialUtil::defaultMaterialIdentifier();
     EXPECT_EQ(id, mat1->identifier());
 }