diff --git a/Core/Export/SimulationToPython.cpp b/Core/Export/SimulationToPython.cpp
index 87ca2d64efdbc33a20c0489ab3cad3f5b80ac923..5e27d3a1abda7295cd9cdd0631fa6ad76127b72e 100644
--- a/Core/Export/SimulationToPython.cpp
+++ b/Core/Export/SimulationToPython.cpp
@@ -31,7 +31,7 @@
 #include "Device/Mask/DetectorMask.h"
 #include "Device/Resolution/ConvolutionDetectorResolution.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/Distributions.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Param/Node/NodeUtils.h"
diff --git a/Core/Scan/AlphaScan.cpp b/Core/Scan/AlphaScan.cpp
index 11d80c1784858d70dea8f4e484131de62d8651ed..19d349d9ed01d7f83d21adb5de997b22a701aa49 100644
--- a/Core/Scan/AlphaScan.cpp
+++ b/Core/Scan/AlphaScan.cpp
@@ -17,7 +17,7 @@
 #include "Base/Axis/PointwiseAxis.h"
 #include "Device/Beam/IFootprintFactor.h"
 #include "Device/Coord/CoordSystem1D.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Resample/Element/SpecularElement.h"
 
diff --git a/Core/Scan/QzScan.cpp b/Core/Scan/QzScan.cpp
index e2f19b27dbd44b5f490e0c82ffbf8634e4b16f3b..f5b377e12d554905a33540a4666f4060e6cdae72 100644
--- a/Core/Scan/QzScan.cpp
+++ b/Core/Scan/QzScan.cpp
@@ -16,7 +16,7 @@
 #include "Base/Axis/FixedBinAxis.h"
 #include "Base/Axis/PointwiseAxis.h"
 #include "Device/Coord/CoordSystem1D.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Resample/Element/SpecularElement.h"
 
diff --git a/Device/Resolution/ScanResolution.cpp b/Core/Scan/ScanResolution.cpp
similarity index 99%
rename from Device/Resolution/ScanResolution.cpp
rename to Core/Scan/ScanResolution.cpp
index b5f69301e031b2ef76f17b80f1dd3dc184abed42..fba6f23fea241aacb127afbefe2775d7a3f0f1a3 100644
--- a/Device/Resolution/ScanResolution.cpp
+++ b/Core/Scan/ScanResolution.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Device/Resolution/ScanResolution.cpp
+//! @file      Core/Scan/ScanResolution.cpp
 //! @brief     Implements scan resolution class and derived ones.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 
 namespace {
diff --git a/Device/Resolution/ScanResolution.h b/Core/Scan/ScanResolution.h
similarity index 91%
rename from Device/Resolution/ScanResolution.h
rename to Core/Scan/ScanResolution.h
index d12f1a4b448fd39d59dc80699244b5022b029caf..4780dc30366062a9a50ae55024a2d2365f09718e 100644
--- a/Device/Resolution/ScanResolution.h
+++ b/Core/Scan/ScanResolution.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      Device/Resolution/ScanResolution.h
+//! @file      Core/Scan/ScanResolution.h
 //! @brief     Defines scan resolution class.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
-#define BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
+#ifndef BORNAGAIN_CORE_SCAN_SCANRESOLUTION_H
+#define BORNAGAIN_CORE_SCAN_SCANRESOLUTION_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Distrib/ParameterSample.h"
@@ -62,4 +62,4 @@ private:
     std::unique_ptr<IRangedDistribution> m_distr; //!< basic distribution function
 };
 
-#endif // BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
+#endif // BORNAGAIN_CORE_SCAN_SCANRESOLUTION_H
diff --git a/Fit/Kernel/FitOptions.cpp b/Fit/Kernel/FitOptions.cpp
deleted file mode 100644
index f3e0e58e4e161c9f0e2369973d1b89f0d270d77a..0000000000000000000000000000000000000000
--- a/Fit/Kernel/FitOptions.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Fit/Kernel/FitOptions.cpp
-//! @brief     Implements class FitOptions.
-//!
-//! @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 "Fit/Kernel/FitOptions.h"
-
-FitOptions::FitOptions() : m_deriv_epsilon(1e-09), m_step_factor(0.01) {}
-
-void FitOptions::setStepFactor(double step_factor)
-{
-    m_step_factor = step_factor;
-}
-
-double FitOptions::stepFactor() const
-{
-    return m_step_factor;
-}
-
-void FitOptions::setDerivEpsilon(double deriv_epsilon)
-{
-    m_deriv_epsilon = deriv_epsilon;
-}
-
-double FitOptions::derivEpsilon() const
-{
-    return m_deriv_epsilon;
-}
diff --git a/Fit/Kernel/FitOptions.h b/Fit/Kernel/FitOptions.h
deleted file mode 100644
index 89a43207a96fec2b04765b185f24fe65c89f88dc..0000000000000000000000000000000000000000
--- a/Fit/Kernel/FitOptions.h
+++ /dev/null
@@ -1,35 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      Fit/Kernel/FitOptions.h
-//! @brief     Defines class FitOptions.
-//!
-//! @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_FIT_KERNEL_FITOPTIONS_H
-#define BORNAGAIN_FIT_KERNEL_FITOPTIONS_H
-
-//! General fitting options.
-
-class FitOptions {
-public:
-    FitOptions();
-
-    double derivEpsilon() const;
-    void setDerivEpsilon(double deriv_epsilon);
-
-    double stepFactor() const;
-    void setStepFactor(double step_factor);
-
-private:
-    double m_deriv_epsilon; //!< epsilon for derivative calculation
-    double m_step_factor;   //!< default relative parameter step
-};
-
-#endif // BORNAGAIN_FIT_KERNEL_FITOPTIONS_H
diff --git a/GUI/Model/Domain/FromDomain.cpp b/GUI/Model/From/FromDomain.cpp
similarity index 99%
rename from GUI/Model/Domain/FromDomain.cpp
rename to GUI/Model/From/FromDomain.cpp
index 0a7137855b770cb1c3ba15f6e13728df15f967d4..dacf2258e666fb7cbf5ea78d46f218d977bb7169 100644
--- a/GUI/Model/Domain/FromDomain.cpp
+++ b/GUI/Model/From/FromDomain.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/FromDomain.cpp
+//! @file      GUI/Model/From/FromDomain.cpp
 //! @brief     Implements namespace TransformFromDomain
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Domain/FromDomain.h"
+#include "GUI/Model/From/FromDomain.h"
 #include "Base/Const/Units.h"
 #include "Core/Background/ConstantBackground.h"
 #include "Core/Background/PoissonNoiseBackground.h"
@@ -31,7 +31,7 @@
 #include "Device/Mask/Rectangle.h"
 #include "Device/Resolution/ConvolutionDetectorResolution.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "GUI/Model/Data/AxesItems.h"
 #include "GUI/Model/Data/MaskItems.h"
 #include "GUI/Model/Instrument/BackgroundItems.h"
diff --git a/GUI/Model/Domain/FromDomain.h b/GUI/Model/From/FromDomain.h
similarity index 95%
rename from GUI/Model/Domain/FromDomain.h
rename to GUI/Model/From/FromDomain.h
index c990c6fc62a8b25bad124813b02d3da911a27d4c..3843371f3bccf89ce559a3f93ea69e98053b0b7f 100644
--- a/GUI/Model/Domain/FromDomain.h
+++ b/GUI/Model/From/FromDomain.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/FromDomain.h
+//! @file      GUI/Model/From/FromDomain.h
 //! @brief     Defines namespace GUI::Transform::FromDomain
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DOMAIN_FROMDOMAIN_H
-#define BORNAGAIN_GUI_MODEL_DOMAIN_FROMDOMAIN_H
+#ifndef BORNAGAIN_GUI_MODEL_FROM_FROMDOMAIN_H
+#define BORNAGAIN_GUI_MODEL_FROM_FROMDOMAIN_H
 
 #include <QString>
 
@@ -115,4 +115,4 @@ void setAxisItem(BasicAxisItem* item, const IAxis& axis, double factor = 1.0);
 
 } // namespace GUI::Transform::FromDomain
 
-#endif // BORNAGAIN_GUI_MODEL_DOMAIN_FROMDOMAIN_H
+#endif // BORNAGAIN_GUI_MODEL_FROM_FROMDOMAIN_H
diff --git a/GUI/Model/Domain/GUIObjectBuilder.cpp b/GUI/Model/From/GUIObjectBuilder.cpp
similarity index 97%
rename from GUI/Model/Domain/GUIObjectBuilder.cpp
rename to GUI/Model/From/GUIObjectBuilder.cpp
index 6a5f1a2b49a04215ebca6d57e2300a3dff3c94a6..6948b354a5f8ff35a28e342f4d8e79962e8a2ec8 100644
--- a/GUI/Model/Domain/GUIObjectBuilder.cpp
+++ b/GUI/Model/From/GUIObjectBuilder.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/GUIObjectBuilder.cpp
+//! @file      GUI/Model/From/GUIObjectBuilder.cpp
 //! @brief     Implements GUI::Model::ObjectBuilder namespace
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,12 +12,12 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Domain/GUIObjectBuilder.h"
+#include "GUI/Model/From/GUIObjectBuilder.h"
 #include "Base/Const/Units.h"
 #include "Base/Utils/Assert.h"
 #include "Core/Simulation/includeSimulations.h"
 #include "GUI/Model/Data/DocumentModel.h"
-#include "GUI/Model/Domain/FromDomain.h"
+#include "GUI/Model/From/FromDomain.h"
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Instrument/InstrumentModel.h"
 #include "GUI/Model/Sample/GUIDomainSampleVisitor.h"
diff --git a/GUI/Model/Domain/GUIObjectBuilder.h b/GUI/Model/From/GUIObjectBuilder.h
similarity index 84%
rename from GUI/Model/Domain/GUIObjectBuilder.h
rename to GUI/Model/From/GUIObjectBuilder.h
index ca03e936c5fa19c4a2c35a56387d9cb482a5c440..1dad6408fc38fe3567beed4b7c6bec278a39a2ea 100644
--- a/GUI/Model/Domain/GUIObjectBuilder.h
+++ b/GUI/Model/From/GUIObjectBuilder.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/GUIObjectBuilder.h
+//! @file      GUI/Model/From/GUIObjectBuilder.h
 //! @brief     Defines namespace GUI::Model::ObjectBuilder
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DOMAIN_GUIOBJECTBUILDER_H
-#define BORNAGAIN_GUI_MODEL_DOMAIN_GUIOBJECTBUILDER_H
+#ifndef BORNAGAIN_GUI_MODEL_FROM_GUIOBJECTBUILDER_H
+#define BORNAGAIN_GUI_MODEL_FROM_GUIOBJECTBUILDER_H
 
 #include <QString>
 
@@ -37,4 +37,4 @@ SessionItem* populateDocumentModel(DocumentModel* p_documentModel, const ISimula
 
 } // namespace GUI::Model::ObjectBuilder
 
-#endif // BORNAGAIN_GUI_MODEL_DOMAIN_GUIOBJECTBUILDER_H
+#endif // BORNAGAIN_GUI_MODEL_FROM_GUIOBJECTBUILDER_H
diff --git a/GUI/Model/Instrument/BeamDistributionItem.h b/GUI/Model/Instrument/BeamDistributionItem.h
index bab439b3a0268e9d8c9a39a82ef952a04b278bc3..436f03a7830dbcc17fd597f76b74537d5f6e161f 100644
--- a/GUI/Model/Instrument/BeamDistributionItem.h
+++ b/GUI/Model/Instrument/BeamDistributionItem.h
@@ -16,7 +16,7 @@
 #define BORNAGAIN_GUI_MODEL_INSTRUMENT_BEAMDISTRIBUTIONITEM_H
 
 #include "GUI/Model/Group/DistributionItems.h"
-#include "GUI/Model/Types/ItemWithDistribution.h"
+#include "GUI/Model/Instrument/ItemWithDistribution.h"
 #include "Param/Distrib/ParameterDistribution.h"
 
 //! The BeamDistributionItem handles wavelength, inclination and azimuthal parameter
diff --git a/GUI/Model/Instrument/InstrumentsTreeModel.cpp b/GUI/Model/Instrument/InstrumentsTreeModel.cpp
index 70c6da8c4e97a72e1cff700eea11ecda1f435973..5655a1f7f050789977ce43c7c2f15c8b0f80ea14 100644
--- a/GUI/Model/Instrument/InstrumentsTreeModel.cpp
+++ b/GUI/Model/Instrument/InstrumentsTreeModel.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Instrument/InstrumentsTreeModel.h"
-#include "GUI/Application/GlobalSettings.h"
+#include "GUI/Application/GlobalSettings.h" // baApp
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Instrument/InstrumentModel.h"
 #include <QApplication>
diff --git a/GUI/Model/Types/ItemWithDistribution.h b/GUI/Model/Instrument/ItemWithDistribution.h
similarity index 79%
rename from GUI/Model/Types/ItemWithDistribution.h
rename to GUI/Model/Instrument/ItemWithDistribution.h
index cd9acbd97a68259e0c9a048516db5380da548381..afb9a8da7ef8d1e170f5d3bb71223d4c6cd7dd6f 100644
--- a/GUI/Model/Types/ItemWithDistribution.h
+++ b/GUI/Model/Instrument/ItemWithDistribution.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Types/ItemWithDistribution.h
+//! @file      GUI/Model/Instrument/ItemWithDistribution.h
 //! @brief     Defines abstract item with a distribution
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_TYPES_ITEMWITHDISTRIBUTION_H
-#define BORNAGAIN_GUI_MODEL_TYPES_ITEMWITHDISTRIBUTION_H
+#ifndef BORNAGAIN_GUI_MODEL_INSTRUMENT_ITEMWITHDISTRIBUTION_H
+#define BORNAGAIN_GUI_MODEL_INSTRUMENT_ITEMWITHDISTRIBUTION_H
 
 #include "Wrap/WinDllMacros.h"
 
@@ -33,4 +33,4 @@ public:
     virtual ~ItemWithDistribution() = default;
 };
 
-#endif // BORNAGAIN_GUI_MODEL_TYPES_ITEMWITHDISTRIBUTION_H
+#endif // BORNAGAIN_GUI_MODEL_INSTRUMENT_ITEMWITHDISTRIBUTION_H
diff --git a/GUI/Model/Job/JobQueueData.cpp b/GUI/Model/Job/JobQueueData.cpp
index c506a0f0634947101f7bf306da6deec68722f91b..99654b3a32722c8f16aa534ce98714bf784cf83b 100644
--- a/GUI/Model/Job/JobQueueData.cpp
+++ b/GUI/Model/Job/JobQueueData.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/Model/Job/JobQueueData.h"
 #include "Core/Simulation/GISASSimulation.h"
-#include "GUI/Model/Domain/DomainSimulationBuilder.h"
+#include "GUI/Model/To/DomainSimulationBuilder.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobModel.h"
 #include "GUI/Model/Job/JobWorker.h"
diff --git a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
index 06bb1e89a335bf62e12bd4c05bb59a2c7ed73a11..3f7fc32d6163b39cb2b10cfe944f9f27e1d6f88b 100644
--- a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
+++ b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/Model/Sample/GUIDomainSampleVisitor.h"
 #include "Base/Const/Units.h"
-#include "GUI/Model/Domain/FromDomain.h"
+#include "GUI/Model/From/FromDomain.h"
 #include "GUI/Model/Material/MaterialItem.h"
 #include "GUI/Model/Material/MaterialItemUtils.h"
 #include "GUI/Model/Material/MaterialModel.h"
diff --git a/GUI/Model/Domain/DomainObjectBuilder.cpp b/GUI/Model/To/DomainObjectBuilder.cpp
similarity index 95%
rename from GUI/Model/Domain/DomainObjectBuilder.cpp
rename to GUI/Model/To/DomainObjectBuilder.cpp
index 351bc29916625a3626df15b9644835b58516d932..4db7bd9c01cb1ca68b6c0351c30b99a31cff86c5 100644
--- a/GUI/Model/Domain/DomainObjectBuilder.cpp
+++ b/GUI/Model/To/DomainObjectBuilder.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/DomainObjectBuilder.cpp
+//! @file      GUI/Model/To/DomainObjectBuilder.cpp
 //! @brief     Implements DomainObjectBuilder namespace
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Domain/DomainObjectBuilder.h"
-#include "GUI/Model/Domain/ToDomain.h"
+#include "GUI/Model/To/DomainObjectBuilder.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Sample/InterferenceItems.h"
 #include "GUI/Model/Sample/LayerItem.h"
diff --git a/GUI/Model/Domain/DomainObjectBuilder.h b/GUI/Model/To/DomainObjectBuilder.h
similarity index 84%
rename from GUI/Model/Domain/DomainObjectBuilder.h
rename to GUI/Model/To/DomainObjectBuilder.h
index 43bbad2fca1cb9dfde7cf21ed7d3b3d908e89ab4..61d22461ff5b29464813fd326fef2a54d422b266 100644
--- a/GUI/Model/Domain/DomainObjectBuilder.h
+++ b/GUI/Model/To/DomainObjectBuilder.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/DomainObjectBuilder.h
+//! @file      GUI/Model/To/DomainObjectBuilder.h
 //! @brief     Defines namespace GUI::Model::DomainObjectBuilder
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINOBJECTBUILDER_H
-#define BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINOBJECTBUILDER_H
+#ifndef BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
+#define BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
 
 #include <memory>
 
@@ -38,4 +38,4 @@ std::unique_ptr<IInterference> buildInterference(const SessionItem& item);
 
 } // namespace GUI::Model::DomainObjectBuilder
 
-#endif // BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINOBJECTBUILDER_H
+#endif // BORNAGAIN_GUI_MODEL_TO_DOMAINOBJECTBUILDER_H
diff --git a/GUI/Model/Domain/DomainSimulationBuilder.cpp b/GUI/Model/To/DomainSimulationBuilder.cpp
similarity index 96%
rename from GUI/Model/Domain/DomainSimulationBuilder.cpp
rename to GUI/Model/To/DomainSimulationBuilder.cpp
index 91a812c9c3b1577d6ded65fea4fe24cf91b14fc6..2a4de47052f19f1f3084e302ce2e9d0cf86d9299 100644
--- a/GUI/Model/Domain/DomainSimulationBuilder.cpp
+++ b/GUI/Model/To/DomainSimulationBuilder.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/DomainSimulationBuilder.cpp
+//! @file      GUI/Model/To/DomainSimulationBuilder.cpp
 //! @brief     Implements class DomainSimulationBuilder
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Domain/DomainSimulationBuilder.h"
+#include "GUI/Model/To/DomainSimulationBuilder.h"
 #include "Base/Const/Units.h"
 #include "Core/Background/IBackground.h"
 #include "Core/Scan/AlphaScan.h"
@@ -20,8 +20,8 @@
 #include "Device/Beam/Beam.h"
 #include "Device/Beam/IFootprintFactor.h"
 #include "GUI/Model/Data/AxesItems.h"
-#include "GUI/Model/Domain/DomainObjectBuilder.h"
-#include "GUI/Model/Domain/ToDomain.h"
+#include "GUI/Model/To/DomainObjectBuilder.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "GUI/Model/Instrument/BackgroundItems.h"
 #include "GUI/Model/Instrument/FootprintItems.h"
 #include "GUI/Model/Instrument/InstrumentItems.h"
diff --git a/GUI/Model/Domain/DomainSimulationBuilder.h b/GUI/Model/To/DomainSimulationBuilder.h
similarity index 83%
rename from GUI/Model/Domain/DomainSimulationBuilder.h
rename to GUI/Model/To/DomainSimulationBuilder.h
index 30c20c07e56ab8af01c760f7fa7c1c2f5c976816..e30eafa5461af1ff32a5d2c9d299e14589795730 100644
--- a/GUI/Model/Domain/DomainSimulationBuilder.h
+++ b/GUI/Model/To/DomainSimulationBuilder.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/DomainSimulationBuilder.h
+//! @file      GUI/Model/To/DomainSimulationBuilder.h
 //! @brief     Defines namespace GUI::Model::DomainSimulationBuilder
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINSIMULATIONBUILDER_H
-#define BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINSIMULATIONBUILDER_H
+#ifndef BORNAGAIN_GUI_MODEL_TO_DOMAINSIMULATIONBUILDER_H
+#define BORNAGAIN_GUI_MODEL_TO_DOMAINSIMULATIONBUILDER_H
 
 #include <memory>
 
@@ -33,4 +33,4 @@ std::unique_ptr<ISimulation> createSimulation(const MultiLayerItem* sampleItem,
                                               const SimulationOptionsItem* optionsItem = nullptr);
 }; // namespace GUI::Model::DomainSimulationBuilder
 
-#endif // BORNAGAIN_GUI_MODEL_DOMAIN_DOMAINSIMULATIONBUILDER_H
+#endif // BORNAGAIN_GUI_MODEL_TO_DOMAINSIMULATIONBUILDER_H
diff --git a/GUI/Model/Domain/ToDomain.cpp b/GUI/Model/To/ToDomain.cpp
similarity index 98%
rename from GUI/Model/Domain/ToDomain.cpp
rename to GUI/Model/To/ToDomain.cpp
index 09dff3b1b587d3e02743f80dd57d2bf8351c39dc..fbcac0240f89f7d72f0f5c1be4feaddad86f4782 100644
--- a/GUI/Model/Domain/ToDomain.cpp
+++ b/GUI/Model/To/ToDomain.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/ToDomain.cpp
+//! @file      GUI/Model/To/ToDomain.cpp
 //! @brief     Implements class TransformToDomain
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,11 +12,11 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Domain/ToDomain.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "Base/Vector/Transform3D.h"
 #include "Core/Scan/AlphaScan.h"
 #include "Core/Simulation/GISASSimulation.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "GUI/Model/Instrument/BeamAngleItems.h"
 #include "GUI/Model/Instrument/BeamItems.h"
 #include "GUI/Model/Instrument/BeamWavelengthItem.h"
diff --git a/GUI/Model/Domain/ToDomain.h b/GUI/Model/To/ToDomain.h
similarity index 92%
rename from GUI/Model/Domain/ToDomain.h
rename to GUI/Model/To/ToDomain.h
index e7d1d8dcfe7d4d344c51a3633291501e12d05f6c..1b398494c4a48789227f5938dd8fbe15deacf8ca 100644
--- a/GUI/Model/Domain/ToDomain.h
+++ b/GUI/Model/To/ToDomain.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Model/Domain/ToDomain.h
+//! @file      GUI/Model/To/ToDomain.h
 //! @brief     Defines namespace GUI::Transform::ToDomain
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_MODEL_DOMAIN_TODOMAIN_H
-#define BORNAGAIN_GUI_MODEL_DOMAIN_TODOMAIN_H
+#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
@@ -59,4 +59,4 @@ void setSimulationOptions(ISimulation* simulation, const SessionItem& item);
 
 } // namespace GUI::Transform::ToDomain
 
-#endif // BORNAGAIN_GUI_MODEL_DOMAIN_TODOMAIN_H
+#endif // BORNAGAIN_GUI_MODEL_TO_TODOMAIN_H
diff --git a/GUI/View/Common/ItemSelectorWidget.cpp b/GUI/View/Common/ItemSelectorWidget.cpp
index a9bd7a3ea44f0bc05ad0ddff9fc8a6303a65c62c..ae2c638f2f29c4370a24297f626567a45316e1ae 100644
--- a/GUI/View/Common/ItemSelectorWidget.cpp
+++ b/GUI/View/Common/ItemSelectorWidget.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Common/ItemSelectorWidget.h"
 #include "GUI/Model/Session/SessionDecorationModel.h"
 #include "GUI/Model/Session/SessionModel.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include <QListView>
 #include <QVBoxLayout>
 
diff --git a/GUI/View/Compare/FitComparisonController.cpp b/GUI/View/Compare/FitComparisonController.cpp
index 2c9a785675851d73d02d1c985764bb343c2dda17..45361259a75b261a2ba4194eb21aa5c827f8f1a5 100644
--- a/GUI/View/Compare/FitComparisonController.cpp
+++ b/GUI/View/Compare/FitComparisonController.cpp
@@ -19,7 +19,7 @@
 #include "GUI/Model/Data/RealDataItem.h"
 #include "GUI/Model/Data/SpecularDataItem.h"
 #include "GUI/Model/Job/JobItem.h"
-#include "GUI/View/Intensity/PropertyRepeater.h"
+#include "GUI/View/Compare/PropertyRepeater.h"
 
 namespace {
 // different limits on relative difference plot are required
diff --git a/GUI/View/Compare/FitComparisonViewController.cpp b/GUI/View/Compare/FitComparisonViewController.cpp
index f97a4c377f02e526339af2aebbd90bf9bb9a9c9d..17d58e5243ceef458c92c2c5e7fef19a78a3aa08 100644
--- a/GUI/View/Compare/FitComparisonViewController.cpp
+++ b/GUI/View/Compare/FitComparisonViewController.cpp
@@ -21,7 +21,7 @@
 #include "GUI/Model/Data/SpecularDataItem.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Util/ComboProperty.h"
-#include "GUI/View/Intensity/PropertyRepeater.h"
+#include "GUI/View/Compare/PropertyRepeater.h"
 
 namespace {
 
diff --git a/GUI/View/Intensity/PropertyRepeater.cpp b/GUI/View/Compare/PropertyRepeater.cpp
similarity index 96%
rename from GUI/View/Intensity/PropertyRepeater.cpp
rename to GUI/View/Compare/PropertyRepeater.cpp
index dbbbf5f516b5817de3f37c15cf5d15f772219f41..e1c97b0f2559ebe498303594531c8c676144ddf6 100644
--- a/GUI/View/Intensity/PropertyRepeater.cpp
+++ b/GUI/View/Compare/PropertyRepeater.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/View/Intensity/PropertyRepeater.cpp
+//! @file      GUI/View/Compare/PropertyRepeater.cpp
 //! @brief     Implements class PropertyRepeater
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/View/Intensity/PropertyRepeater.h"
+#include "GUI/View/Compare/PropertyRepeater.h"
 #include "GUI/Model/Data/IntensityDataItem.h"
 
 PropertyRepeater::PropertyRepeater(QObject* parent, bool repeat_child_properties)
diff --git a/GUI/View/Intensity/PropertyRepeater.h b/GUI/View/Compare/PropertyRepeater.h
similarity index 86%
rename from GUI/View/Intensity/PropertyRepeater.h
rename to GUI/View/Compare/PropertyRepeater.h
index 98b085e809595a5f61eb0e6b9aec23149ce9ad4e..cb8530390e5c016cae386e5c16b8e8166d4a25b8 100644
--- a/GUI/View/Intensity/PropertyRepeater.h
+++ b/GUI/View/Compare/PropertyRepeater.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/View/Intensity/PropertyRepeater.h
+//! @file      GUI/View/Compare/PropertyRepeater.h
 //! @brief     Defines class PropertyRepeater
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_VIEW_INTENSITY_PROPERTYREPEATER_H
-#define BORNAGAIN_GUI_VIEW_INTENSITY_PROPERTYREPEATER_H
+#ifndef BORNAGAIN_GUI_VIEW_COMPARE_PROPERTYREPEATER_H
+#define BORNAGAIN_GUI_VIEW_COMPARE_PROPERTYREPEATER_H
 
 #include <QMap>
 #include <QObject>
@@ -46,4 +46,4 @@ private:
     bool m_repeat_child_properties;
 };
 
-#endif // BORNAGAIN_GUI_VIEW_INTENSITY_PROPERTYREPEATER_H
+#endif // BORNAGAIN_GUI_VIEW_COMPARE_PROPERTYREPEATER_H
diff --git a/GUI/View/Fit/FitActivityPanel.cpp b/GUI/View/Fit/FitActivityPanel.cpp
index 45e65e9eeecd2b784d18bf16f88ac91c7dba4646..2acbbab40958803829ce01afbf3946881deb718e 100644
--- a/GUI/View/Fit/FitActivityPanel.cpp
+++ b/GUI/View/Fit/FitActivityPanel.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Fit/FitActivityPanel.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobModel.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Fit/FitSessionController.h"
 #include "GUI/View/Fit/FitSessionManager.h"
 #include "GUI/View/Fit/FitSessionWidget.h"
diff --git a/GUI/View/Fit/FitObjectiveBuilder.cpp b/GUI/View/Fit/FitObjectiveBuilder.cpp
index 6dae4682b0c4b1d9297c62941fbda8b7b88ef314..70408a4350ffe0a565047397035a821580b3e4dd 100644
--- a/GUI/View/Fit/FitObjectiveBuilder.cpp
+++ b/GUI/View/Fit/FitObjectiveBuilder.cpp
@@ -20,7 +20,7 @@
 #include "Fit/Minimizer/IMinimizer.h"
 #include "GUI/Model/Data/DataItem.h"
 #include "GUI/Model/Data/RealDataItem.h"
-#include "GUI/Model/Domain/DomainSimulationBuilder.h"
+#include "GUI/Model/To/DomainSimulationBuilder.h"
 #include "GUI/Model/Fit/FitParameterItems.h"
 #include "GUI/Model/Fit/FitSuiteItem.h"
 #include "GUI/Model/Fit/MinimizerItem.h"
diff --git a/GUI/View/Fit/FitParameterWidget.cpp b/GUI/View/Fit/FitParameterWidget.cpp
index 7662e1b5a97561e9d2517be5e1013f7dfc74a140..32cf9e20a1676ed116f023a3954c25b1a4604bc6 100644
--- a/GUI/View/Fit/FitParameterWidget.cpp
+++ b/GUI/View/Fit/FitParameterWidget.cpp
@@ -21,7 +21,7 @@
 #include "GUI/Model/Group/FilterPropertyProxy.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobModel.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Fit/ParameterTuningWidget.h"
 #include "GUI/View/Info/OverlayLabelController.h"
 #include "GUI/View/PropertyEditor/CustomEventFilters.h"
diff --git a/GUI/View/Fit/FitSessionWidget.cpp b/GUI/View/Fit/FitSessionWidget.cpp
index e68f369148431e221e950f5386d6a314af6e10cb..b5916024e1bbc359420eacf98dfb917a6a289806 100644
--- a/GUI/View/Fit/FitSessionWidget.cpp
+++ b/GUI/View/Fit/FitSessionWidget.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Fit/FitSessionWidget.h"
 #include "GUI/Model/Job/JobItem.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Fit/FitParameterWidget.h"
 #include "GUI/View/Fit/FitResultsWidget.h"
 #include "GUI/View/Fit/FitSessionController.h"
diff --git a/GUI/View/Fit/JobMessagePanel.cpp b/GUI/View/Fit/JobMessagePanel.cpp
index 7d2f5c9a06942ce77211c2acafa303648f025a3c..3780bd99ead706f0f54968182db616ef089d8937 100644
--- a/GUI/View/Fit/JobMessagePanel.cpp
+++ b/GUI/View/Fit/JobMessagePanel.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Fit/JobMessagePanel.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include <QScrollBar>
 #include <QStackedWidget>
 #include <QTextEdit>
diff --git a/GUI/View/Fit/JobRealTimeWidget.cpp b/GUI/View/Fit/JobRealTimeWidget.cpp
index fab732a7d0b379896ab651f324916329f9c3cb63..940d2b2e35550ad500dcafb90db4cc3a78d29bdd 100644
--- a/GUI/View/Fit/JobRealTimeWidget.cpp
+++ b/GUI/View/Fit/JobRealTimeWidget.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Fit/JobRealTimeWidget.h"
 #include "GUI/Model/Job/JobItem.h"
 #include "GUI/Model/Job/JobModel.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Fit/ParameterTuningWidget.h"
 #include <QVBoxLayout>
 
diff --git a/GUI/View/Fit/RunFitControlWidget.cpp b/GUI/View/Fit/RunFitControlWidget.cpp
index 06ff242acfbfd3d3bed8a56ae1bbb2ad892e2908..ddabdf21d83f20e15558555ac57dd14fa9a79ed8 100644
--- a/GUI/View/Fit/RunFitControlWidget.cpp
+++ b/GUI/View/Fit/RunFitControlWidget.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Fit/RunFitControlWidget.h"
 #include "GUI/Model/Fit/FitSuiteItem.h"
 #include "GUI/Model/Job/JobItem.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Info/CautionSign.h"
 #include "GUI/View/Tool/DesignerHelper.h"
 #include <QFont>
diff --git a/GUI/View/Import/ImportDataView.cpp b/GUI/View/Import/ImportDataView.cpp
index 2f8b0085c0e31bb912510e4cd596f7b213f7aed7..62169e3659b968dcb3d8068a475e2b6138a65274 100644
--- a/GUI/View/Import/ImportDataView.cpp
+++ b/GUI/View/Import/ImportDataView.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Model/Data/RealDataItem.h"
 #include "GUI/Model/Data/RealDataModel.h"
 #include "GUI/Model/Project/ProjectDocument.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Import/RealDataSelectorWidget.h"
 #include <QAction>
 #include <QSplitter>
diff --git a/GUI/View/Import/RealDataPresenter.cpp b/GUI/View/Import/RealDataPresenter.cpp
index e527b9c44e07b213319d1f64fea6c40fb07bb9b5..d5410a36b44a2b9269d538794b49a8025cdf9205 100644
--- a/GUI/View/Import/RealDataPresenter.cpp
+++ b/GUI/View/Import/RealDataPresenter.cpp
@@ -18,7 +18,7 @@
 #include "GUI/View/Import/RealDataMaskWidget.h"
 #include "GUI/View/Intensity/IntensityDataWidget.h"
 #include "GUI/View/Projection/IntensityDataProjectionsWidget.h"
-#include "GUI/View/SpecularData/SpecularDataImportWidget.h"
+#include "GUI/View/Import/SpecularDataImportWidget.h"
 #include "GUI/View/SpecularData/SpecularDataWidget.h"
 #include <QAction>
 
diff --git a/GUI/View/SpecularData/SpecularDataImportWidget.cpp b/GUI/View/Import/SpecularDataImportWidget.cpp
similarity index 99%
rename from GUI/View/SpecularData/SpecularDataImportWidget.cpp
rename to GUI/View/Import/SpecularDataImportWidget.cpp
index 146a87a3a4073c1c65fd4566d66f397ec1217d5e..2831db0a0f9d45e03c50837422666d0fb6426825 100644
--- a/GUI/View/SpecularData/SpecularDataImportWidget.cpp
+++ b/GUI/View/Import/SpecularDataImportWidget.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/View/SpecularData/SpecularDataImportWidget.cpp
+//! @file      GUI/View/Import/SpecularDataImportWidget.cpp
 //! @brief     Implements class SpecularDataImportWidget
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/View/SpecularData/SpecularDataImportWidget.h"
+#include "GUI/View/Import/SpecularDataImportWidget.h"
 #include "GUI/Model/Data/DataItemUtils.h"
 #include "GUI/Model/Data/RealDataItem.h"
 #include "GUI/Model/Data/SpecularDataItem.h"
diff --git a/GUI/View/SpecularData/SpecularDataImportWidget.h b/GUI/View/Import/SpecularDataImportWidget.h
similarity index 88%
rename from GUI/View/SpecularData/SpecularDataImportWidget.h
rename to GUI/View/Import/SpecularDataImportWidget.h
index 1b72873c7bdf11a42e07afc23e49393fc8bb2e9b..366377d487acd8db83b767b9fde67e72e7c52ef6 100644
--- a/GUI/View/SpecularData/SpecularDataImportWidget.h
+++ b/GUI/View/Import/SpecularDataImportWidget.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/View/SpecularData/SpecularDataImportWidget.h
+//! @file      GUI/View/Import/SpecularDataImportWidget.h
 //! @brief     Defines class SpecularDataImportWidget
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_VIEW_SPECULARDATA_SPECULARDATAIMPORTWIDGET_H
-#define BORNAGAIN_GUI_VIEW_SPECULARDATA_SPECULARDATAIMPORTWIDGET_H
+#ifndef BORNAGAIN_GUI_VIEW_IMPORT_SPECULARDATAIMPORTWIDGET_H
+#define BORNAGAIN_GUI_VIEW_IMPORT_SPECULARDATAIMPORTWIDGET_H
 
 #include "GUI/Model/IO/AbstractDataLoader1D.h"
 #include "GUI/View/Common/SessionItemWidget.h"
@@ -65,4 +65,4 @@ private:
     AbstractDataLoader1D* m_loader; // only borrowed from realDataItem. Do not delete!
 };
 
-#endif // BORNAGAIN_GUI_VIEW_SPECULARDATA_SPECULARDATAIMPORTWIDGET_H
+#endif // BORNAGAIN_GUI_VIEW_IMPORT_SPECULARDATAIMPORTWIDGET_H
diff --git a/GUI/View/SpecularData/SpecularDataImportWidget.ui b/GUI/View/Import/SpecularDataImportWidget.ui
similarity index 100%
rename from GUI/View/SpecularData/SpecularDataImportWidget.ui
rename to GUI/View/Import/SpecularDataImportWidget.ui
diff --git a/GUI/View/Instrument/DistributionEditor.cpp b/GUI/View/Instrument/DistributionEditor.cpp
index dd27a782915213e147d7b80c647676785f5da5cd..8336a0f1f0c7e097487e1f322dd82a4ac754b861 100644
--- a/GUI/View/Instrument/DistributionEditor.cpp
+++ b/GUI/View/Instrument/DistributionEditor.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Instrument/DistributionEditor.h"
 #include "GUI/Model/Group/DistributionItems.h"
 #include "GUI/Model/Session/SessionModel.h"
-#include "GUI/Model/Types/ItemWithDistribution.h"
+#include "GUI/Model/Instrument/ItemWithDistribution.h"
 #include "GUI/View/Instrument/DistributionForms.h"
 #include "GUI/View/Instrument/EditDistributionDialog.h"
 #include "GUI/View/PropertyEditor/GroupInfoBox.h"
diff --git a/GUI/View/Instrument/DistributionForms.cpp b/GUI/View/Instrument/DistributionForms.cpp
index ba829d23b0c2013adce99b1257c8976604559abf..9ec5443f3fa0cdb7292504ce064f09cc9fcaa6fb 100644
--- a/GUI/View/Instrument/DistributionForms.cpp
+++ b/GUI/View/Instrument/DistributionForms.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Instrument/DistributionForms.h"
 #include "GUI/Model/Group/DistributionItems.h"
-#include "GUI/Model/Types/ItemWithDistribution.h"
+#include "GUI/Model/Instrument/ItemWithDistribution.h"
 #include "GUI/View/Common/ScientificSpinBox.h"
 #include "GUI/View/Instrument/DistributionEditor.h"
 
diff --git a/GUI/View/Instrument/EditDistributionDialog.cpp b/GUI/View/Instrument/EditDistributionDialog.cpp
index 8b8983b67c05dff6c33752f815b5581ea11b9e8d..822f0dcb4ce6931b177692318b4d253829c4669e 100644
--- a/GUI/View/Instrument/EditDistributionDialog.cpp
+++ b/GUI/View/Instrument/EditDistributionDialog.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Instrument/EditDistributionDialog.h"
-#include "GUI/Model/Types/ItemWithDistribution.h"
+#include "GUI/Model/Instrument/ItemWithDistribution.h"
 #include "GUI/View/Instrument/DistributionEditor.h"
 #include "GUI/View/Instrument/DistributionPlot.h"
 
diff --git a/GUI/View/Instrument/InstrumentLibraryEditor.cpp b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
index 3a9ac22cbc5c7f4822368b0c8a0ffc05bbb883e1..9ca14059f8e454ce39621dce178ea471f1880033 100644
--- a/GUI/View/Instrument/InstrumentLibraryEditor.cpp
+++ b/GUI/View/Instrument/InstrumentLibraryEditor.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Application/GlobalSettings.h"
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/State/SessionData.h"
-#include "GUI/Util/ItemDelegateForHTML.h"
+#include "GUI/View/Tool/ItemDelegateForHTML.h"
 #include "GUI/View/Common/ItemViewOverlayButtons.h"
 #include "GUI/View/Instrument/Detail/CreateDetails.h"
 #include "GUI/View/Tool/StyleUtils.h"
diff --git a/GUI/View/Job/JobPropertiesWidget.cpp b/GUI/View/Job/JobPropertiesWidget.cpp
index e0555271737601a75033e675826781641831c59a..0c003b926232c20d7c2561434757fd3fbe9e8805 100644
--- a/GUI/View/Job/JobPropertiesWidget.cpp
+++ b/GUI/View/Job/JobPropertiesWidget.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Job/JobPropertiesWidget.h"
 #include "GUI/Model/Job/JobItem.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Job/JobPropertiesTableModel.h"
 #include "GUI/View/Tool/StyleUtils.h"
 #include <QTabBar>
diff --git a/GUI/View/Job/JobSelectorWidget.cpp b/GUI/View/Job/JobSelectorWidget.cpp
index a1f1ed522fc2fedef185decd49eff33e8c66748a..2b1b6eb8fb6422d010ebbfdf50e158a1d7505787 100644
--- a/GUI/View/Job/JobSelectorWidget.cpp
+++ b/GUI/View/Job/JobSelectorWidget.cpp
@@ -15,7 +15,7 @@
 #include "GUI/View/Job/JobSelectorWidget.h"
 #include "Base/Utils/Assert.h"
 #include "GUI/Model/Job/JobItem.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Job/JobListView.h"
 #include "GUI/View/Job/JobPropertiesWidget.h"
 #include <QSplitter>
diff --git a/GUI/View/Job/JobViewActivities.cpp b/GUI/View/Job/JobViewActivities.cpp
index ffc4fc46de74a4d7ac29a6af24656d44f31309bf..769eea7fcb92a4618353de49f7db774ba9fabbab 100644
--- a/GUI/View/Job/JobViewActivities.cpp
+++ b/GUI/View/Job/JobViewActivities.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Job/JobViewActivities.h"
 #include "Base/Utils/Assert.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 
 namespace {
 QMap<JobViewActivity, QVector<JobViewFlags::Dock>> createActivityMap()
diff --git a/GUI/View/Main/ActionManager.cpp b/GUI/View/Main/ActionManager.cpp
index 6c95c166dbe35cf1d259e5084100bbfd95cc63c0..290b675b49ba850a9787e919bbd9e0adcdfde097 100644
--- a/GUI/View/Main/ActionManager.cpp
+++ b/GUI/View/Main/ActionManager.cpp
@@ -19,7 +19,7 @@
 #include "GUI/Model/State/SessionData.h"
 #include "GUI/Util/OSInfo.h"
 #include "GUI/Util/Path.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Job/JobView.h"
 #include "GUI/View/Main/AboutDialog.h"
 #include "GUI/View/Main/MainWindow.h"
diff --git a/GUI/View/Main/MainWindow.cpp b/GUI/View/Main/MainWindow.cpp
index 52265bd3fd72654503245c10a0d70b87c5a0d546..e54565f5b6f99d7974607fbe651e0a14213dbe7f 100644
--- a/GUI/View/Main/MainWindow.cpp
+++ b/GUI/View/Main/MainWindow.cpp
@@ -18,7 +18,7 @@
 #include "GUI/Model/State/SessionData.h"
 #include "GUI/Util/OSInfo.h"
 #include "GUI/Util/Path.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Import/ImportDataView.h"
 #include "GUI/View/Instrument/InstrumentView.h"
 #include "GUI/View/Job/JobView.h"
diff --git a/GUI/View/Main/ProjectManager.cpp b/GUI/View/Main/ProjectManager.cpp
index 7326942bee1da923636a1ac42856949a86354940..77c97e8a9800f01ee56571e97f7d41ab1680081d 100644
--- a/GUI/View/Main/ProjectManager.cpp
+++ b/GUI/View/Main/ProjectManager.cpp
@@ -20,7 +20,7 @@
 #include "GUI/Model/State/SessionData.h"
 #include "GUI/Util/Error.h"
 #include "GUI/Util/MessageService.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Info/ProjectLoadProblemDialog.h"
 #include "GUI/View/Main/MainWindow.h"
 #include "GUI/View/Main/NewProjectDialog.h"
diff --git a/GUI/View/Main/PyImportAssistant.cpp b/GUI/View/Main/PyImportAssistant.cpp
index 198634c4d56913625a010183343521cfad06be22..2896bf85f333e6da7218ed3fd7c56eb40ff558a3 100644
--- a/GUI/View/Main/PyImportAssistant.cpp
+++ b/GUI/View/Main/PyImportAssistant.cpp
@@ -19,7 +19,7 @@
 #include "Base/Utils/Assert.h"
 #include "Base/Utils/SysUtils.h"
 #include "GUI/Application/GlobalSettings.h"
-#include "GUI/Model/Domain/GUIObjectBuilder.h"
+#include "GUI/Model/From/GUIObjectBuilder.h"
 #include "GUI/Model/IO/ProjectUtils.h"
 #include "GUI/Model/Sample/GUIDomainSampleVisitor.h"
 #include "GUI/Util/Path.h"
diff --git a/GUI/View/Mask/MaskEditorToolBar.cpp b/GUI/View/Mask/MaskEditorToolBar.cpp
index dee68f3614df54e7af52ea41150bdf9a4653a537..8945717bd48a6a9fc1b31c57eca05e5741e9c95b 100644
--- a/GUI/View/Mask/MaskEditorToolBar.cpp
+++ b/GUI/View/Mask/MaskEditorToolBar.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/Mask/MaskEditorToolBar.h"
 #include "Base/Utils/Assert.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Mask/MaskEditorActions.h"
 #include <QButtonGroup>
 #include <QLabel>
diff --git a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
index 39b001ca1111b1c1aa48648e4f5abca4dfa6dc63..e4fc16cd5f3c5114781169321be1fc33369441c1 100644
--- a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
+++ b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp
@@ -22,7 +22,7 @@
 #include "GUI/Model/Sample/ItemWithMaterial.h"
 #include "GUI/Model/Sample/SampleModel.h"
 #include "GUI/Model/Types/VectorItem.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/MaterialEditor/MaterialEditorModel.h"
 #include "GUI/View/Tool/EditUtil.h"
 #include "GUI/View/Tool/StyleUtils.h"
diff --git a/GUI/View/Projection/ProjectionsToolBar.cpp b/GUI/View/Projection/ProjectionsToolBar.cpp
index e494144af1f46dbd8e15cbfa409575c52c586b83..f8c5836a41e72a69ec5c899a61994e855ed3c939 100644
--- a/GUI/View/Projection/ProjectionsToolBar.cpp
+++ b/GUI/View/Projection/ProjectionsToolBar.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Projection/ProjectionsToolBar.h"
-#include "GUI/Util/mainwindow_constants.h"
+#include "GUI/View/Tool/mainwindow_constants.h"
 #include "GUI/View/Projection/ProjectionsEditorActions.h"
 #include <QButtonGroup>
 #include <QLabel>
diff --git a/GUI/View/PropertyEditor/ComponentFlatView.cpp b/GUI/View/PropertyEditor/ComponentFlatView.cpp
index 58e8b6ec639f990d5362e08b0d1352d028a6dfd4..49305e695afc47ab3d0f37e858014c9e0eb0c751 100644
--- a/GUI/View/PropertyEditor/ComponentFlatView.cpp
+++ b/GUI/View/PropertyEditor/ComponentFlatView.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Model/Component/ComponentUtils.h"
 #include "GUI/Model/Group/GroupItem.h"
 #include "GUI/Model/Session/SessionModel.h"
-#include "GUI/Util/LayoutUtils.h"
+#include "GUI/View/Tool/LayoutUtils.h"
 #include "GUI/View/PropertyEditor/PropertyEditorFactory.h"
 #include "GUI/View/PropertyEditor/PropertyWidgetItem.h"
 #include <QBoxLayout>
diff --git a/GUI/View/PropertyEditor/TestComponentView.cpp b/GUI/View/PropertyEditor/TestComponentView.cpp
index 67b2b50b87f9c23cd5000bbb325c69197fdba9dc..a5aa13c317d12e71e78b4578d65de4e5f0c733dd 100644
--- a/GUI/View/PropertyEditor/TestComponentView.cpp
+++ b/GUI/View/PropertyEditor/TestComponentView.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/PropertyEditor/TestComponentView.h"
 #include "GUI/Model/Data/IntensityDataItem.h"
-#include "GUI/Model/Domain/GUIObjectBuilder.h"
+#include "GUI/Model/From/GUIObjectBuilder.h"
 #include "GUI/Model/Instrument/BeamItems.h"
 #include "GUI/Model/Material/MaterialModel.h"
 #include "GUI/Model/Sample/GUIDomainSampleVisitor.h"
diff --git a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
index 0d5b438021983a6f6dbe5e165ac000b241cfff8f..bc0cdd947a6edbe0077f8dc6bd1774090cb01bc0 100644
--- a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
+++ b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp
@@ -22,7 +22,7 @@
 #include "GUI/Model/State/SessionData.h"
 #include "GUI/Model/Types/DoubleDescriptor.h"
 #include "GUI/Model/Types/VectorDescriptor.h"
-#include "GUI/Util/LayoutUtils.h"
+#include "GUI/View/Tool/LayoutUtils.h"
 #include "GUI/View/Edit/DoubleLineEdit.h"
 #include "GUI/View/Edit/DoubleSpinBox.h"
 #include "GUI/View/MaterialEditor/MaterialEditorDialog.h"
diff --git a/GUI/View/SampleDesigner/SampleListView.cpp b/GUI/View/SampleDesigner/SampleListView.cpp
index 8cbb43df354a5e41e422c4e10a27bb80c6e02ffe..782be800525238d457fdad420a05b1c420308e54 100644
--- a/GUI/View/SampleDesigner/SampleListView.cpp
+++ b/GUI/View/SampleDesigner/SampleListView.cpp
@@ -18,7 +18,7 @@
 #include "GUI/Model/Sample/MultiLayerItem.h"
 #include "GUI/Model/Sample/SampleListModel.h"
 #include "GUI/Model/State/SessionData.h"
-#include "GUI/Util/ItemDelegateForHTML.h"
+#include "GUI/View/Tool/ItemDelegateForHTML.h"
 #include "GUI/View/Common/ItemViewOverlayButtons.h"
 #include <QAction>
 #include <QDialog>
diff --git a/GUI/View/SampleDesigner/ScriptPanel.cpp b/GUI/View/SampleDesigner/ScriptPanel.cpp
index 92c390ed83de96357b7685073c018ca475812f88..773151805193fc2106a805c232bfd2494649a976 100644
--- a/GUI/View/SampleDesigner/ScriptPanel.cpp
+++ b/GUI/View/SampleDesigner/ScriptPanel.cpp
@@ -14,7 +14,7 @@
 
 #include "GUI/View/SampleDesigner/ScriptPanel.h"
 #include "Core/Export/ExportToPython.h"
-#include "GUI/Model/Domain/DomainObjectBuilder.h"
+#include "GUI/Model/To/DomainObjectBuilder.h"
 #include "GUI/Model/Sample/MultiLayerItem.h"
 #include "GUI/Model/Sample/SampleModel.h"
 #include "GUI/View/Info/CautionSign.h"
diff --git a/GUI/View/SampleDesigner/SelectionContainerForm.h b/GUI/View/SampleDesigner/SelectionContainerForm.h
index a694c1c9a54956c0cf2ed4499cfb9a683e66e2f4..56597e3a76027af06329b17a8a58ba96dccecc4d 100644
--- a/GUI/View/SampleDesigner/SelectionContainerForm.h
+++ b/GUI/View/SampleDesigner/SelectionContainerForm.h
@@ -15,7 +15,7 @@
 #ifndef BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SELECTIONCONTAINERFORM_H
 #define BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SELECTIONCONTAINERFORM_H
 
-#include "GUI/Util/LayoutUtils.h"
+#include "GUI/View/Tool/LayoutUtils.h"
 #include "GUI/View/PropertyEditor/CustomEventFilters.h"
 #include "GUI/View/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/View/SampleDesigner/SampleEditorController.h"
diff --git a/GUI/View/Script/PythonScriptWidget.cpp b/GUI/View/Script/PythonScriptWidget.cpp
index 30cd453f3201bcbcc01e8328afc54d5c8dab3a19..5c8b4759ad0fe463d08c2c1fc5a2f8be71d404cb 100644
--- a/GUI/View/Script/PythonScriptWidget.cpp
+++ b/GUI/View/Script/PythonScriptWidget.cpp
@@ -16,7 +16,7 @@
 #include "Core/Export/ExportToPython.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "GUI/Application/GlobalSettings.h"
-#include "GUI/Model/Domain/DomainSimulationBuilder.h"
+#include "GUI/Model/To/DomainSimulationBuilder.h"
 #include "GUI/View/Common/StyledToolBar.h"
 #include "GUI/View/Info/CautionSign.h"
 #include "GUI/View/Info/PythonSyntaxHighlighter.h"
diff --git a/GUI/Util/ItemDelegateForHTML.cpp b/GUI/View/Tool/ItemDelegateForHTML.cpp
similarity index 97%
rename from GUI/Util/ItemDelegateForHTML.cpp
rename to GUI/View/Tool/ItemDelegateForHTML.cpp
index 665ce54fad7660b18cb1ecb32da8b3a874873591..40f14e8d72ea5f8a2807e91d21a41e5ffc83907e 100644
--- a/GUI/Util/ItemDelegateForHTML.cpp
+++ b/GUI/View/Tool/ItemDelegateForHTML.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Util/ItemDelegateForHTML.cpp
+//! @file      GUI/View/Tool/ItemDelegateForHTML.cpp
 //! @brief     Implements class ItemDelegateForHTML
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 
-#include "GUI/Util/ItemDelegateForHTML.h"
+#include "GUI/View/Tool/ItemDelegateForHTML.h"
 #include <QAbstractItemView>
 #include <QAbstractTextDocumentLayout>
 #include <QApplication>
diff --git a/GUI/Util/ItemDelegateForHTML.h b/GUI/View/Tool/ItemDelegateForHTML.h
similarity index 84%
rename from GUI/Util/ItemDelegateForHTML.h
rename to GUI/View/Tool/ItemDelegateForHTML.h
index 33355ccab5c91cadcafed0c0fb804584e4bbdfca..d200575dcc3be179857df8bc31fd3e37a61d4e60 100644
--- a/GUI/Util/ItemDelegateForHTML.h
+++ b/GUI/View/Tool/ItemDelegateForHTML.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Util/ItemDelegateForHTML.h
+//! @file      GUI/View/Tool/ItemDelegateForHTML.h
 //! @brief     Defines class ItemDelegateForHTML
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_UTIL_ITEMDELEGATEFORHTML_H
-#define BORNAGAIN_GUI_UTIL_ITEMDELEGATEFORHTML_H
+#ifndef BORNAGAIN_GUI_VIEW_TOOL_ITEMDELEGATEFORHTML_H
+#define BORNAGAIN_GUI_VIEW_TOOL_ITEMDELEGATEFORHTML_H
 
 #include <QStyledItemDelegate>
 
@@ -35,4 +35,4 @@ private:
 };
 
 
-#endif // BORNAGAIN_GUI_UTIL_ITEMDELEGATEFORHTML_H
\ No newline at end of file
+#endif // BORNAGAIN_GUI_VIEW_TOOL_ITEMDELEGATEFORHTML_H
\ No newline at end of file
diff --git a/GUI/Util/LayoutUtils.cpp b/GUI/View/Tool/LayoutUtils.cpp
similarity index 98%
rename from GUI/Util/LayoutUtils.cpp
rename to GUI/View/Tool/LayoutUtils.cpp
index b1bcbe2f58024bbaaed3e8738fd7ef9bbcbbf379..4f2db938fac653ca67e9573db3c3a545e42ffa0f 100644
--- a/GUI/Util/LayoutUtils.cpp
+++ b/GUI/View/Tool/LayoutUtils.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Util/LayoutUtils.cpp
+//! @file      GUI/View/Tool/LayoutUtils.cpp
 //! @brief     Implements LayoutUtils namespace
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,7 +12,7 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Util/LayoutUtils.h"
+#include "GUI/View/Tool/LayoutUtils.h"
 #include <QBoxLayout>
 #include <QGridLayout>
 #include <QLayoutItem>
diff --git a/GUI/Util/LayoutUtils.h b/GUI/View/Tool/LayoutUtils.h
similarity index 88%
rename from GUI/Util/LayoutUtils.h
rename to GUI/View/Tool/LayoutUtils.h
index 343ea025cf0e7a02ca8d72e0cf0758ed46e5aba8..d771f1198edcc486bd6444b11f80dd9eb4e2f5a1 100644
--- a/GUI/Util/LayoutUtils.h
+++ b/GUI/View/Tool/LayoutUtils.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Util/LayoutUtils.h
+//! @file      GUI/View/Tool/LayoutUtils.h
 //! @brief     Defines namespace GUI::Util::Layout
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_UTIL_LAYOUTUTILS_H
-#define BORNAGAIN_GUI_UTIL_LAYOUTUTILS_H
+#ifndef BORNAGAIN_GUI_VIEW_TOOL_LAYOUTUTILS_H
+#define BORNAGAIN_GUI_VIEW_TOOL_LAYOUTUTILS_H
 
 class QLayout;
 class QGridLayout;
@@ -41,4 +41,4 @@ QWidget* placeHolder();
 
 } // namespace GUI::Util::Layout
 
-#endif // BORNAGAIN_GUI_UTIL_LAYOUTUTILS_H
+#endif // BORNAGAIN_GUI_VIEW_TOOL_LAYOUTUTILS_H
diff --git a/GUI/Util/mainwindow_constants.h b/GUI/View/Tool/mainwindow_constants.h
similarity index 90%
rename from GUI/Util/mainwindow_constants.h
rename to GUI/View/Tool/mainwindow_constants.h
index 0e6bc68e786b3f48b79d9856aa858e1a94c30f7b..b278003ba7eecce19d5dfe2e525430eda3f5fbc0 100644
--- a/GUI/Util/mainwindow_constants.h
+++ b/GUI/View/Tool/mainwindow_constants.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/Util/mainwindow_constants.h
+//! @file      GUI/View/Tool/mainwindow_constants.h
 //! @brief     Defines namespace GUI::Constants
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_UTIL_MAINWINDOW_CONSTANTS_H
-#define BORNAGAIN_GUI_UTIL_MAINWINDOW_CONSTANTS_H
+#ifndef BORNAGAIN_GUI_VIEW_TOOL_MAINWINDOW_CONSTANTS_H
+#define BORNAGAIN_GUI_VIEW_TOOL_MAINWINDOW_CONSTANTS_H
 
 #include <QString>
 
@@ -65,4 +65,4 @@ const int styled_toolbar_height = 25;
 
 } // namespace GUI::Constants
 
-#endif // BORNAGAIN_GUI_UTIL_MAINWINDOW_CONSTANTS_H
+#endif // BORNAGAIN_GUI_VIEW_TOOL_MAINWINDOW_CONSTANTS_H
diff --git a/GUI/View/Toplevel/WelcomeView.cpp b/GUI/View/Toplevel/WelcomeView.cpp
index 12781b03193c94af5009f013206536e11bf55d87..4acf14c8d5c77450344b262998b3a0cff9217173 100644
--- a/GUI/View/Toplevel/WelcomeView.cpp
+++ b/GUI/View/Toplevel/WelcomeView.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/View/Toplevel/WelcomeView.h"
-#include "GUI/Util/LayoutUtils.h"
+#include "GUI/View/Tool/LayoutUtils.h"
 #include "GUI/Util/Path.h"
 #include "GUI/View/Main/ProjectManager.h"
 #include "GUI/View/Tool/GroupBoxCollapser.h"
diff --git a/Tests/Functional/GUI/Check.cpp b/Tests/Functional/GUI/Check.cpp
index 3843897fa5db447ec71f0322bf6aae7edfe21c58..eb55b1f1c8af62cf035c5501e23ebb8d8afb8eb3 100644
--- a/Tests/Functional/GUI/Check.cpp
+++ b/Tests/Functional/GUI/Check.cpp
@@ -20,8 +20,8 @@
 #include "Device/Histo/IntensityDataIOFactory.h"
 #include "Device/Histo/SimulationResult.h"
 #include "GUI/Model/Data/DocumentModel.h"
-#include "GUI/Model/Domain/DomainSimulationBuilder.h"
-#include "GUI/Model/Domain/GUIObjectBuilder.h"
+#include "GUI/Model/To/DomainSimulationBuilder.h"
+#include "GUI/Model/From/GUIObjectBuilder.h"
 #include "GUI/Model/Instrument/InstrumentItems.h"
 #include "GUI/Model/Instrument/InstrumentModel.h"
 #include "GUI/Model/Material/MaterialModel.h"
diff --git a/Tests/Functional/ProStd/MakeSimulations.cpp b/Tests/Functional/ProStd/MakeSimulations.cpp
index d636e2864f21bb61c3c9571e51f985a2783bee48..298d9b24b6ee314e7d7cb69691a1d5028bd15903 100644
--- a/Tests/Functional/ProStd/MakeSimulations.cpp
+++ b/Tests/Functional/ProStd/MakeSimulations.cpp
@@ -29,7 +29,7 @@
 #include "Device/Mask/Polygon.h"
 #include "Device/Mask/Rectangle.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/Distributions.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Resample/Options/SimulationOptions.h"
diff --git a/Tests/Unit/Device/ScanResolutionTest.cpp b/Tests/Unit/Core/ScanResolutionTest.cpp
similarity index 99%
rename from Tests/Unit/Device/ScanResolutionTest.cpp
rename to Tests/Unit/Core/ScanResolutionTest.cpp
index 5d575703f517e033ea05fe2c212ebf31cd84c690..5338e64ed8b59212d2a0487651c3407c74c0df0e 100644
--- a/Tests/Unit/Device/ScanResolutionTest.cpp
+++ b/Tests/Unit/Core/ScanResolutionTest.cpp
@@ -1,4 +1,4 @@
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Tests/GTestWrapper/google_test.h"
 #include <cmath>
diff --git a/Tests/Unit/Core/SpecularScanTest.cpp b/Tests/Unit/Core/SpecularScanTest.cpp
index 5e40565c352eb1c682423e66724e3f0a6c209502..70d1458984a9d250e39e1e1fd4b1f5673508d77c 100644
--- a/Tests/Unit/Core/SpecularScanTest.cpp
+++ b/Tests/Unit/Core/SpecularScanTest.cpp
@@ -4,7 +4,7 @@
 #include "Core/Scan/QzScan.h"
 #include "Device/Beam/FootprintGauss.h"
 #include "Device/Instrument/Instrument.h"
-#include "Device/Resolution/ScanResolution.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Param/Distrib/RangedDistributions.h"
 #include "Resample/Element/SpecularElement.h"
 #include "Resample/Slice/Slice.h"
diff --git a/Tests/Unit/GUI/TestAxesItems.cpp b/Tests/Unit/GUI/TestAxesItems.cpp
index 47d2609accd4992b94fbf28c48982ebc7ba0c8a5..5169307d595a951b65e2520619b20932f890fcf8 100644
--- a/Tests/Unit/GUI/TestAxesItems.cpp
+++ b/Tests/Unit/GUI/TestAxesItems.cpp
@@ -2,7 +2,7 @@
 #include "Base/Axis/VariableBinAxis.h"
 #include "Base/Const/Units.h"
 #include "GUI/Model/Data/AxesItems.h"
-#include "GUI/Model/Domain/FromDomain.h"
+#include "GUI/Model/From/FromDomain.h"
 #include "GUI/Model/Group/PropertyItem.h"
 #include "GUI/Util/Error.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/Unit/GUI/TestLayerRoughnessItems.cpp b/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
index dc96694cee1b7239eaf48cb31e89495accc62bc6..2e866721d0fed3fbc6789e9bf98f8bd2fd5b295a 100644
--- a/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
+++ b/Tests/Unit/GUI/TestLayerRoughnessItems.cpp
@@ -1,5 +1,5 @@
-#include "GUI/Model/Domain/FromDomain.h"
-#include "GUI/Model/Domain/ToDomain.h"
+#include "GUI/Model/From/FromDomain.h"
+#include "GUI/Model/To/ToDomain.h"
 #include "GUI/Model/Sample/LayerRoughnessItems.h"
 #include "GUI/Model/Types/DoubleDescriptor.h"
 #include "Tests/GTestWrapper/google_test.h"
diff --git a/Tests/Unit/GUI/TestParaCrystalItems.cpp b/Tests/Unit/GUI/TestParaCrystalItems.cpp
index 37f3768219f48aa80b88acbfcc924f00f6ff4dd2..dba907dbfbac4f824459e6099fa7e59f224f490f 100644
--- a/Tests/Unit/GUI/TestParaCrystalItems.cpp
+++ b/Tests/Unit/GUI/TestParaCrystalItems.cpp
@@ -1,5 +1,5 @@
 #include "Base/Const/Units.h"
-#include "GUI/Model/Domain/FromDomain.h"
+#include "GUI/Model/From/FromDomain.h"
 #include "GUI/Model/Sample/FTDistributionItems.h"
 #include "GUI/Model/Sample/InterferenceItems.h"
 #include "GUI/Model/Sample/Lattice2DItems.h"
diff --git a/Tests/Unit/GUI/TestPropertyRepeater.cpp b/Tests/Unit/GUI/TestPropertyRepeater.cpp
index e23a8067db70890335e22c959be9d07aea6cab8b..2e643a6871ffbea51cf1339e81df8faf0f3941e7 100644
--- a/Tests/Unit/GUI/TestPropertyRepeater.cpp
+++ b/Tests/Unit/GUI/TestPropertyRepeater.cpp
@@ -1,7 +1,7 @@
 #include "GUI/Model/Data/AxesItems.h"
 #include "GUI/Model/Data/IntensityDataItem.h"
 #include "GUI/Model/Session/SessionModel.h"
-#include "GUI/View/Intensity/PropertyRepeater.h"
+#include "GUI/View/Compare/PropertyRepeater.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 namespace {
diff --git a/Wrap/Swig/libBornAgainCore.i b/Wrap/Swig/libBornAgainCore.i
index 44d1934ad846069c4bf6ea905b3b8f4ea9e736ae..1a154a0a98faac28da4a9a734b29dbff08e39c3c 100644
--- a/Wrap/Swig/libBornAgainCore.i
+++ b/Wrap/Swig/libBornAgainCore.i
@@ -68,6 +68,7 @@
 #include "Core/Residual/VarianceFunctions.h"
 #include "Core/Scan/AlphaScan.h"
 #include "Core/Scan/QzScan.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecularSimulation.h"
@@ -75,6 +76,9 @@
 #include "Fit/Minimizer/MinimizerResult.h"
 %}
 
+%newobject ScanResolution::scanRelativeResolution;
+%newobject ScanResolution::scanAbsoluteResolution;
+
 // The following goes verbatim from libBornAgainCore.i to libBornAgainCore_wrap.cxx.
 // Note that the order matters, as base classes must be included before derived classes.
 
@@ -100,6 +104,7 @@
 %include "Core/Scan/ISpecularScan.h"
 %include "Core/Scan/AlphaScan.h"
 %include "Core/Scan/QzScan.h"
+%include "Core/Scan/ScanResolution.h"
 
 %include "Core/Simulation/ISimulation.h"
 %include "Core/Simulation/ISimulation2D.h"
@@ -244,3 +249,32 @@ class ObserverCallbackWrapper(PyObserverCallback):
         return None
 %}
 };
+
+
+// fancy names for ScanResolution static functions
+%pythoncode %{
+    def ScanRelativeResolution(distribution, rel_dev):
+        """
+        Creates a scan resolution from the given distribution and
+        relative deviation values (that is, the ratios of standard
+        deviations and means).
+        :param distribution: bornagain.IRangedDistribution object
+        :param rel_dev: either single-valued or a numpy array.
+                        In the latter case should coinside in
+                        size with later used mean values array.
+        :return: bornagain.ScanResolution object
+        """
+        return ScanResolution_scanRelativeResolution(distribution, rel_dev)
+
+    def ScanAbsoluteResolution(distribution, std_dev):
+        """
+        Creates a scan resolution from the given distribution and
+        standard deviation values.
+        :param distribution: bornagain.IRangedDistribution object
+        :param std_dev: either single-valued or a numpy array.
+                        In the latter case should coinside in
+                        size with later used mean values array.
+        :return: bornagain.ScanResolution object
+        """
+        return ScanResolution_scanAbsoluteResolution(distribution, std_dev)
+%}
diff --git a/Wrap/Swig/libBornAgainDevice.i b/Wrap/Swig/libBornAgainDevice.i
index b27a4c001e7ce93425fe7e3f0c03d0e707ccc7bf..e161709740ba5e27c239a349f02c6aa6624903c4 100644
--- a/Wrap/Swig/libBornAgainDevice.i
+++ b/Wrap/Swig/libBornAgainDevice.i
@@ -55,7 +55,6 @@
 #include "Device/Mask/DetectorMask.h"
 #include "Device/Resolution/IDetectorResolution.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
-#include "Device/Resolution/ScanResolution.h"
 %}
 
 %import(module="libBornAgainFit") "Fit/Param/AttLimits.h"
@@ -68,9 +67,6 @@
 %include "fromParam.i"
 
 // ownership
-%newobject ScanResolution::scanRelativeResolution;
-%newobject ScanResolution::scanAbsoluteResolution;
-
 %newobject SimulationResult::histogram2d(Axes::Coords units_type = Axes::Coords::UNDEFINED) const;
 
 %newobject IntensityDataIOFactory::readOutputData(const std::string& file_name);
@@ -98,7 +94,6 @@
 %include "Device/Resolution/IDetectorResolution.h"
 %include "Device/Resolution/IResolutionFunction2D.h"
 %include "Device/Resolution/ResolutionFunction2DGaussian.h"
-%include "Device/Resolution/ScanResolution.h"
 
 %include "Device/Coord/Axes.h"
 
@@ -134,31 +129,3 @@
         return (*($self))[i];
     }
 };
-
-// fancy names for ScanResolution static functions
-%pythoncode %{
-    def ScanRelativeResolution(distribution, rel_dev):
-        """
-        Creates a scan resolution from the given distribution and
-        relative deviation values (that is, the ratios of standard
-        deviations and means).
-        :param distribution: bornagain.IRangedDistribution object
-        :param rel_dev: either single-valued or a numpy array.
-                        In the latter case should coinside in
-                        size with later used mean values array.
-        :return: bornagain.ScanResolution object
-        """
-        return ScanResolution_scanRelativeResolution(distribution, rel_dev)
-
-    def ScanAbsoluteResolution(distribution, std_dev):
-        """
-        Creates a scan resolution from the given distribution and
-        standard deviation values.
-        :param distribution: bornagain.IRangedDistribution object
-        :param std_dev: either single-valued or a numpy array.
-                        In the latter case should coinside in
-                        size with later used mean values array.
-        :return: bornagain.ScanResolution object
-        """
-        return ScanResolution_scanAbsoluteResolution(distribution, std_dev)
-%}
diff --git a/Wrap/Swig/libBornAgainFit.i b/Wrap/Swig/libBornAgainFit.i
index 67e5e781bfe925e25cd0ce16708c7ae19a215046..c432b59bc6be8cf2e02f5d50b1d3899743f89964 100644
--- a/Wrap/Swig/libBornAgainFit.i
+++ b/Wrap/Swig/libBornAgainFit.i
@@ -27,7 +27,6 @@
 %feature("director") PyCallback;         // used in extendFit.i
 
 %{
-#include "Fit/Kernel/FitOptions.h"
 #include "Fit/Kernel/Minimizer.h"
 #include "Fit/Kernel/MinimizerFactory.h"
 #include "Fit/Kernel/PyCallback.h"
@@ -44,7 +43,6 @@
 %include "Fit/Minimizer/IMinimizer.h"
 %include "Fit/Minimizer/MinimizerCatalog.h"
 %include "Fit/Minimizer/MinimizerResult.h"
-%include "Fit/Kernel/FitOptions.h"
 %include "Fit/Kernel/Minimizer.h"
 %include "Fit/Kernel/MinimizerFactory.h"
 %include "Fit/Kernel/PyCallback.h"
diff --git a/auto/Doc/man/bornagain.1 b/auto/Doc/man/bornagain.1
index 6e5f37b2b49f4ea90a66519d33643852767c7784..3a43708bef531db48ce991af8c1a9a5bb66b0865 100644
--- a/auto/Doc/man/bornagain.1
+++ b/auto/Doc/man/bornagain.1
@@ -133,7 +133,7 @@
 .\" ========================================================================
 .\"
 .IX Title "BORNAGAIN 1"
-.TH BORNAGAIN 1 "2021-03-23" "perl v5.32.1" "BornAgain manual"
+.TH BORNAGAIN 1 "2021-03-09" "perl v5.32.1" "BornAgain manual"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index b1640bf0f118d6adb83b82eede46bf2997a76f31..4ee31dc688df4955449215aebdea684ce2fb0436 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -75,7 +75,7 @@ Sets footprint correction factor.
 
 %feature("docstring")  AlphaScan::setWavelengthResolution "void AlphaScan::setWavelengthResolution(const ScanResolution &resolution)
 
-Sets wavelength resolution values via ScanResolution object. 
+Sets wavelength resolution values via  ScanResolution object. 
 ";
 
 %feature("docstring")  AlphaScan::setRelativeWavelengthResolution "void AlphaScan::setRelativeWavelengthResolution(const IRangedDistribution &distr, double rel_dev)
@@ -96,7 +96,7 @@ Sets wavelength resolution values via IRangedDistribution and values of standard
 
 %feature("docstring")  AlphaScan::setAngleResolution "void AlphaScan::setAngleResolution(const ScanResolution &resolution)
 
-Sets angle resolution values via ScanResolution object. 
+Sets angle resolution values via  ScanResolution object. 
 ";
 
 %feature("docstring")  AlphaScan::setRelativeAngularResolution "void AlphaScan::setRelativeAngularResolution(const IRangedDistribution &distr, double rel_dev)
@@ -1594,7 +1594,7 @@ Returns intensity vector corresponding to convolution of given simulation elemen
 
 %feature("docstring")  QzScan::setQResolution "void QzScan::setQResolution(const ScanResolution &resolution)
 
-Sets q resolution values via ScanResolution object. 
+Sets q resolution values via  ScanResolution object. 
 ";
 
 %feature("docstring")  QzScan::setRelativeQResolution "void QzScan::setRelativeQResolution(const IRangedDistribution &distr, double rel_dev)
@@ -1751,6 +1751,48 @@ C++ includes: SampleToPython.h
 ";
 
 
+// File: classScanResolution.xml
+%feature("docstring") ScanResolution "
+
+Container for reflectivity resolution data.
+
+C++ includes: ScanResolution.h
+";
+
+%feature("docstring")  ScanResolution::~ScanResolution "ScanResolution::~ScanResolution() override
+";
+
+%feature("docstring")  ScanResolution::clone "ScanResolution* ScanResolution::clone() const override=0
+";
+
+%feature("docstring")  ScanResolution::distribution "const IRangedDistribution* ScanResolution::distribution() const
+";
+
+%feature("docstring")  ScanResolution::nSamples "size_t ScanResolution::nSamples() const
+";
+
+%feature("docstring")  ScanResolution::generateSamples "virtual DistrOutput ScanResolution::generateSamples(double mean, size_t n_times) const =0
+";
+
+%feature("docstring")  ScanResolution::generateSamples "virtual DistrOutput ScanResolution::generateSamples(const std::vector< double > &mean) const =0
+";
+
+%feature("docstring")  ScanResolution::stdDevs "virtual std::vector<double> ScanResolution::stdDevs(double mean, size_t n_times) const =0
+";
+
+%feature("docstring")  ScanResolution::stdDevs "virtual std::vector<double> ScanResolution::stdDevs(const std::vector< double > &mean) const =0
+";
+
+%feature("docstring")  ScanResolution::empty "bool ScanResolution::empty() const
+";
+
+%feature("docstring")  ScanResolution::name "virtual std::string ScanResolution::name() const =0
+";
+
+%feature("docstring")  ScanResolution::delta "virtual double ScanResolution::delta() const =0
+";
+
+
 // File: classSimDataPair.xml
 %feature("docstring") SimDataPair "
 
@@ -1994,10 +2036,13 @@ C++ includes: VarianceFunctions.h
 // File: namespace_0d66.xml
 
 
-// File: namespace_0d71.xml
+// File: namespace_0d68.xml
+
+
+// File: namespace_0d73.xml
 
 
-// File: namespace_0d79.xml
+// File: namespace_0d81.xml
 
 
 // File: namespace_0d9.xml
@@ -2293,6 +2338,12 @@ Prints an axis.
 // File: QzScan_8h.xml
 
 
+// File: ScanResolution_8cpp.xml
+
+
+// File: ScanResolution_8h.xml
+
+
 // File: DepthProbeSimulation_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 3926b01483d983e7e25547f92d77b6fedbe8e713..69625d705d9f06a2a264e0684d07c57dc3bfa9a6 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -3276,10 +3276,10 @@ class AlphaScan(object):
 
     def setWavelengthResolution(self, resolution):
         r"""
-        setWavelengthResolution(AlphaScan self, ScanResolution const & resolution)
+        setWavelengthResolution(AlphaScan self, ScanResolution resolution)
         void AlphaScan::setWavelengthResolution(const ScanResolution &resolution)
 
-        Sets wavelength resolution values via ScanResolution object. 
+        Sets wavelength resolution values via  ScanResolution object. 
 
         """
         return _libBornAgainCore.AlphaScan_setWavelengthResolution(self, resolution)
@@ -3308,10 +3308,10 @@ class AlphaScan(object):
 
     def setAngleResolution(self, resolution):
         r"""
-        setAngleResolution(AlphaScan self, ScanResolution const & resolution)
+        setAngleResolution(AlphaScan self, ScanResolution resolution)
         void AlphaScan::setAngleResolution(const ScanResolution &resolution)
 
-        Sets angle resolution values via ScanResolution object. 
+        Sets angle resolution values via  ScanResolution object. 
 
         """
         return _libBornAgainCore.AlphaScan_setAngleResolution(self, resolution)
@@ -3377,7 +3377,7 @@ class QzScan(object):
 
     def resolution(self):
         r"""
-        resolution(QzScan self) -> ScanResolution const *
+        resolution(QzScan self) -> ScanResolution
         const ScanResolution* QzScan::resolution() const
 
         """
@@ -3385,10 +3385,10 @@ class QzScan(object):
 
     def setQResolution(self, resolution):
         r"""
-        setQResolution(QzScan self, ScanResolution const & resolution)
+        setQResolution(QzScan self, ScanResolution resolution)
         void QzScan::setQResolution(const ScanResolution &resolution)
 
-        Sets q resolution values via ScanResolution object. 
+        Sets q resolution values via  ScanResolution object. 
 
         """
         return _libBornAgainCore.QzScan_setQResolution(self, resolution)
@@ -3434,6 +3434,56 @@ class QzScan(object):
 # Register QzScan in _libBornAgainCore:
 _libBornAgainCore.QzScan_swigregister(QzScan)
 
+class ScanResolution(libBornAgainBase.ICloneable):
+    r"""
+
+
+    Container for reflectivity resolution data.
+
+    C++ includes: ScanResolution.h
+
+    """
+
+    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
+
+    def __init__(self, *args, **kwargs):
+        raise AttributeError("No constructor defined - class is abstract")
+    __repr__ = _swig_repr
+    __swig_destroy__ = _libBornAgainCore.delete_ScanResolution
+
+    @staticmethod
+    def scanRelativeResolution(*args):
+        r"""
+        scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
+        scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
+        """
+        return _libBornAgainCore.ScanResolution_scanRelativeResolution(*args)
+
+    @staticmethod
+    def scanAbsoluteResolution(*args):
+        r"""
+        scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
+        scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
+        """
+        return _libBornAgainCore.ScanResolution_scanAbsoluteResolution(*args)
+
+# Register ScanResolution in _libBornAgainCore:
+_libBornAgainCore.ScanResolution_swigregister(ScanResolution)
+
+def ScanResolution_scanRelativeResolution(*args):
+    r"""
+    ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
+    ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
+    """
+    return _libBornAgainCore.ScanResolution_scanRelativeResolution(*args)
+
+def ScanResolution_scanAbsoluteResolution(*args):
+    r"""
+    ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
+    ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
+    """
+    return _libBornAgainCore.ScanResolution_scanAbsoluteResolution(*args)
+
 class ISimulation(libBornAgainParam.INode):
     r"""
 
@@ -4672,3 +4722,29 @@ class ObserverCallbackWrapper(PyObserverCallback):
 
 
 
+def ScanRelativeResolution(distribution, rel_dev):
+    """
+    Creates a scan resolution from the given distribution and
+    relative deviation values (that is, the ratios of standard
+    deviations and means).
+    :param distribution: bornagain.IRangedDistribution object
+    :param rel_dev: either single-valued or a numpy array.
+                    In the latter case should coinside in
+                    size with later used mean values array.
+    :return: bornagain.ScanResolution object
+    """
+    return ScanResolution_scanRelativeResolution(distribution, rel_dev)
+
+def ScanAbsoluteResolution(distribution, std_dev):
+    """
+    Creates a scan resolution from the given distribution and
+    standard deviation values.
+    :param distribution: bornagain.IRangedDistribution object
+    :param std_dev: either single-valued or a numpy array.
+                    In the latter case should coinside in
+                    size with later used mean values array.
+    :return: bornagain.ScanResolution object
+    """
+    return ScanResolution_scanAbsoluteResolution(distribution, std_dev)
+
+
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index abf08cab7f18e1c37bdfcfefb700fbfdf99d5782..c96716f5e85d92e82419ec96158e3a92b979755c 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -6708,6 +6708,7 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Core/Residual/VarianceFunctions.h"
 #include "Core/Scan/AlphaScan.h"
 #include "Core/Scan/QzScan.h"
+#include "Core/Scan/ScanResolution.h"
 #include "Core/Simulation/DepthProbeSimulation.h"
 #include "Core/Simulation/GISASSimulation.h"
 #include "Core/Simulation/OffSpecularSimulation.h"
@@ -38713,6 +38714,265 @@ SWIGINTERN PyObject *QzScan_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *a
   return SWIG_Python_InitShadowInstance(args);
 }
 
+SWIGINTERN PyObject *_wrap_delete_ScanResolution(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ScanResolution *arg1 = (ScanResolution *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject *swig_obj[1] ;
+  
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ScanResolution, SWIG_POINTER_DISOWN |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ScanResolution" "', argument " "1"" of type '" "ScanResolution *""'"); 
+  }
+  arg1 = reinterpret_cast< ScanResolution * >(argp1);
+  delete arg1;
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  IRangedDistribution *arg1 = 0 ;
+  double arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  ScanResolution *result = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = (ScanResolution *)ScanResolution::scanRelativeResolution((IRangedDistribution const &)*arg1,arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  IRangedDistribution *arg1 = 0 ;
+  std::vector< double,std::allocator< double > > *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 = SWIG_OLDOBJ ;
+  ScanResolution *result = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
+  {
+    std::vector< double,std::allocator< double > > *ptr = (std::vector< double,std::allocator< double > > *)0;
+    res2 = swig::asptr(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
+    }
+    arg2 = ptr;
+  }
+  result = (ScanResolution *)ScanResolution::scanRelativeResolution((IRangedDistribution const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[3] = {
+    0
+  };
+  
+  if (!(argc = SWIG_Python_UnpackTuple(args, "ScanResolution_scanRelativeResolution", 0, 2, argv))) SWIG_fail;
+  --argc;
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_double(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        return _wrap_ScanResolution_scanRelativeResolution__SWIG_0(self, argc, argv);
+      }
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = swig::asptr(argv[1], (std::vector< double,std::allocator< double > >**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_ScanResolution_scanRelativeResolution__SWIG_1(self, argc, argv);
+      }
+    }
+  }
+  
+fail:
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ScanResolution_scanRelativeResolution'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    ScanResolution::scanRelativeResolution(IRangedDistribution const &,double)\n"
+    "    ScanResolution::scanRelativeResolution(IRangedDistribution const &,std::vector< double,std::allocator< double > > const &)\n");
+  return 0;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  IRangedDistribution *arg1 = 0 ;
+  double arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  ScanResolution *result = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = (ScanResolution *)ScanResolution::scanAbsoluteResolution((IRangedDistribution const &)*arg1,arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
+  PyObject *resultobj = 0;
+  IRangedDistribution *arg1 = 0 ;
+  std::vector< double,std::allocator< double > > *arg2 = 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  int res2 = SWIG_OLDOBJ ;
+  ScanResolution *result = 0 ;
+  
+  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
+  }
+  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
+  {
+    std::vector< double,std::allocator< double > > *ptr = (std::vector< double,std::allocator< double > > *)0;
+    res2 = swig::asptr(swig_obj[1], &ptr);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
+    }
+    if (!ptr) {
+      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
+    }
+    arg2 = ptr;
+  }
+  result = (ScanResolution *)ScanResolution::scanAbsoluteResolution((IRangedDistribution const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return resultobj;
+fail:
+  if (SWIG_IsNewObj(res2)) delete arg2;
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution(PyObject *self, PyObject *args) {
+  Py_ssize_t argc;
+  PyObject *argv[3] = {
+    0
+  };
+  
+  if (!(argc = SWIG_Python_UnpackTuple(args, "ScanResolution_scanAbsoluteResolution", 0, 2, argv))) SWIG_fail;
+  --argc;
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      {
+        int res = SWIG_AsVal_double(argv[1], NULL);
+        _v = SWIG_CheckState(res);
+      }
+      if (_v) {
+        return _wrap_ScanResolution_scanAbsoluteResolution__SWIG_0(self, argc, argv);
+      }
+    }
+  }
+  if (argc == 2) {
+    int _v;
+    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
+    _v = SWIG_CheckState(res);
+    if (_v) {
+      int res = swig::asptr(argv[1], (std::vector< double,std::allocator< double > >**)(0));
+      _v = SWIG_CheckState(res);
+      if (_v) {
+        return _wrap_ScanResolution_scanAbsoluteResolution__SWIG_1(self, argc, argv);
+      }
+    }
+  }
+  
+fail:
+  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ScanResolution_scanAbsoluteResolution'.\n"
+    "  Possible C/C++ prototypes are:\n"
+    "    ScanResolution::scanAbsoluteResolution(IRangedDistribution const &,double)\n"
+    "    ScanResolution::scanAbsoluteResolution(IRangedDistribution const &,std::vector< double,std::allocator< double > > const &)\n");
+  return 0;
+}
+
+
+SWIGINTERN PyObject *ScanResolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *obj;
+  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
+  SWIG_TypeNewClientData(SWIGTYPE_p_ScanResolution, SWIG_NewClientData(obj));
+  return SWIG_Py_Void();
+}
+
 SWIGINTERN PyObject *_wrap_delete_ISimulation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ISimulation *arg1 = (ISimulation *) 0 ;
@@ -44197,10 +44457,10 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "AlphaScan_setWavelengthResolution", _wrap_AlphaScan_setWavelengthResolution, METH_VARARGS, "\n"
-		"AlphaScan_setWavelengthResolution(AlphaScan self, ScanResolution const & resolution)\n"
+		"AlphaScan_setWavelengthResolution(AlphaScan self, ScanResolution resolution)\n"
 		"void AlphaScan::setWavelengthResolution(const ScanResolution &resolution)\n"
 		"\n"
-		"Sets wavelength resolution values via ScanResolution object. \n"
+		"Sets wavelength resolution values via  ScanResolution object. \n"
 		"\n"
 		""},
 	 { "AlphaScan_setRelativeWavelengthResolution", _wrap_AlphaScan_setRelativeWavelengthResolution, METH_VARARGS, "\n"
@@ -44220,10 +44480,10 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "AlphaScan_setAngleResolution", _wrap_AlphaScan_setAngleResolution, METH_VARARGS, "\n"
-		"AlphaScan_setAngleResolution(AlphaScan self, ScanResolution const & resolution)\n"
+		"AlphaScan_setAngleResolution(AlphaScan self, ScanResolution resolution)\n"
 		"void AlphaScan::setAngleResolution(const ScanResolution &resolution)\n"
 		"\n"
-		"Sets angle resolution values via ScanResolution object. \n"
+		"Sets angle resolution values via  ScanResolution object. \n"
 		"\n"
 		""},
 	 { "AlphaScan_setRelativeAngularResolution", _wrap_AlphaScan_setRelativeAngularResolution, METH_VARARGS, "\n"
@@ -44264,15 +44524,15 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { "QzScan_resolution", _wrap_QzScan_resolution, METH_O, "\n"
-		"QzScan_resolution(QzScan self) -> ScanResolution const *\n"
+		"QzScan_resolution(QzScan self) -> ScanResolution\n"
 		"const ScanResolution* QzScan::resolution() const\n"
 		"\n"
 		""},
 	 { "QzScan_setQResolution", _wrap_QzScan_setQResolution, METH_VARARGS, "\n"
-		"QzScan_setQResolution(QzScan self, ScanResolution const & resolution)\n"
+		"QzScan_setQResolution(QzScan self, ScanResolution resolution)\n"
 		"void QzScan::setQResolution(const ScanResolution &resolution)\n"
 		"\n"
-		"Sets q resolution values via ScanResolution object. \n"
+		"Sets q resolution values via  ScanResolution object. \n"
 		"\n"
 		""},
 	 { "QzScan_setRelativeQResolution", _wrap_QzScan_setRelativeQResolution, METH_VARARGS, "\n"
@@ -44303,6 +44563,20 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "QzScan_swigregister", QzScan_swigregister, METH_O, NULL},
 	 { "QzScan_swiginit", QzScan_swiginit, METH_VARARGS, NULL},
+	 { "delete_ScanResolution", _wrap_delete_ScanResolution, METH_O, "\n"
+		"delete_ScanResolution(ScanResolution self)\n"
+		"ScanResolution::~ScanResolution() override\n"
+		"\n"
+		""},
+	 { "ScanResolution_scanRelativeResolution", _wrap_ScanResolution_scanRelativeResolution, METH_VARARGS, "\n"
+		"ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution\n"
+		"ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution\n"
+		""},
+	 { "ScanResolution_scanAbsoluteResolution", _wrap_ScanResolution_scanAbsoluteResolution, METH_VARARGS, "\n"
+		"ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution\n"
+		"ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution\n"
+		""},
+	 { "ScanResolution_swigregister", ScanResolution_swigregister, METH_O, NULL},
 	 { "delete_ISimulation", _wrap_delete_ISimulation, METH_O, "\n"
 		"delete_ISimulation(ISimulation self)\n"
 		"ISimulation::~ISimulation()\n"
@@ -45093,6 +45367,9 @@ static void *_p_GISASSimulationTo_p_ISimulation2D(void *x, int *SWIGUNUSEDPARM(n
 static void *_p_OffSpecularSimulationTo_p_ISimulation2D(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ISimulation2D *)  ((OffSpecularSimulation *) x));
 }
+static void *_p_ScanResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
+    return (void *)((ICloneable *)  ((ScanResolution *) x));
+}
 static void *_p_IChiSquaredModuleTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IChiSquaredModule *) x));
 }
@@ -45355,7 +45632,7 @@ static swig_cast_info _swigc__p_IChiSquaredModule[] = {  {&_swigt__p_IChiSquared
 static swig_cast_info _swigc__p_IFormFactor[] = {{&_swigt__p_IFormFactor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ISampleNode[] = {{&_swigt__p_ISampleNode, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IBornFF[] = {{&_swigt__p_IBornFF, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_QzScan, _p_QzScanTo_p_ICloneable, 0, 0},  {&_swigt__p_AlphaScan, _p_AlphaScanTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IChiSquaredModule, _p_IChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_ChiSquaredModule, _p_ChiSquaredModuleTo_p_ICloneable, 0, 0},  {&_swigt__p_QzScan, _p_QzScanTo_p_ICloneable, 0, 0},  {&_swigt__p_AlphaScan, _p_AlphaScanTo_p_ICloneable, 0, 0},  {&_swigt__p_IFormFactor, _p_IFormFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IBackground, _p_IBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ConstantBackground, _p_ConstantBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_PoissonNoiseBackground, _p_PoissonNoiseBackgroundTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_ISampleNode, _p_ISampleNodeTo_p_ICloneable, 0, 0},  {&_swigt__p_IBornFF, _p_IBornFFTo_p_ICloneable, 0, 0},  {&_swigt__p_ISpecularScan, _p_ISpecularScanTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector[] = {  {&_swigt__p_IDetector, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDistribution1D[] = {  {&_swigt__p_IDistribution1D, 0, 0, 0},{0, 0, 0, 0}};
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 30d4a3c961ecb93ddfac06f416e1676153582113..17d72d219dab775d0cc1e31128430b2e8ae3aa82 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -3702,56 +3702,6 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
 # Register ResolutionFunction2DGaussian in _libBornAgainDevice:
 _libBornAgainDevice.ResolutionFunction2DGaussian_swigregister(ResolutionFunction2DGaussian)
 
-class ScanResolution(libBornAgainBase.ICloneable):
-    r"""
-
-
-    Container for reflectivity resolution data.
-
-    C++ includes: ScanResolution.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-
-    def __init__(self, *args, **kwargs):
-        raise AttributeError("No constructor defined - class is abstract")
-    __repr__ = _swig_repr
-    __swig_destroy__ = _libBornAgainDevice.delete_ScanResolution
-
-    @staticmethod
-    def scanRelativeResolution(*args):
-        r"""
-        scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
-        scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
-        """
-        return _libBornAgainDevice.ScanResolution_scanRelativeResolution(*args)
-
-    @staticmethod
-    def scanAbsoluteResolution(*args):
-        r"""
-        scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
-        scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
-        """
-        return _libBornAgainDevice.ScanResolution_scanAbsoluteResolution(*args)
-
-# Register ScanResolution in _libBornAgainDevice:
-_libBornAgainDevice.ScanResolution_swigregister(ScanResolution)
-
-def ScanResolution_scanRelativeResolution(*args):
-    r"""
-    ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
-    ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
-    """
-    return _libBornAgainDevice.ScanResolution_scanRelativeResolution(*args)
-
-def ScanResolution_scanAbsoluteResolution(*args):
-    r"""
-    ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution
-    ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution
-    """
-    return _libBornAgainDevice.ScanResolution_scanAbsoluteResolution(*args)
-
 class Axes(object):
     r"""
 
@@ -5758,29 +5708,3 @@ class SimulationResult(object):
 _libBornAgainDevice.SimulationResult_swigregister(SimulationResult)
 
 
-def ScanRelativeResolution(distribution, rel_dev):
-    """
-    Creates a scan resolution from the given distribution and
-    relative deviation values (that is, the ratios of standard
-    deviations and means).
-    :param distribution: bornagain.IRangedDistribution object
-    :param rel_dev: either single-valued or a numpy array.
-                    In the latter case should coinside in
-                    size with later used mean values array.
-    :return: bornagain.ScanResolution object
-    """
-    return ScanResolution_scanRelativeResolution(distribution, rel_dev)
-
-def ScanAbsoluteResolution(distribution, std_dev):
-    """
-    Creates a scan resolution from the given distribution and
-    standard deviation values.
-    :param distribution: bornagain.IRangedDistribution object
-    :param std_dev: either single-valued or a numpy array.
-                    In the latter case should coinside in
-                    size with later used mean values array.
-    :return: bornagain.ScanResolution object
-    """
-    return ScanResolution_scanAbsoluteResolution(distribution, std_dev)
-
-
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index b8356c617f670a83fd854296ecbc3798a1337601..6a63533e879098bfd581c325d375dd47bc88573a 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -3125,90 +3125,88 @@ namespace Swig {
 #define SWIGTYPE_p_INode swig_types[25]
 #define SWIGTYPE_p_INodeVisitor swig_types[26]
 #define SWIGTYPE_p_IPixel swig_types[27]
-#define SWIGTYPE_p_IRangedDistribution swig_types[28]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[29]
-#define SWIGTYPE_p_IShape2D swig_types[30]
-#define SWIGTYPE_p_Instrument swig_types[31]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[32]
-#define SWIGTYPE_p_Line swig_types[33]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[34]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[35]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[36]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[37]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[38]
-#define SWIGTYPE_p_PolFilter swig_types[39]
-#define SWIGTYPE_p_PolMatrices swig_types[40]
-#define SWIGTYPE_p_Polygon swig_types[41]
-#define SWIGTYPE_p_PolygonPrivate swig_types[42]
-#define SWIGTYPE_p_RealLimits swig_types[43]
-#define SWIGTYPE_p_Rectangle swig_types[44]
-#define SWIGTYPE_p_RectangularDetector swig_types[45]
-#define SWIGTYPE_p_RectangularPixel swig_types[46]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[47]
-#define SWIGTYPE_p_ScanResolution swig_types[48]
-#define SWIGTYPE_p_SimulationResult swig_types[49]
-#define SWIGTYPE_p_SphericalDetector swig_types[50]
-#define SWIGTYPE_p_VerticalLine swig_types[51]
-#define SWIGTYPE_p_allocator_type swig_types[52]
-#define SWIGTYPE_p_bool swig_types[53]
-#define SWIGTYPE_p_char swig_types[54]
-#define SWIGTYPE_p_const_iterator swig_types[55]
-#define SWIGTYPE_p_corr_matrix_t swig_types[56]
-#define SWIGTYPE_p_difference_type swig_types[57]
-#define SWIGTYPE_p_double swig_types[58]
-#define SWIGTYPE_p_first_type swig_types[59]
-#define SWIGTYPE_p_int swig_types[60]
-#define SWIGTYPE_p_iterator swig_types[61]
-#define SWIGTYPE_p_key_type swig_types[62]
-#define SWIGTYPE_p_long_long swig_types[63]
-#define SWIGTYPE_p_mapped_type swig_types[64]
-#define SWIGTYPE_p_p_ICoordSystem swig_types[65]
-#define SWIGTYPE_p_p_PyObject swig_types[66]
-#define SWIGTYPE_p_parameters_t swig_types[67]
-#define SWIGTYPE_p_second_type swig_types[68]
-#define SWIGTYPE_p_short swig_types[69]
-#define SWIGTYPE_p_signed_char swig_types[70]
-#define SWIGTYPE_p_size_type swig_types[71]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[72]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[73]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[74]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[75]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[76]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[77]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[78]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[79]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[80]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[81]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[82]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[83]
-#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[84]
-#define SWIGTYPE_p_std__invalid_argument swig_types[85]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[86]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[87]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[88]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[89]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[90]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[91]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[92]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[93]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[94]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[95]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[96]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[97]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[98]
-#define SWIGTYPE_p_std__vectorT_std__unique_ptrT_DiffuseElement_t_std__allocatorT_std__unique_ptrT_DiffuseElement_t_t_t swig_types[99]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[100]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[101]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[102]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[103]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[104]
-#define SWIGTYPE_p_unsigned_char swig_types[105]
-#define SWIGTYPE_p_unsigned_int swig_types[106]
-#define SWIGTYPE_p_unsigned_long_long swig_types[107]
-#define SWIGTYPE_p_unsigned_short swig_types[108]
-#define SWIGTYPE_p_value_type swig_types[109]
-static swig_type_info *swig_types[111];
-static swig_module_info swig_module = {swig_types, 110, 0, 0, 0, 0};
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[28]
+#define SWIGTYPE_p_IShape2D swig_types[29]
+#define SWIGTYPE_p_Instrument swig_types[30]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[31]
+#define SWIGTYPE_p_Line swig_types[32]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[33]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[34]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[35]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[36]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[37]
+#define SWIGTYPE_p_PolFilter swig_types[38]
+#define SWIGTYPE_p_PolMatrices swig_types[39]
+#define SWIGTYPE_p_Polygon swig_types[40]
+#define SWIGTYPE_p_PolygonPrivate swig_types[41]
+#define SWIGTYPE_p_RealLimits swig_types[42]
+#define SWIGTYPE_p_Rectangle swig_types[43]
+#define SWIGTYPE_p_RectangularDetector swig_types[44]
+#define SWIGTYPE_p_RectangularPixel swig_types[45]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[46]
+#define SWIGTYPE_p_SimulationResult swig_types[47]
+#define SWIGTYPE_p_SphericalDetector swig_types[48]
+#define SWIGTYPE_p_VerticalLine swig_types[49]
+#define SWIGTYPE_p_allocator_type swig_types[50]
+#define SWIGTYPE_p_bool swig_types[51]
+#define SWIGTYPE_p_char swig_types[52]
+#define SWIGTYPE_p_const_iterator swig_types[53]
+#define SWIGTYPE_p_corr_matrix_t swig_types[54]
+#define SWIGTYPE_p_difference_type swig_types[55]
+#define SWIGTYPE_p_double swig_types[56]
+#define SWIGTYPE_p_first_type swig_types[57]
+#define SWIGTYPE_p_int swig_types[58]
+#define SWIGTYPE_p_iterator swig_types[59]
+#define SWIGTYPE_p_key_type swig_types[60]
+#define SWIGTYPE_p_long_long swig_types[61]
+#define SWIGTYPE_p_mapped_type swig_types[62]
+#define SWIGTYPE_p_p_ICoordSystem swig_types[63]
+#define SWIGTYPE_p_p_PyObject swig_types[64]
+#define SWIGTYPE_p_parameters_t swig_types[65]
+#define SWIGTYPE_p_second_type swig_types[66]
+#define SWIGTYPE_p_short swig_types[67]
+#define SWIGTYPE_p_signed_char swig_types[68]
+#define SWIGTYPE_p_size_type swig_types[69]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[70]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[71]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[72]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[73]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[74]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[75]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[76]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[77]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[78]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[79]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[80]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[81]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[82]
+#define SWIGTYPE_p_std__invalid_argument swig_types[83]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[84]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[85]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[86]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[87]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[88]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[89]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[90]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[91]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[92]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[93]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[94]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[95]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[96]
+#define SWIGTYPE_p_std__vectorT_std__unique_ptrT_DiffuseElement_t_std__allocatorT_std__unique_ptrT_DiffuseElement_t_t_t swig_types[97]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[98]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[99]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[100]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[101]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[102]
+#define SWIGTYPE_p_unsigned_char swig_types[103]
+#define SWIGTYPE_p_unsigned_int swig_types[104]
+#define SWIGTYPE_p_unsigned_long_long swig_types[105]
+#define SWIGTYPE_p_unsigned_short swig_types[106]
+#define SWIGTYPE_p_value_type swig_types[107]
+static swig_type_info *swig_types[109];
+static swig_module_info swig_module = {swig_types, 108, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -6722,7 +6720,6 @@ SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_
 #include "Device/Mask/DetectorMask.h"
 #include "Device/Resolution/IDetectorResolution.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
-#include "Device/Resolution/ScanResolution.h"
 
 
   namespace swig {
@@ -34989,265 +34986,6 @@ SWIGINTERN PyObject *ResolutionFunction2DGaussian_swiginit(PyObject *SWIGUNUSEDP
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_delete_ScanResolution(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  ScanResolution *arg1 = (ScanResolution *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ScanResolution, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_ScanResolution" "', argument " "1"" of type '" "ScanResolution *""'"); 
-  }
-  arg1 = reinterpret_cast< ScanResolution * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  IRangedDistribution *arg1 = 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  ScanResolution *result = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  if (!argp1) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  result = (ScanResolution *)ScanResolution::scanRelativeResolution((IRangedDistribution const &)*arg1,arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  IRangedDistribution *arg1 = 0 ;
-  std::vector< double,std::allocator< double > > *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int res2 = SWIG_OLDOBJ ;
-  ScanResolution *result = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  if (!argp1) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
-  {
-    std::vector< double,std::allocator< double > > *ptr = (std::vector< double,std::allocator< double > > *)0;
-    res2 = swig::asptr(swig_obj[1], &ptr);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
-    }
-    if (!ptr) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanRelativeResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
-    }
-    arg2 = ptr;
-  }
-  result = (ScanResolution *)ScanResolution::scanRelativeResolution((IRangedDistribution const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanRelativeResolution(PyObject *self, PyObject *args) {
-  Py_ssize_t argc;
-  PyObject *argv[3] = {
-    0
-  };
-  
-  if (!(argc = SWIG_Python_UnpackTuple(args, "ScanResolution_scanRelativeResolution", 0, 2, argv))) SWIG_fail;
-  --argc;
-  if (argc == 2) {
-    int _v;
-    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      {
-        int res = SWIG_AsVal_double(argv[1], NULL);
-        _v = SWIG_CheckState(res);
-      }
-      if (_v) {
-        return _wrap_ScanResolution_scanRelativeResolution__SWIG_0(self, argc, argv);
-      }
-    }
-  }
-  if (argc == 2) {
-    int _v;
-    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      int res = swig::asptr(argv[1], (std::vector< double,std::allocator< double > >**)(0));
-      _v = SWIG_CheckState(res);
-      if (_v) {
-        return _wrap_ScanResolution_scanRelativeResolution__SWIG_1(self, argc, argv);
-      }
-    }
-  }
-  
-fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ScanResolution_scanRelativeResolution'.\n"
-    "  Possible C/C++ prototypes are:\n"
-    "    ScanResolution::scanRelativeResolution(IRangedDistribution const &,double)\n"
-    "    ScanResolution::scanRelativeResolution(IRangedDistribution const &,std::vector< double,std::allocator< double > > const &)\n");
-  return 0;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution__SWIG_0(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  IRangedDistribution *arg1 = 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  ScanResolution *result = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  if (!argp1) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  result = (ScanResolution *)ScanResolution::scanAbsoluteResolution((IRangedDistribution const &)*arg1,arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution__SWIG_1(PyObject *SWIGUNUSEDPARM(self), Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  IRangedDistribution *arg1 = 0 ;
-  std::vector< double,std::allocator< double > > *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int res2 = SWIG_OLDOBJ ;
-  ScanResolution *result = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1, SWIGTYPE_p_IRangedDistribution,  0  | 0);
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  if (!argp1) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "1"" of type '" "IRangedDistribution const &""'"); 
-  }
-  arg1 = reinterpret_cast< IRangedDistribution * >(argp1);
-  {
-    std::vector< double,std::allocator< double > > *ptr = (std::vector< double,std::allocator< double > > *)0;
-    res2 = swig::asptr(swig_obj[1], &ptr);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
-    }
-    if (!ptr) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "ScanResolution_scanAbsoluteResolution" "', argument " "2"" of type '" "std::vector< double,std::allocator< double > > const &""'"); 
-    }
-    arg2 = ptr;
-  }
-  result = (ScanResolution *)ScanResolution::scanAbsoluteResolution((IRangedDistribution const &)*arg1,(std::vector< double,std::allocator< double > > const &)*arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ScanResolution, SWIG_POINTER_OWN |  0 );
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return resultobj;
-fail:
-  if (SWIG_IsNewObj(res2)) delete arg2;
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ScanResolution_scanAbsoluteResolution(PyObject *self, PyObject *args) {
-  Py_ssize_t argc;
-  PyObject *argv[3] = {
-    0
-  };
-  
-  if (!(argc = SWIG_Python_UnpackTuple(args, "ScanResolution_scanAbsoluteResolution", 0, 2, argv))) SWIG_fail;
-  --argc;
-  if (argc == 2) {
-    int _v;
-    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      {
-        int res = SWIG_AsVal_double(argv[1], NULL);
-        _v = SWIG_CheckState(res);
-      }
-      if (_v) {
-        return _wrap_ScanResolution_scanAbsoluteResolution__SWIG_0(self, argc, argv);
-      }
-    }
-  }
-  if (argc == 2) {
-    int _v;
-    int res = SWIG_ConvertPtr(argv[0], 0, SWIGTYPE_p_IRangedDistribution, SWIG_POINTER_NO_NULL | 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      int res = swig::asptr(argv[1], (std::vector< double,std::allocator< double > >**)(0));
-      _v = SWIG_CheckState(res);
-      if (_v) {
-        return _wrap_ScanResolution_scanAbsoluteResolution__SWIG_1(self, argc, argv);
-      }
-    }
-  }
-  
-fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'ScanResolution_scanAbsoluteResolution'.\n"
-    "  Possible C/C++ prototypes are:\n"
-    "    ScanResolution::scanAbsoluteResolution(IRangedDistribution const &,double)\n"
-    "    ScanResolution::scanAbsoluteResolution(IRangedDistribution const &,std::vector< double,std::allocator< double > > const &)\n");
-  return 0;
-}
-
-
-SWIGINTERN PyObject *ScanResolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_ScanResolution, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
 SWIGINTERN PyObject *_wrap_new_Axes(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Axes *result = 0 ;
@@ -46028,20 +45766,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_ResolutionFunction2DGaussian", _wrap_delete_ResolutionFunction2DGaussian, METH_O, "delete_ResolutionFunction2DGaussian(ResolutionFunction2DGaussian self)"},
 	 { "ResolutionFunction2DGaussian_swigregister", ResolutionFunction2DGaussian_swigregister, METH_O, NULL},
 	 { "ResolutionFunction2DGaussian_swiginit", ResolutionFunction2DGaussian_swiginit, METH_VARARGS, NULL},
-	 { "delete_ScanResolution", _wrap_delete_ScanResolution, METH_O, "\n"
-		"delete_ScanResolution(ScanResolution self)\n"
-		"ScanResolution::~ScanResolution() override\n"
-		"\n"
-		""},
-	 { "ScanResolution_scanRelativeResolution", _wrap_ScanResolution_scanRelativeResolution, METH_VARARGS, "\n"
-		"ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution\n"
-		"ScanResolution_scanRelativeResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution\n"
-		""},
-	 { "ScanResolution_scanAbsoluteResolution", _wrap_ScanResolution_scanAbsoluteResolution, METH_VARARGS, "\n"
-		"ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, double stddev) -> ScanResolution\n"
-		"ScanResolution_scanAbsoluteResolution(IRangedDistribution const & distr, vdouble1d_t stddevs) -> ScanResolution\n"
-		""},
-	 { "ScanResolution_swigregister", ScanResolution_swigregister, METH_O, NULL},
 	 { "new_Axes", _wrap_new_Axes, METH_NOARGS, "\n"
 		"new_Axes() -> Axes\n"
 		"\n"
@@ -47344,9 +47068,6 @@ static void *_p_ResolutionFunction2DGaussianTo_p_IResolutionFunction2D(void *x,
 static void *_p_FootprintGaussTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *) (IFootprintFactor *) ((FootprintGauss *) x));
 }
-static void *_p_ScanResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
-    return (void *)((ICloneable *)  ((ScanResolution *) x));
-}
 static void *_p_IDetectorResolutionTo_p_ICloneable(void *x, int *SWIGUNUSEDPARM(newmemory)) {
     return (void *)((ICloneable *)  ((IDetectorResolution *) x));
 }
@@ -47423,7 +47144,6 @@ static swig_type_info _swigt__p_IHistogram = {"_p_IHistogram", "IHistogram *", 0
 static swig_type_info _swigt__p_INode = {"_p_INode", "INode *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_INodeVisitor = {"_p_INodeVisitor", "INodeVisitor *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IPixel = {"_p_IPixel", "IPixel *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_IRangedDistribution = {"_p_IRangedDistribution", "IRangedDistribution *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IResolutionFunction2D = {"_p_IResolutionFunction2D", "IResolutionFunction2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IShape2D = {"_p_IShape2D", "IShape2D *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Instrument = {"_p_Instrument", "Instrument *", 0, 0, (void*)0, 0};
@@ -47443,7 +47163,6 @@ static swig_type_info _swigt__p_Rectangle = {"_p_Rectangle", "Rectangle *", 0, 0
 static swig_type_info _swigt__p_RectangularDetector = {"_p_RectangularDetector", "RectangularDetector *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RectangularPixel = {"_p_RectangularPixel", "RectangularPixel *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ResolutionFunction2DGaussian = {"_p_ResolutionFunction2DGaussian", "ResolutionFunction2DGaussian *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_ScanResolution = {"_p_ScanResolution", "ScanResolution *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SimulationResult = {"_p_SimulationResult", "SimulationResult *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SphericalDetector = {"_p_SphericalDetector", "SphericalDetector *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_VerticalLine = {"_p_VerticalLine", "VerticalLine *", 0, 0, (void*)0, 0};
@@ -47535,7 +47254,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_INode,
   &_swigt__p_INodeVisitor,
   &_swigt__p_IPixel,
-  &_swigt__p_IRangedDistribution,
   &_swigt__p_IResolutionFunction2D,
   &_swigt__p_IShape2D,
   &_swigt__p_Instrument,
@@ -47555,7 +47273,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_RectangularDetector,
   &_swigt__p_RectangularPixel,
   &_swigt__p_ResolutionFunction2DGaussian,
-  &_swigt__p_ScanResolution,
   &_swigt__p_SimulationResult,
   &_swigt__p_SphericalDetector,
   &_swigt__p_VerticalLine,
@@ -47637,7 +47354,7 @@ static swig_cast_info _swigc__p_Histogram1D[] = {  {&_swigt__p_Histogram1D, 0, 0
 static swig_cast_info _swigc__p_Histogram2D[] = {  {&_swigt__p_Histogram2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_HorizontalLine[] = {  {&_swigt__p_HorizontalLine, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IAxis[] = {  {&_swigt__p_IAxis, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_ScanResolution, _p_ScanResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_ICloneable[] = {  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_ICloneable, 0, 0},  {&_swigt__p_ICloneable, 0, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_ICloneable, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_ICloneable, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_ICloneable, 0, 0},  {&_swigt__p_IShape2D, _p_IShape2DTo_p_ICloneable, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_ICloneable, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_ICloneable, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_ICloneable, 0, 0},  {&_swigt__p_Polygon, _p_PolygonTo_p_ICloneable, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_ICloneable, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_ICloneable, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ICoordSystem[] = {  {&_swigt__p_ICoordSystem, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector[] = {  {&_swigt__p_IDetector, 0, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_IDetector, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IDetector2D[] = {  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_IDetector2D, 0, 0},  {&_swigt__p_IDetector2D, 0, 0, 0},{0, 0, 0, 0}};
@@ -47647,7 +47364,6 @@ static swig_cast_info _swigc__p_IHistogram[] = {  {&_swigt__p_IHistogram, 0, 0,
 static swig_cast_info _swigc__p_INode[] = {  {&_swigt__p_INode, 0, 0, 0},  {&_swigt__p_FootprintSquare, _p_FootprintSquareTo_p_INode, 0, 0},  {&_swigt__p_IDetectorResolution, _p_IDetectorResolutionTo_p_INode, 0, 0},  {&_swigt__p_Instrument, _p_InstrumentTo_p_INode, 0, 0},  {&_swigt__p_IFootprintFactor, _p_IFootprintFactorTo_p_INode, 0, 0},  {&_swigt__p_Beam, _p_BeamTo_p_INode, 0, 0},  {&_swigt__p_IResolutionFunction2D, _p_IResolutionFunction2DTo_p_INode, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_INode, 0, 0},  {&_swigt__p_IDetector, _p_IDetectorTo_p_INode, 0, 0},  {&_swigt__p_RectangularDetector, _p_RectangularDetectorTo_p_INode, 0, 0},  {&_swigt__p_SphericalDetector, _p_SphericalDetectorTo_p_INode, 0, 0},  {&_swigt__p_FootprintGauss, _p_FootprintGaussTo_p_INode, 0, 0},  {&_swigt__p_IDetector2D, _p_IDetector2DTo_p_INode, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_INodeVisitor[] = {  {&_swigt__p_INodeVisitor, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IPixel[] = {  {&_swigt__p_IPixel, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_IRangedDistribution[] = {  {&_swigt__p_IRangedDistribution, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IResolutionFunction2D[] = {  {&_swigt__p_IResolutionFunction2D, 0, 0, 0},  {&_swigt__p_ResolutionFunction2DGaussian, _p_ResolutionFunction2DGaussianTo_p_IResolutionFunction2D, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IShape2D[] = {  {&_swigt__p_Polygon, _p_PolygonTo_p_IShape2D, 0, 0},  {&_swigt__p_Line, _p_LineTo_p_IShape2D, 0, 0},  {&_swigt__p_VerticalLine, _p_VerticalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Ellipse, _p_EllipseTo_p_IShape2D, 0, 0},  {&_swigt__p_HorizontalLine, _p_HorizontalLineTo_p_IShape2D, 0, 0},  {&_swigt__p_Rectangle, _p_RectangleTo_p_IShape2D, 0, 0},  {&_swigt__p_IShape2D, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Instrument[] = {  {&_swigt__p_Instrument, 0, 0, 0},{0, 0, 0, 0}};
@@ -47667,7 +47383,6 @@ static swig_cast_info _swigc__p_Rectangle[] = {  {&_swigt__p_Rectangle, 0, 0, 0}
 static swig_cast_info _swigc__p_RectangularDetector[] = {  {&_swigt__p_RectangularDetector, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RectangularPixel[] = {  {&_swigt__p_RectangularPixel, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ResolutionFunction2DGaussian[] = {  {&_swigt__p_ResolutionFunction2DGaussian, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ScanResolution[] = {  {&_swigt__p_ScanResolution, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SimulationResult[] = {  {&_swigt__p_SimulationResult, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SphericalDetector[] = {  {&_swigt__p_SphericalDetector, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_VerticalLine[] = {  {&_swigt__p_VerticalLine, 0, 0, 0},{0, 0, 0, 0}};
@@ -47759,7 +47474,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_INode,
   _swigc__p_INodeVisitor,
   _swigc__p_IPixel,
-  _swigc__p_IRangedDistribution,
   _swigc__p_IResolutionFunction2D,
   _swigc__p_IShape2D,
   _swigc__p_Instrument,
@@ -47779,7 +47493,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_RectangularDetector,
   _swigc__p_RectangularPixel,
   _swigc__p_ResolutionFunction2DGaussian,
-  _swigc__p_ScanResolution,
   _swigc__p_SimulationResult,
   _swigc__p_SphericalDetector,
   _swigc__p_VerticalLine,
diff --git a/auto/Wrap/libBornAgainFit.py b/auto/Wrap/libBornAgainFit.py
index 5eef8f76891c2ae2b8e7298c977abfb75da48299..7916d64f2673e315d62e2094e2b5f53d8cca06e8 100644
--- a/auto/Wrap/libBornAgainFit.py
+++ b/auto/Wrap/libBornAgainFit.py
@@ -2644,63 +2644,6 @@ class MinimizerResult(object):
 # Register MinimizerResult in _libBornAgainFit:
 _libBornAgainFit.MinimizerResult_swigregister(MinimizerResult)
 
-class FitOptions(object):
-    r"""
-
-
-    General fitting options.
-
-    C++ includes: FitOptions.h
-
-    """
-
-    thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
-    __repr__ = _swig_repr
-
-    def __init__(self):
-        r"""
-        __init__(FitOptions self) -> FitOptions
-        FitOptions::FitOptions()
-
-        """
-        _libBornAgainFit.FitOptions_swiginit(self, _libBornAgainFit.new_FitOptions())
-
-    def derivEpsilon(self):
-        r"""
-        derivEpsilon(FitOptions self) -> double
-        double FitOptions::derivEpsilon() const
-
-        """
-        return _libBornAgainFit.FitOptions_derivEpsilon(self)
-
-    def setDerivEpsilon(self, deriv_epsilon):
-        r"""
-        setDerivEpsilon(FitOptions self, double deriv_epsilon)
-        void FitOptions::setDerivEpsilon(double deriv_epsilon)
-
-        """
-        return _libBornAgainFit.FitOptions_setDerivEpsilon(self, deriv_epsilon)
-
-    def stepFactor(self):
-        r"""
-        stepFactor(FitOptions self) -> double
-        double FitOptions::stepFactor() const
-
-        """
-        return _libBornAgainFit.FitOptions_stepFactor(self)
-
-    def setStepFactor(self, step_factor):
-        r"""
-        setStepFactor(FitOptions self, double step_factor)
-        void FitOptions::setStepFactor(double step_factor)
-
-        """
-        return _libBornAgainFit.FitOptions_setStepFactor(self, step_factor)
-    __swig_destroy__ = _libBornAgainFit.delete_FitOptions
-
-# Register FitOptions in _libBornAgainFit:
-_libBornAgainFit.FitOptions_swigregister(FitOptions)
-
 class Minimizer(object):
     r"""
 
diff --git a/auto/Wrap/libBornAgainFit_wrap.cpp b/auto/Wrap/libBornAgainFit_wrap.cpp
index 11fff5db332cb0b046a355336e32e26d49b50a24..ef50cba3367f5afa9eb40a68b3555cba094e551c 100644
--- a/auto/Wrap/libBornAgainFit_wrap.cpp
+++ b/auto/Wrap/libBornAgainFit_wrap.cpp
@@ -3098,67 +3098,66 @@ namespace Swig {
 /* -------- TYPES TABLE (BEGIN) -------- */
 
 #define SWIGTYPE_p_AttLimits swig_types[0]
-#define SWIGTYPE_p_FitOptions swig_types[1]
-#define SWIGTYPE_p_IMinimizer swig_types[2]
-#define SWIGTYPE_p_MinimizerCatalog swig_types[3]
-#define SWIGTYPE_p_MinimizerFactory swig_types[4]
-#define SWIGTYPE_p_MinimizerInfo swig_types[5]
-#define SWIGTYPE_p_PyCallback swig_types[6]
-#define SWIGTYPE_p_RealLimits swig_types[7]
-#define SWIGTYPE_p_allocator_type swig_types[8]
-#define SWIGTYPE_p_char swig_types[9]
-#define SWIGTYPE_p_const_iterator swig_types[10]
-#define SWIGTYPE_p_corr_matrix_t swig_types[11]
-#define SWIGTYPE_p_difference_type swig_types[12]
-#define SWIGTYPE_p_fcn_residual_t swig_types[13]
-#define SWIGTYPE_p_fcn_scalar_t swig_types[14]
-#define SWIGTYPE_p_first_type swig_types[15]
-#define SWIGTYPE_p_int swig_types[16]
-#define SWIGTYPE_p_iterator swig_types[17]
-#define SWIGTYPE_p_key_type swig_types[18]
-#define SWIGTYPE_p_long_long swig_types[19]
-#define SWIGTYPE_p_mapped_type swig_types[20]
-#define SWIGTYPE_p_mumufit__Minimizer swig_types[21]
-#define SWIGTYPE_p_mumufit__MinimizerResult swig_types[22]
-#define SWIGTYPE_p_mumufit__Parameter swig_types[23]
-#define SWIGTYPE_p_mumufit__Parameters swig_types[24]
-#define SWIGTYPE_p_p_PyObject swig_types[25]
-#define SWIGTYPE_p_parameters_t swig_types[26]
-#define SWIGTYPE_p_second_type swig_types[27]
-#define SWIGTYPE_p_short swig_types[28]
-#define SWIGTYPE_p_signed_char swig_types[29]
-#define SWIGTYPE_p_size_type swig_types[30]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[31]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[32]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[33]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[34]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[35]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[36]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[37]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[38]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[39]
-#define SWIGTYPE_p_std__invalid_argument swig_types[40]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[41]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[42]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[43]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[44]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[45]
-#define SWIGTYPE_p_std__vectorT_mumufit__Parameter_std__allocatorT_mumufit__Parameter_t_t__const_iterator swig_types[46]
-#define SWIGTYPE_p_std__vectorT_mumufit__Parameter_std__allocatorT_mumufit__Parameter_t_t__iterator swig_types[47]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[48]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[49]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[50]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[51]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[52]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[53]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[54]
-#define SWIGTYPE_p_unsigned_char swig_types[55]
-#define SWIGTYPE_p_unsigned_int swig_types[56]
-#define SWIGTYPE_p_unsigned_long_long swig_types[57]
-#define SWIGTYPE_p_unsigned_short swig_types[58]
-#define SWIGTYPE_p_value_type swig_types[59]
-static swig_type_info *swig_types[61];
-static swig_module_info swig_module = {swig_types, 60, 0, 0, 0, 0};
+#define SWIGTYPE_p_IMinimizer swig_types[1]
+#define SWIGTYPE_p_MinimizerCatalog swig_types[2]
+#define SWIGTYPE_p_MinimizerFactory swig_types[3]
+#define SWIGTYPE_p_MinimizerInfo swig_types[4]
+#define SWIGTYPE_p_PyCallback swig_types[5]
+#define SWIGTYPE_p_RealLimits swig_types[6]
+#define SWIGTYPE_p_allocator_type swig_types[7]
+#define SWIGTYPE_p_char swig_types[8]
+#define SWIGTYPE_p_const_iterator swig_types[9]
+#define SWIGTYPE_p_corr_matrix_t swig_types[10]
+#define SWIGTYPE_p_difference_type swig_types[11]
+#define SWIGTYPE_p_fcn_residual_t swig_types[12]
+#define SWIGTYPE_p_fcn_scalar_t swig_types[13]
+#define SWIGTYPE_p_first_type swig_types[14]
+#define SWIGTYPE_p_int swig_types[15]
+#define SWIGTYPE_p_iterator swig_types[16]
+#define SWIGTYPE_p_key_type swig_types[17]
+#define SWIGTYPE_p_long_long swig_types[18]
+#define SWIGTYPE_p_mapped_type swig_types[19]
+#define SWIGTYPE_p_mumufit__Minimizer swig_types[20]
+#define SWIGTYPE_p_mumufit__MinimizerResult swig_types[21]
+#define SWIGTYPE_p_mumufit__Parameter swig_types[22]
+#define SWIGTYPE_p_mumufit__Parameters swig_types[23]
+#define SWIGTYPE_p_p_PyObject swig_types[24]
+#define SWIGTYPE_p_parameters_t swig_types[25]
+#define SWIGTYPE_p_second_type swig_types[26]
+#define SWIGTYPE_p_short swig_types[27]
+#define SWIGTYPE_p_signed_char swig_types[28]
+#define SWIGTYPE_p_size_type swig_types[29]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[30]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[31]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[32]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[33]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[34]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[35]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[36]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[37]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[38]
+#define SWIGTYPE_p_std__invalid_argument swig_types[39]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[40]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[41]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[42]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[43]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[44]
+#define SWIGTYPE_p_std__vectorT_mumufit__Parameter_std__allocatorT_mumufit__Parameter_t_t__const_iterator swig_types[45]
+#define SWIGTYPE_p_std__vectorT_mumufit__Parameter_std__allocatorT_mumufit__Parameter_t_t__iterator swig_types[46]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[47]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[48]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[49]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[50]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[51]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[52]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[53]
+#define SWIGTYPE_p_unsigned_char swig_types[54]
+#define SWIGTYPE_p_unsigned_int swig_types[55]
+#define SWIGTYPE_p_unsigned_long_long swig_types[56]
+#define SWIGTYPE_p_unsigned_short swig_types[57]
+#define SWIGTYPE_p_value_type swig_types[58]
+static swig_type_info *swig_types[60];
+static swig_module_info swig_module = {swig_types, 59, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -6651,7 +6650,6 @@ SWIGINTERN std::vector< std::pair< double,double > >::iterator std_vector_Sl_std
 SWIGINTERN std::vector< std::pair< double,double > >::iterator std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_0(std::vector< std::pair< double,double > > *self,std::vector< std::pair< double,double > >::iterator pos,std::vector< std::pair< double,double > >::value_type const &x){ return self->insert(pos, x); }
 SWIGINTERN void std_vector_Sl_std_pair_Sl_double_Sc_double_Sg__Sg__insert__SWIG_1(std::vector< std::pair< double,double > > *self,std::vector< std::pair< double,double > >::iterator pos,std::vector< std::pair< double,double > >::size_type n,std::vector< std::pair< double,double > >::value_type const &x){ self->insert(pos, n, x); }
 
-#include "Fit/Kernel/FitOptions.h"
 #include "Fit/Kernel/Minimizer.h"
 #include "Fit/Kernel/MinimizerFactory.h"
 #include "Fit/Kernel/PyCallback.h"
@@ -26731,156 +26729,6 @@ SWIGINTERN PyObject *MinimizerResult_swiginit(PyObject *SWIGUNUSEDPARM(self), Py
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN PyObject *_wrap_new_FitOptions(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *result = 0 ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "new_FitOptions", 0, 0, 0)) SWIG_fail;
-  result = (FitOptions *)new FitOptions();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FitOptions, SWIG_POINTER_NEW |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FitOptions_derivEpsilon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *arg1 = (FitOptions *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitOptions, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FitOptions_derivEpsilon" "', argument " "1"" of type '" "FitOptions const *""'"); 
-  }
-  arg1 = reinterpret_cast< FitOptions * >(argp1);
-  result = (double)((FitOptions const *)arg1)->derivEpsilon();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FitOptions_setDerivEpsilon(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *arg1 = (FitOptions *) 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FitOptions_setDerivEpsilon", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitOptions, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FitOptions_setDerivEpsilon" "', argument " "1"" of type '" "FitOptions *""'"); 
-  }
-  arg1 = reinterpret_cast< FitOptions * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "FitOptions_setDerivEpsilon" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  (arg1)->setDerivEpsilon(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FitOptions_stepFactor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *arg1 = (FitOptions *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  double result;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitOptions, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FitOptions_stepFactor" "', argument " "1"" of type '" "FitOptions const *""'"); 
-  }
-  arg1 = reinterpret_cast< FitOptions * >(argp1);
-  result = (double)((FitOptions const *)arg1)->stepFactor();
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_FitOptions_setStepFactor(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *arg1 = (FitOptions *) 0 ;
-  double arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  PyObject *swig_obj[2] ;
-  
-  if (!SWIG_Python_UnpackTuple(args, "FitOptions_setStepFactor", 2, 2, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitOptions, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "FitOptions_setStepFactor" "', argument " "1"" of type '" "FitOptions *""'"); 
-  }
-  arg1 = reinterpret_cast< FitOptions * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "FitOptions_setStepFactor" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  (arg1)->setStepFactor(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_delete_FitOptions(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  FitOptions *arg1 = (FitOptions *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_FitOptions, SWIG_POINTER_DISOWN |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_FitOptions" "', argument " "1"" of type '" "FitOptions *""'"); 
-  }
-  arg1 = reinterpret_cast< FitOptions * >(argp1);
-  delete arg1;
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *FitOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *obj;
-  if (!SWIG_Python_UnpackTuple(args, "swigregister", 1, 1, &obj)) return NULL;
-  SWIG_TypeNewClientData(SWIGTYPE_p_FitOptions, SWIG_NewClientData(obj));
-  return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject *FitOptions_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  return SWIG_Python_InitShadowInstance(args);
-}
-
 SWIGINTERN PyObject *_wrap_new_Minimizer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   mumufit::Minimizer *result = 0 ;
@@ -28854,34 +28702,6 @@ static PyMethodDef SwigMethods[] = {
 	 { "delete_MinimizerResult", _wrap_delete_MinimizerResult, METH_O, "delete_MinimizerResult(MinimizerResult self)"},
 	 { "MinimizerResult_swigregister", MinimizerResult_swigregister, METH_O, NULL},
 	 { "MinimizerResult_swiginit", MinimizerResult_swiginit, METH_VARARGS, NULL},
-	 { "new_FitOptions", _wrap_new_FitOptions, METH_NOARGS, "\n"
-		"new_FitOptions() -> FitOptions\n"
-		"FitOptions::FitOptions()\n"
-		"\n"
-		""},
-	 { "FitOptions_derivEpsilon", _wrap_FitOptions_derivEpsilon, METH_O, "\n"
-		"FitOptions_derivEpsilon(FitOptions self) -> double\n"
-		"double FitOptions::derivEpsilon() const\n"
-		"\n"
-		""},
-	 { "FitOptions_setDerivEpsilon", _wrap_FitOptions_setDerivEpsilon, METH_VARARGS, "\n"
-		"FitOptions_setDerivEpsilon(FitOptions self, double deriv_epsilon)\n"
-		"void FitOptions::setDerivEpsilon(double deriv_epsilon)\n"
-		"\n"
-		""},
-	 { "FitOptions_stepFactor", _wrap_FitOptions_stepFactor, METH_O, "\n"
-		"FitOptions_stepFactor(FitOptions self) -> double\n"
-		"double FitOptions::stepFactor() const\n"
-		"\n"
-		""},
-	 { "FitOptions_setStepFactor", _wrap_FitOptions_setStepFactor, METH_VARARGS, "\n"
-		"FitOptions_setStepFactor(FitOptions self, double step_factor)\n"
-		"void FitOptions::setStepFactor(double step_factor)\n"
-		"\n"
-		""},
-	 { "delete_FitOptions", _wrap_delete_FitOptions, METH_O, "delete_FitOptions(FitOptions self)"},
-	 { "FitOptions_swigregister", FitOptions_swigregister, METH_O, NULL},
-	 { "FitOptions_swiginit", FitOptions_swiginit, METH_VARARGS, NULL},
 	 { "new_Minimizer", _wrap_new_Minimizer, METH_NOARGS, "\n"
 		"new_Minimizer() -> Minimizer\n"
 		"Minimizer::Minimizer()\n"
@@ -28983,7 +28803,6 @@ static PyMethodDef SwigMethods_proxydocs[] = {
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
 static swig_type_info _swigt__p_AttLimits = {"_p_AttLimits", "AttLimits *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_FitOptions = {"_p_FitOptions", "FitOptions *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IMinimizer = {"_p_IMinimizer", "IMinimizer *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_MinimizerCatalog = {"_p_MinimizerCatalog", "MinimizerCatalog *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_MinimizerFactory = {"_p_MinimizerFactory", "MinimizerFactory *", 0, 0, (void*)0, 0};
@@ -29045,7 +28864,6 @@ static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0
 
 static swig_type_info *swig_type_initial[] = {
   &_swigt__p_AttLimits,
-  &_swigt__p_FitOptions,
   &_swigt__p_IMinimizer,
   &_swigt__p_MinimizerCatalog,
   &_swigt__p_MinimizerFactory,
@@ -29107,7 +28925,6 @@ static swig_type_info *swig_type_initial[] = {
 };
 
 static swig_cast_info _swigc__p_AttLimits[] = {  {&_swigt__p_AttLimits, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_FitOptions[] = {  {&_swigt__p_FitOptions, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMinimizer[] = {  {&_swigt__p_IMinimizer, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_MinimizerCatalog[] = {  {&_swigt__p_MinimizerCatalog, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_MinimizerFactory[] = {  {&_swigt__p_MinimizerFactory, 0, 0, 0},{0, 0, 0, 0}};
@@ -29169,7 +28986,6 @@ static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0,
 
 static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_AttLimits,
-  _swigc__p_FitOptions,
   _swigc__p_IMinimizer,
   _swigc__p_MinimizerCatalog,
   _swigc__p_MinimizerFactory,