diff --git a/GUI/Model/To/DomainObjectBuilder.cpp b/GUI/Model/To/DomainObjectBuilder.cpp
deleted file mode 100644
index bc69ebd0f74685abd26b4de6e7a7fce535961a83..0000000000000000000000000000000000000000
--- a/GUI/Model/To/DomainObjectBuilder.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Model/To/DomainObjectBuilder.cpp
-//! @brief     Implements DomainObjectBuilder namespace
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "GUI/Model/To/DomainObjectBuilder.h"
-#include "GUI/Model/Instrument/InstrumentItems.h"
-#include "GUI/Model/Sample/InterferenceItems.h"
-#include "GUI/Model/Sample/LayerItem.h"
-#include "GUI/Model/Sample/MultiLayerItem.h"
-#include "GUI/Model/Sample/ParticleLayoutItem.h"
-#include "GUI/Model/To/ToDomain.h"
-#include "GUI/Util/Error.h"
-
-std::unique_ptr<MultiLayer>
-GUI::Model::DomainObjectBuilder::buildMultiLayer(const MultiLayerItem& multiLayerItem)
-{
-    auto P_multilayer = GUI::Transform::ToDomain::createMultiLayer(multiLayerItem);
-    for (auto* layerItem : multiLayerItem.layers()) {
-        const bool isFirstLayer = layerItem == multiLayerItem.layers().first();
-        const bool isLastLayer = layerItem == multiLayerItem.layers().last();
-        auto P_layer = buildLayer(*layerItem, isFirstLayer || isLastLayer);
-        if (P_layer) {
-            const auto roughness = layerItem->roughness().currentItem();
-            auto P_roughness = GUI::Transform::ToDomain::createLayerRoughness(roughness);
-            if (P_roughness && !isLastLayer)
-                P_multilayer->addLayerWithTopRoughness(*P_layer, *P_roughness);
-            else
-                P_multilayer->addLayer(*P_layer);
-        }
-    }
-    return P_multilayer;
-}
-
-std::unique_ptr<Layer> GUI::Model::DomainObjectBuilder::buildLayer(const LayerItem& item,
-                                                                   bool isFirstOrLastLayer)
-{
-    auto P_layer = GUI::Transform::ToDomain::createLayer(item, isFirstOrLastLayer);
-    for (ParticleLayoutItem* layout : item.layouts()) {
-        auto P_layout = buildParticleLayout(*layout);
-        if (P_layout)
-            P_layer->addLayout(*P_layout);
-    }
-    return P_layer;
-}
-
-std::unique_ptr<ParticleLayout>
-GUI::Model::DomainObjectBuilder::buildParticleLayout(const ParticleLayoutItem& item)
-{
-    auto P_layout = GUI::Transform::ToDomain::createParticleLayout(item);
-    QVector<SessionItem*> children = item.getItems();
-    for (int i = 0; i < children.size(); ++i) {
-        auto P_particle = GUI::Transform::ToDomain::createIParticle(*children[i]);
-        if (P_particle) {
-            P_layout->addParticle(*P_particle);
-            continue;
-        }
-
-        throw Error("GUI::Model::DomainObjectBuilder::buildParticleLayout()"
-                    " -> Error! Not implemented");
-    }
-    InterferenceItem* interference = item.interference().currentItem();
-    if (interference) {
-        auto P_interference = interference->createInterference();
-        if (P_interference)
-            P_layout->setInterference(*P_interference);
-    }
-    return P_layout;
-}
diff --git a/GUI/Model/To/DomainObjectBuilder.h b/GUI/Model/To/DomainObjectBuilder.h
deleted file mode 100644
index 132010d55d51bdbd99aa257f5fcb82c4093d96ca..0000000000000000000000000000000000000000
--- a/GUI/Model/To/DomainObjectBuilder.h
+++ /dev/null
@@ -1,40 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/Model/To/DomainObjectBuilder.h
-//! @brief     Defines namespace GUI::Model::DomainObjectBuilder
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
-#define BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
-
-#include <memory>
-
-class MultiLayer;
-class Layer;
-class LayerItem;
-class Instrument;
-class MultiLayerItem;
-class ParticleLayout;
-class ParticleLayoutItem;
-class IInterference;
-class SessionItem;
-class InstrumentItem;
-class ICoordSystem;
-
-namespace GUI::Model::DomainObjectBuilder {
-
-std::unique_ptr<MultiLayer> buildMultiLayer(const MultiLayerItem& item);
-std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer);
-std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& item);
-
-} // namespace GUI::Model::DomainObjectBuilder
-
-#endif // BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
diff --git a/GUI/Model/To/DomainSimulationBuilder.cpp b/GUI/Model/To/DomainSimulationBuilder.cpp
index 5ee90855d10b51ce6174211dc7b2f7bfa3b7259d..8d79baa67c6bf16e4a70a8c0c88cfc42e1681478 100644
--- a/GUI/Model/To/DomainSimulationBuilder.cpp
+++ b/GUI/Model/To/DomainSimulationBuilder.cpp
@@ -30,7 +30,7 @@
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Sample/MultiLayerItem.h"
 #include "GUI/Model/Session/SimulationOptionsItem.h"
-#include "GUI/Model/To/DomainObjectBuilder.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "GUI/Util/Error.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Resample/Options/SimulationOptions.h"
@@ -220,7 +220,7 @@ GUI::Model::DomainSimulationBuilder::createSimulation(const MultiLayerItem* samp
         throw Error(message);
     }
 
-    auto P_multilayer = GUI::Model::DomainObjectBuilder::buildMultiLayer(*sampleItem);
+    auto P_multilayer = GUI::Transform::ToDomain::buildMultiLayer(*sampleItem);
 
     if (const auto* gisasInstrument = dynamic_cast<const GISASInstrumentItem*>(instrumentItem))
         return createGISASSimulation(std::move(P_multilayer), gisasInstrument, optionsItem);
diff --git a/GUI/Model/To/ToDomain.cpp b/GUI/Model/To/ToDomain.cpp
index 9cc724da0eefd9a927c177e36d724d0bc3e613dc..3e2ff9eed3ea91416453921bde5bfc8ec142b393 100644
--- a/GUI/Model/To/ToDomain.cpp
+++ b/GUI/Model/To/ToDomain.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/Model/To/ToDomain.h"
 #include "GUI/Model/Material/MaterialItem.h"
+#include "GUI/Model/Sample/InterferenceItems.h"
 #include "GUI/Model/Sample/LayerItem.h"
 #include "GUI/Model/Sample/LayerRoughnessItems.h"
 #include "GUI/Model/Sample/MesoCrystalItem.h"
@@ -24,11 +25,20 @@
 #include "GUI/Model/Sample/ParticleLayoutItem.h"
 #include "GUI/Model/Types/DoubleDescriptor.h"
 #include "GUI/Model/Types/UIntDescriptor.h"
+#include "GUI/Util/Error.h"
+#include "Sample/Aggregate/IInterference.h"
+#include "Sample/Aggregate/ParticleLayout.h"
+#include "Sample/Interface/LayerRoughness.h"
+#include "Sample/Multilayer/Layer.h"
+#include "Sample/Multilayer/MultiLayer.h"
+#include "Sample/Particle/IParticle.h"
 #include "Sample/Particle/MesoCrystal.h"
 #include "Sample/Particle/Particle.h"
 #include "Sample/Particle/ParticleCoreShell.h"
 
-std::unique_ptr<MultiLayer> GUI::Transform::ToDomain::createMultiLayer(const MultiLayerItem& item)
+namespace {
+
+std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item)
 {
     auto P_multilayer = std::make_unique<MultiLayer>();
     double cross_corr_length = item.crossCorrLength();
@@ -39,8 +49,7 @@ std::unique_ptr<MultiLayer> GUI::Transform::ToDomain::createMultiLayer(const Mul
     return P_multilayer;
 }
 
-std::unique_ptr<Layer> GUI::Transform::ToDomain::createLayer(const LayerItem& item,
-                                                             bool isFirstOrLastLayer)
+std::unique_ptr<Layer> createLayer(const LayerItem& item, bool isFirstOrLastLayer)
 {
     auto P_layer = std::make_unique<Layer>(*item.materialItem()->createMaterial(),
                                            isFirstOrLastLayer ? 0.0 : item.thickness());
@@ -48,22 +57,7 @@ std::unique_ptr<Layer> GUI::Transform::ToDomain::createLayer(const LayerItem& it
     return P_layer;
 }
 
-std::unique_ptr<LayerRoughness> GUI::Transform::ToDomain::createLayerRoughness(
-    const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness)
-{
-    if (std::holds_alternative<LayerZeroRoughnessItem*>(roughness))
-        return nullptr;
-    if (std::holds_alternative<LayerBasicRoughnessItem*>(roughness)) {
-        const auto& basicRoughnessItem = *std::get<LayerBasicRoughnessItem*>(roughness);
-        return std::make_unique<LayerRoughness>(basicRoughnessItem.sigma(),
-                                                basicRoughnessItem.hurst(),
-                                                basicRoughnessItem.lateralCorrelationLength());
-    }
-    ASSERT(0);
-}
-
-std::unique_ptr<ParticleLayout>
-GUI::Transform::ToDomain::createParticleLayout(const ParticleLayoutItem& item)
+std::unique_ptr<ParticleLayout> createParticleLayout(const ParticleLayoutItem& item)
 {
     auto P_layout = std::make_unique<ParticleLayout>();
     double total_density = item.totalDensity();
@@ -73,7 +67,7 @@ GUI::Transform::ToDomain::createParticleLayout(const ParticleLayoutItem& item)
     return P_layout;
 }
 
-std::unique_ptr<IParticle> GUI::Transform::ToDomain::createIParticle(const SessionItem& item)
+std::unique_ptr<IParticle> createIParticle(const SessionItem& item)
 {
     std::unique_ptr<IParticle> P_particle;
     if (item.hasModelType<ParticleItem>()) {
@@ -91,3 +85,73 @@ std::unique_ptr<IParticle> GUI::Transform::ToDomain::createIParticle(const Sessi
     }
     return P_particle;
 }
+
+std::unique_ptr<ParticleLayout> buildParticleLayout(const ParticleLayoutItem& item)
+{
+    auto P_layout = createParticleLayout(item);
+    QVector<SessionItem*> children = item.getItems();
+    for (int i = 0; i < children.size(); ++i) {
+        auto P_particle = createIParticle(*children[i]);
+        if (P_particle) {
+            P_layout->addParticle(*P_particle);
+            continue;
+        }
+
+        throw Error("GUI::Model::DomainObjectBuilder::buildParticleLayout()"
+                    " -> Error! Not implemented");
+    }
+    InterferenceItem* interference = item.interference().currentItem();
+    if (interference) {
+        auto P_interference = interference->createInterference();
+        if (P_interference)
+            P_layout->setInterference(*P_interference);
+    }
+    return P_layout;
+}
+
+std::unique_ptr<Layer> buildLayer(const LayerItem& item, bool isFirstOrLastLayer)
+{
+    auto P_layer = createLayer(item, isFirstOrLastLayer);
+    for (ParticleLayoutItem* layout : item.layouts()) {
+        auto P_layout = buildParticleLayout(*layout);
+        if (P_layout)
+            P_layer->addLayout(*P_layout);
+    }
+    return P_layer;
+}
+
+} // namespace
+
+std::unique_ptr<LayerRoughness> GUI::Transform::ToDomain::createLayerRoughness(
+    const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness)
+{
+    if (std::holds_alternative<LayerZeroRoughnessItem*>(roughness))
+        return nullptr;
+    if (std::holds_alternative<LayerBasicRoughnessItem*>(roughness)) {
+        const auto& basicRoughnessItem = *std::get<LayerBasicRoughnessItem*>(roughness);
+        return std::make_unique<LayerRoughness>(basicRoughnessItem.sigma(),
+                                                basicRoughnessItem.hurst(),
+                                                basicRoughnessItem.lateralCorrelationLength());
+    }
+    ASSERT(0);
+}
+
+std::unique_ptr<MultiLayer>
+GUI::Transform::ToDomain::buildMultiLayer(const MultiLayerItem& multiLayerItem)
+{
+    auto P_multilayer = createMultiLayer(multiLayerItem);
+    for (auto* layerItem : multiLayerItem.layers()) {
+        const bool isFirstLayer = layerItem == multiLayerItem.layers().first();
+        const bool isLastLayer = layerItem == multiLayerItem.layers().last();
+        auto P_layer = buildLayer(*layerItem, isFirstLayer || isLastLayer);
+        if (P_layer) {
+            const auto roughness = layerItem->roughness().currentItem();
+            auto P_roughness = createLayerRoughness(roughness);
+            if (P_roughness && !isLastLayer)
+                P_multilayer->addLayerWithTopRoughness(*P_layer, *P_roughness);
+            else
+                P_multilayer->addLayer(*P_layer);
+        }
+    }
+    return P_multilayer;
+}
diff --git a/GUI/Model/To/ToDomain.h b/GUI/Model/To/ToDomain.h
index 3094cc184c45c0ad2a2023782f4db6e4682d542d..7fb9eb4225d447560ae3194fd03f368d31846a88 100644
--- a/GUI/Model/To/ToDomain.h
+++ b/GUI/Model/To/ToDomain.h
@@ -15,33 +15,23 @@
 #ifndef BORNAGAIN_GUI_MODEL_TO_TODOMAIN_H
 #define BORNAGAIN_GUI_MODEL_TO_TODOMAIN_H
 
-#include "Device/Instrument/Instrument.h"
-#include "Param/Distrib/Distributions.h" // for IDistribution1D
-#include "Param/Distrib/ParameterDistribution.h"
-#include "Sample/Aggregate/IInterference.h"
-#include "Sample/Aggregate/ParticleLayout.h"
-#include "Sample/Interface/LayerRoughness.h"
-#include "Sample/Multilayer/Layer.h"
-#include "Sample/Multilayer/MultiLayer.h"
-#include "Sample/Particle/IParticle.h"
 #include <memory>
 #include <variant>
 
 class LayerItem;
 class MultiLayerItem;
-class ParticleLayoutItem;
-class SessionItem;
+class MultiLayer;
 class LayerZeroRoughnessItem;
 class LayerBasicRoughnessItem;
+class LayerRoughness;
 
 namespace GUI::Transform::ToDomain {
 
-std::unique_ptr<IParticle> createIParticle(const SessionItem& item);
-std::unique_ptr<Layer> createLayer(const LayerItem& item, bool isFirstOrLastLayer);
 std::unique_ptr<LayerRoughness> createLayerRoughness(
     const std::variant<LayerZeroRoughnessItem*, LayerBasicRoughnessItem*>& roughness);
-std::unique_ptr<MultiLayer> createMultiLayer(const MultiLayerItem& item);
-std::unique_ptr<ParticleLayout> createParticleLayout(const ParticleLayoutItem& item);
+
+std::unique_ptr<MultiLayer> buildMultiLayer(const MultiLayerItem& item);
+
 
 } // namespace GUI::Transform::ToDomain
 
diff --git a/GUI/View/SampleDesigner/ScriptPanel.cpp b/GUI/View/SampleDesigner/ScriptPanel.cpp
index 8e3af3eb6b24a8724317f8566db280710dbb315b..6c74ff967d3f14897164d4c87a2e5b0836bf12ff 100644
--- a/GUI/View/SampleDesigner/ScriptPanel.cpp
+++ b/GUI/View/SampleDesigner/ScriptPanel.cpp
@@ -16,7 +16,7 @@
 #include "Core/Export/ExportToPython.h"
 #include "GUI/Model/Sample/MultiLayerItem.h"
 #include "GUI/Model/Sample/SampleModel.h"
-#include "GUI/Model/To/DomainObjectBuilder.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "GUI/View/Info/CautionSign.h"
 #include "GUI/View/Info/PythonSyntaxHighlighter.h"
 #include "GUI/View/Tool/DesignerHelper.h"
@@ -122,8 +122,7 @@ QString ScriptPanel::generateCodeSnippet()
 
     QString result;
     try {
-        auto multilayer =
-            GUI::Model::DomainObjectBuilder::buildMultiLayer(*m_currentMultiLayerItem);
+        auto multilayer = GUI::Transform::ToDomain::buildMultiLayer(*m_currentMultiLayerItem);
         result.append(QString::fromStdString(Py::Export::sampleCode(*multilayer)));
     } catch (const std::exception& ex) {
         QString message =
diff --git a/Tests/Unit/GUI/TestLayerRoughnessItems.cpp b/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
index 43b7bf204b4a120d38aee7adeacd720c365da975..ae1684fa16cef2bc51995e2e83c1828066dab353 100644
--- a/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
+++ b/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
@@ -2,6 +2,7 @@
 #include "GUI/Model/Sample/LayerRoughnessItems.h"
 #include "GUI/Model/To/ToDomain.h"
 #include "GUI/Model/Types/DoubleDescriptor.h"
+#include "Sample/Interface/LayerRoughness.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class TestLayerRoughnessItems : public ::testing::Test {