diff --git a/Core/Fitting/SimDataPair.cpp b/Core/Fitting/SimDataPair.cpp
index ff336ec5b387795d51c7769a8dd731c2e73eec7f..f6ab295de6a02a47f90d6b46d24930a123cdbad0 100644
--- a/Core/Fitting/SimDataPair.cpp
+++ b/Core/Fitting/SimDataPair.cpp
@@ -15,7 +15,7 @@
 #include "Core/Fitting/SimDataPair.h"
 #include "Base/Math/Numeric.h"
 #include "Core/Scan/UnitConverter1D.h"
-#include "Core/Simulation/UnitConverterUtils.h"
+#include "Device/Detector/SimpleUnitConverters.h"
 #include "Core/Simulation/includeSimulations.h"
 #include "Device/Data/DataUtils.h"
 
@@ -51,7 +51,7 @@ bool detHasSameDimensions(const IDetector& detector, const OutputData<double>& d
 std::unique_ptr<IUnitConverter> createConverter(const ISimulation& simulation)
 {
     if (auto gisas = dynamic_cast<const GISASSimulation*>(&simulation))
-        return UnitConverterUtils::createConverterForGISAS(gisas->instrument());
+        return UnitConverterSimple::createConverterForGISAS(gisas->instrument());
 
     if (auto spec = dynamic_cast<const SpecularSimulation*>(&simulation))
         return UnitConverter1D::createUnitConverter(*spec->dataHandler());
@@ -62,8 +62,7 @@ std::unique_ptr<IUnitConverter> createConverter(const ISimulation& simulation)
     if (auto off_spec = dynamic_cast<const OffSpecularSimulation*>(&simulation))
         return off_spec->createUnitConverter();
 
-    throw std::runtime_error("UnitConverterUtils::createConverter -> "
-                             "Not implemented simulation.");
+    ASSERT(0);
 }
 
 //! Convert user data to SimulationResult object for later drawing in various axes units.
diff --git a/Core/Simulation/GISASSimulation.cpp b/Core/Simulation/GISASSimulation.cpp
index fb556a2fd649f5b6a0871e21f32b2042bd1d6e74..b97a1056f61f2f314786e2c56f1534b7745981c3 100644
--- a/Core/Simulation/GISASSimulation.cpp
+++ b/Core/Simulation/GISASSimulation.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/UnitConverterUtils.h"
+#include "Device/Detector/SimpleUnitConverters.h"
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
 GISASSimulation::GISASSimulation(const Beam& beam, const MultiLayer& sample,
@@ -57,7 +57,7 @@ void GISASSimulation::prepareSimulation()
 
 SimulationResult GISASSimulation::result() const
 {
-    const auto converter = UnitConverterUtils::createConverterForGISAS(instrument());
+    const auto converter = UnitConverterSimple::createConverterForGISAS(instrument());
     const std::unique_ptr<OutputData<double>> data(
         detector().createDetectorIntensity(m_sim_elements));
     return SimulationResult(*data, *converter);
diff --git a/Core/Simulation/UnitConverterUtils.cpp b/Core/Simulation/UnitConverterUtils.cpp
deleted file mode 100644
index 723ab3517cf3737bf78e598033561cc1a4af7465..0000000000000000000000000000000000000000
--- a/Core/Simulation/UnitConverterUtils.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Core/Simulation/UnitConverterUtils.cpp
-//! @brief     Implements utilities for unit convertion.
-//!
-//! @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 "Core/Simulation/UnitConverterUtils.h"
-#include "Device/Detector/RectangularDetector.h"
-#include "Device/Detector/SimpleUnitConverters.h"
-#include "Device/Detector/SphericalDetector.h"
-#include "Device/Instrument/Instrument.h"
-
-std::unique_ptr<IUnitConverter>
-UnitConverterUtils::createConverterForGISAS(const Instrument& instrument)
-{
-    const IDetector* const detector = instrument.getDetector();
-
-    if (const auto* const det = dynamic_cast<const SphericalDetector*>(detector))
-        return std::make_unique<SphericalConverter>(*det, instrument.beam());
-
-    if (const auto* const det = dynamic_cast<const RectangularDetector*>(detector))
-        return std::make_unique<RectangularConverter>(*det, instrument.beam());
-
-    throw std::runtime_error("Error in createConverterForGISAS: wrong or absent detector type");
-}
diff --git a/Core/Simulation/UnitConverterUtils.h b/Core/Simulation/UnitConverterUtils.h
deleted file mode 100644
index cfb4ac7c99de5fc6fe0baa00530ef61a2cbc3416..0000000000000000000000000000000000000000
--- a/Core/Simulation/UnitConverterUtils.h
+++ /dev/null
@@ -1,39 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Core/Simulation/UnitConverterUtils.h
-//! @brief     Declares utilities for unit converters.
-//!
-//! @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)
-//
-//  ************************************************************************************************
-
-#ifdef SWIG
-#error no need to expose this header to Swig
-#endif
-
-#ifndef USER_API
-#ifndef BORNAGAIN_CORE_SIMULATION_UNITCONVERTERUTILS_H
-#define BORNAGAIN_CORE_SIMULATION_UNITCONVERTERUTILS_H
-
-#include "Device/Unit/IUnitConverter.h"
-
-class Instrument;
-template <class T> class OutputData;
-
-//! Namespace enclosing a number of utilities/helpers for unit converters
-
-namespace UnitConverterUtils {
-
-//! Helper factory function to use in GISASSimulation. Depending on the type of detector,
-//! returns either RectangularConverter or SphericalConverter.
-std::unique_ptr<IUnitConverter> createConverterForGISAS(const Instrument& instrument);
-
-} // namespace UnitConverterUtils
-
-#endif // BORNAGAIN_CORE_SIMULATION_UNITCONVERTERUTILS_H
-#endif // USER_API
diff --git a/Device/Detector/SimpleUnitConverters.cpp b/Device/Detector/SimpleUnitConverters.cpp
index 7be4f59181d46eba84fb21ac70d2436cf7fba7fa..10e08f5f967a7472ef337e3a219cb5c8e94612a9 100644
--- a/Device/Detector/SimpleUnitConverters.cpp
+++ b/Device/Detector/SimpleUnitConverters.cpp
@@ -16,7 +16,7 @@
 #include "Base/Const/Units.h"
 #include "Base/Math/Constants.h"
 #include "Base/Pixel/RectangularPixel.h"
-#include "Device/Beam/Beam.h"
+#include "Device/Instrument/Instrument.h"
 #include "Device/Detector/RectangularDetector.h"
 #include "Device/Detector/SphericalDetector.h"
 #include "Device/ProDetector/RegionOfInterest.h"
@@ -117,6 +117,20 @@ void UnitConverterSimple::addDetectorAxis(const IDetector& detector, size_t i_ax
                 P_roi_axis->size());
 }
 
+std::unique_ptr<UnitConverterSimple>
+UnitConverterSimple::createConverterForGISAS(const Instrument& instrument)
+{
+    const IDetector* const detector = instrument.getDetector();
+
+    if (const auto* const det = dynamic_cast<const SphericalDetector*>(detector))
+        return std::make_unique<SphericalConverter>(*det, instrument.beam());
+
+    if (const auto* const det = dynamic_cast<const RectangularDetector*>(detector))
+        return std::make_unique<RectangularConverter>(*det, instrument.beam());
+
+    throw std::runtime_error("Error in createConverterForGISAS: wrong or absent detector type");
+}
+
 //  ************************************************************************************************
 //  class SphericalConverter
 //  ************************************************************************************************
diff --git a/Device/Detector/SimpleUnitConverters.h b/Device/Detector/SimpleUnitConverters.h
index 464877ca6a66a19a253039159ec8370fd1912731..b2f52e59eda679fb1a346406ec5e90fbf1b1ec83 100644
--- a/Device/Detector/SimpleUnitConverters.h
+++ b/Device/Detector/SimpleUnitConverters.h
@@ -26,6 +26,7 @@
 class Beam;
 class IDetector;
 class IDetector2D;
+class Instrument;
 class RectangularDetector;
 class RectangularPixel;
 class SphericalDetector;
@@ -49,6 +50,11 @@ public:
 
     std::unique_ptr<IAxis> createConvertedAxis(size_t i_axis, Axes::Units units) const override;
 
+    //! Helper factory function to use in GISASSimulation. Depending on the type of detector,
+    //! returns either RectangularConverter or SphericalConverter.
+    static std::unique_ptr<UnitConverterSimple> createConverterForGISAS(
+        const Instrument& instrument);
+
 protected:
     UnitConverterSimple(const UnitConverterSimple& other);
     void addDetectorAxis(const IDetector& detector, size_t i_axis);
diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp
index d4e7d16ac1b79b2178c70b5e534c795db643908d..91946b33fc72d1acecbce8412469b1c166594f51 100644
--- a/GUI/coregui/Models/DomainObjectBuilder.cpp
+++ b/GUI/coregui/Models/DomainObjectBuilder.cpp
@@ -15,7 +15,6 @@
 #include "GUI/coregui/Models/DomainObjectBuilder.h"
 #include "Base/Const/Units.h"
 #include "Core/Scan/UnitConverter1D.h"
-#include "Core/Simulation/UnitConverterUtils.h"
 #include "Device/Detector/IDetector2D.h"
 #include "Device/Detector/SimpleUnitConverters.h"
 #include "GUI/coregui/Models/AxesItems.h"
@@ -40,11 +39,10 @@ std::unique_ptr<MultiLayer> DomainObjectBuilder::buildMultiLayer(const SessionIt
             ASSERT(roughnessItem);
             auto P_roughness = TransformToDomain::createLayerRoughness(*roughnessItem);
             if (P_layer) {
-                if (P_roughness) {
+                if (P_roughness)
                     P_multilayer->addLayerWithTopRoughness(*P_layer, *P_roughness);
-                } else {
+                else
                     P_multilayer->addLayer(*P_layer);
-                }
             }
         }
     }
@@ -58,9 +56,8 @@ std::unique_ptr<Layer> DomainObjectBuilder::buildLayer(const SessionItem& item)
     for (int i = 0; i < children.size(); ++i) {
         if (children[i]->modelType() == "ParticleLayout") {
             auto P_layout = buildParticleLayout(*children[i]);
-            if (P_layout) {
+            if (P_layout)
                 P_layer->addLayout(*P_layout);
-            }
         }
     }
     return P_layer;
@@ -109,9 +106,8 @@ std::unique_ptr<ParticleLayout> DomainObjectBuilder::buildParticleLayout(const S
     QVector<SessionItem*> interferences = item.getItems(ParticleLayoutItem::T_INTERFERENCE);
     for (int i = 0; i < interferences.size(); i++) {
         auto P_interference = buildInterferenceFunction(*interferences[i]);
-        if (P_interference) {
+        if (P_interference)
             P_layout->setInterferenceFunction(*P_interference);
-        }
     }
     return P_layout;
 }
@@ -143,7 +139,7 @@ DomainObjectBuilder::createUnitConverter(const InstrumentItem* instrumentItem)
     instrument->initDetector();
 
     if (instrumentItem->is<GISASInstrumentItem>())
-        return UnitConverterUtils::createConverterForGISAS(*instrument);
+        return UnitConverterSimple::createConverterForGISAS(*instrument);
 
     if (instrumentItem->is<OffSpecularInstrumentItem>()) {
         auto axis_item =