diff --git a/Base/Axis/Bin.h b/Base/Axis/Bin.h
index a495510e850dfb1cb3c3afa39a9673415e9895c6..cb819757e30106897e088edce21936f863a2fb62 100644
--- a/Base/Axis/Bin.h
+++ b/Base/Axis/Bin.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_BIN_H
-#define BORNAGAIN_CORE_AXIS_BIN_H
+#ifndef BORNAGAIN_BASE_AXIS_BIN_H
+#define BORNAGAIN_BASE_AXIS_BIN_H
 
 #include "Base/Vector/Vectors3D.h"
 
@@ -61,4 +61,4 @@ public:
     cvector_t m_q_upper; //!< upper bound of the bin
 };
 
-#endif // BORNAGAIN_CORE_AXIS_BIN_H
+#endif // BORNAGAIN_BASE_AXIS_BIN_H
diff --git a/Base/Axis/ConstKBinAxis.h b/Base/Axis/ConstKBinAxis.h
index 154c7b6e20268057f13e6fe819e305c55d703d84..0520cbd239cdc7b811eeba0d91409aeb019c4fab 100644
--- a/Base/Axis/ConstKBinAxis.h
+++ b/Base/Axis/ConstKBinAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_CONSTKBINAXIS_H
-#define BORNAGAIN_CORE_AXIS_CONSTKBINAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_CONSTKBINAXIS_H
+#define BORNAGAIN_BASE_AXIS_CONSTKBINAXIS_H
 
 #include "Base/Axis/VariableBinAxis.h"
 
@@ -45,4 +45,4 @@ protected:
     double m_end;
 };
 
-#endif // BORNAGAIN_CORE_AXIS_CONSTKBINAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_CONSTKBINAXIS_H
diff --git a/Base/Axis/CustomBinAxis.h b/Base/Axis/CustomBinAxis.h
index 109c5ae702802e65216475b236c9b180ae202e85..47c1ffd4753e34cd3f08cdb18f004a00d8e9558d 100644
--- a/Base/Axis/CustomBinAxis.h
+++ b/Base/Axis/CustomBinAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_CUSTOMBINAXIS_H
-#define BORNAGAIN_CORE_AXIS_CUSTOMBINAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_CUSTOMBINAXIS_H
+#define BORNAGAIN_BASE_AXIS_CUSTOMBINAXIS_H
 
 #include "Base/Axis/VariableBinAxis.h"
 
@@ -49,4 +49,4 @@ protected:
     std::vector<double> m_bin_centers;
 };
 
-#endif // BORNAGAIN_CORE_AXIS_CUSTOMBINAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_CUSTOMBINAXIS_H
diff --git a/Base/Axis/FixedBinAxis.h b/Base/Axis/FixedBinAxis.h
index 59a8b14b19d7b4eaef4238a5065480f854c3e76f..1f0560868933ed8ba9046b84d1cba5a0479f9615 100644
--- a/Base/Axis/FixedBinAxis.h
+++ b/Base/Axis/FixedBinAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_FIXEDBINAXIS_H
-#define BORNAGAIN_CORE_AXIS_FIXEDBINAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_FIXEDBINAXIS_H
+#define BORNAGAIN_BASE_AXIS_FIXEDBINAXIS_H
 
 #include "Base/Axis/IAxis.h"
 
@@ -64,4 +64,4 @@ private:
     double m_end;
 };
 
-#endif // BORNAGAIN_CORE_AXIS_FIXEDBINAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_FIXEDBINAXIS_H
diff --git a/Base/Axis/IAxis.h b/Base/Axis/IAxis.h
index de17be4028b641388a6d74c562b820d0a954b939..be7894669fd156abf86e32def16deb83820ce681 100644
--- a/Base/Axis/IAxis.h
+++ b/Base/Axis/IAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_IAXIS_H
-#define BORNAGAIN_CORE_AXIS_IAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_IAXIS_H
+#define BORNAGAIN_BASE_AXIS_IAXIS_H
 
 #include "Base/Axis/Bin.h"
 #include <vector>
@@ -98,4 +98,4 @@ inline bool HaveSameNameAndShape(const IAxis& left, const IAxis& right)
     return left == right;
 }
 
-#endif // BORNAGAIN_CORE_AXIS_IAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_IAXIS_H
diff --git a/Base/Axis/PointwiseAxis.h b/Base/Axis/PointwiseAxis.h
index 795204cb7c45ddb534c912653d1fc5637985fb32..ce669519eb89aa15a565f51f6aa61eeb04a00974 100644
--- a/Base/Axis/PointwiseAxis.h
+++ b/Base/Axis/PointwiseAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_POINTWISEAXIS_H
-#define BORNAGAIN_CORE_AXIS_POINTWISEAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_POINTWISEAXIS_H
+#define BORNAGAIN_BASE_AXIS_POINTWISEAXIS_H
 
 #include "Base/Axis/IAxis.h"
 
@@ -87,4 +87,4 @@ private:
     std::vector<double> m_coordinates;
 };
 
-#endif // BORNAGAIN_CORE_AXIS_POINTWISEAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_POINTWISEAXIS_H
diff --git a/Base/Axis/VariableBinAxis.h b/Base/Axis/VariableBinAxis.h
index f9e7ac67635011843474d65070fd8445b28e4ae4..33be3a4e5174acf2557ead0e0d3daab39033505e 100644
--- a/Base/Axis/VariableBinAxis.h
+++ b/Base/Axis/VariableBinAxis.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AXIS_VARIABLEBINAXIS_H
-#define BORNAGAIN_CORE_AXIS_VARIABLEBINAXIS_H
+#ifndef BORNAGAIN_BASE_AXIS_VARIABLEBINAXIS_H
+#define BORNAGAIN_BASE_AXIS_VARIABLEBINAXIS_H
 
 #include "Base/Axis/IAxis.h"
 
@@ -66,4 +66,4 @@ private:
     std::vector<double> m_bin_boundaries; //!< vector containing the bin limits
 };
 
-#endif // BORNAGAIN_CORE_AXIS_VARIABLEBINAXIS_H
+#endif // BORNAGAIN_BASE_AXIS_VARIABLEBINAXIS_H
diff --git a/Base/Pixel/IPixel.h b/Base/Pixel/IPixel.h
index 94ad46176f0506123e789d2c29440fba7305c1f0..c99d4819164dded27540eed36c1dda8e88a7a055 100644
--- a/Base/Pixel/IPixel.h
+++ b/Base/Pixel/IPixel.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PIXEL_IPIXEL_H
-#define BORNAGAIN_CORE_PIXEL_IPIXEL_H
+#ifndef BORNAGAIN_BASE_PIXEL_IPIXEL_H
+#define BORNAGAIN_BASE_PIXEL_IPIXEL_H
 
 #include "Base/Vector/Vectors3D.h"
 
@@ -33,4 +33,4 @@ public:
     virtual double getSolidAngle() const = 0;
 };
 
-#endif // BORNAGAIN_CORE_PIXEL_IPIXEL_H
+#endif // BORNAGAIN_BASE_PIXEL_IPIXEL_H
diff --git a/Base/Pixel/PolarizationHandler.h b/Base/Pixel/PolarizationHandler.h
index e86d24b2de1760924dd1f5099b9bc5411a2601f0..9c42b06fc16defd85ff7bd2246fcc865f27b1796 100644
--- a/Base/Pixel/PolarizationHandler.h
+++ b/Base/Pixel/PolarizationHandler.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PIXEL_POLARIZATIONHANDLER_H
-#define BORNAGAIN_CORE_PIXEL_POLARIZATIONHANDLER_H
+#ifndef BORNAGAIN_BASE_PIXEL_POLARIZATIONHANDLER_H
+#define BORNAGAIN_BASE_PIXEL_POLARIZATIONHANDLER_H
 
 #include "Base/Vector/EigenCore.h"
 
@@ -45,4 +45,4 @@ private:
     Eigen::Matrix2cd m_analyzer_operator; //!< polarization analyzer operator
 };
 
-#endif // BORNAGAIN_CORE_PIXEL_POLARIZATIONHANDLER_H
+#endif // BORNAGAIN_BASE_PIXEL_POLARIZATIONHANDLER_H
diff --git a/Base/Pixel/SimulationElement.h b/Base/Pixel/SimulationElement.h
index d063c2ffafd40b6b539c240f82fc6a5a188c9a02..2d75227e30ffb515c2270f3699968797561e5acf 100644
--- a/Base/Pixel/SimulationElement.h
+++ b/Base/Pixel/SimulationElement.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PIXEL_SIMULATIONELEMENT_H
-#define BORNAGAIN_CORE_PIXEL_SIMULATIONELEMENT_H
+#ifndef BORNAGAIN_BASE_PIXEL_SIMULATIONELEMENT_H
+#define BORNAGAIN_BASE_PIXEL_SIMULATIONELEMENT_H
 
 #include "Base/Pixel/PolarizationHandler.h"
 #include "Base/Types/Complex.h"
@@ -80,4 +80,4 @@ private:
     double m_intensity; //!< simulated intensity for detector cell
 };
 
-#endif // BORNAGAIN_CORE_PIXEL_SIMULATIONELEMENT_H
+#endif // BORNAGAIN_BASE_PIXEL_SIMULATIONELEMENT_H
diff --git a/Base/Utils/PyEmbeddedUtils.h b/Base/Utils/PyEmbeddedUtils.h
index b612a0f27064a86d40fe92f23b081376edae33ad..ccd9adc0dd61c8e66a1e3b24e02fdb78766cffb3 100644
--- a/Base/Utils/PyEmbeddedUtils.h
+++ b/Base/Utils/PyEmbeddedUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PYIO_PYEMBEDDEDUTILS_H
-#define BORNAGAIN_CORE_PYIO_PYEMBEDDEDUTILS_H
+#ifndef BORNAGAIN_BASE_UTILS_PYEMBEDDEDUTILS_H
+#define BORNAGAIN_BASE_UTILS_PYEMBEDDEDUTILS_H
 
 #ifdef BORNAGAIN_PYTHON
 
@@ -49,4 +49,4 @@ std::string pythonStackTrace();
 
 #endif // BORNAGAIN_PYTHON
 
-#endif // BORNAGAIN_CORE_PYIO_PYEMBEDDEDUTILS_H
+#endif // BORNAGAIN_BASE_UTILS_PYEMBEDDEDUTILS_H
diff --git a/Base/Utils/PyFmt.h b/Base/Utils/PyFmt.h
index 12a75b1b9837398244b77abd2f043e552ad2a9d8..69dd88f348c5fb9958c550e359085262d984dac4 100644
--- a/Base/Utils/PyFmt.h
+++ b/Base/Utils/PyFmt.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PYFMT_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PYFMT_H
+#ifndef BORNAGAIN_BASE_UTILS_PYFMT_H
+#define BORNAGAIN_BASE_UTILS_PYFMT_H
 
 #include "Base/Vector/Vectors3D.h"
 #include <string>
@@ -48,4 +48,4 @@ std::string indent(size_t width = 4u);
 
 } // namespace pyfmt
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PYFMT_H
+#endif // BORNAGAIN_BASE_UTILS_PYFMT_H
diff --git a/Base/Utils/ThreadInfo.h b/Base/Utils/ThreadInfo.h
index e1faf19856b57a143e55e472c98aad97f2151e3f..5f0da9e3d47ecbc6f50ff81da7cff308be87cff7 100644
--- a/Base/Utils/ThreadInfo.h
+++ b/Base/Utils/ThreadInfo.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_THREADINFO_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_THREADINFO_H
+#ifndef BORNAGAIN_BASE_UTILS_THREADINFO_H
+#define BORNAGAIN_BASE_UTILS_THREADINFO_H
 
 //! Information to run simulation with dedicated number of threads.
 //! @ingroup simulation
@@ -27,4 +27,4 @@ struct ThreadInfo {
 
 inline ThreadInfo::ThreadInfo() : n_threads(0), n_batches(1), current_batch(0) {}
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_THREADINFO_H
+#endif // BORNAGAIN_BASE_UTILS_THREADINFO_H
diff --git a/CHANGELOG b/CHANGELOG
index 81816216f10bd5ae95020d063fa1dc84ff87b3f3..9a236ddf7cf2e8fd139b10710f797b0f9fb4ecea 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
 BornAgain-1.18.99, ongoing development
+  > Fixes of unreported bugs:
+    * For alpha_i, set scattered intensity to 0 (incorrect, but everything else would be worse)
 
 BornAgain-1.18.0, released 2020.10.30
   > API changes:
diff --git a/Core/Computation/ComputationStatus.h b/Core/Computation/ComputationStatus.h
index 6861c2b9a75bf9bbb28f08acfdfabf3fc074d904..fa2e34232812972fe76ecc206f7a4ca03b468be8 100644
--- a/Core/Computation/ComputationStatus.h
+++ b/Core/Computation/ComputationStatus.h
@@ -30,8 +30,11 @@ public:
 
     void setRunning() { m_status = RUNNING; }
     void setCompleted() { m_status = COMPLETED; }
-    void setFailed() { m_status = FAILED; }
-    void setErrorMessage(const std::string& message) { m_error_message = message; }
+    void setFailed(const std::string& message)
+    {
+        m_error_message = message;
+        m_status = FAILED;
+    }
 
 private:
     enum ESimulationStatus { IDLE, RUNNING, COMPLETED, FAILED };
diff --git a/Core/Computation/DWBAComputation.cpp b/Core/Computation/DWBAComputation.cpp
index 36d257e3038b61921dd64ab6f40c86525a2322e9..ae638a405beade7cc392a86b142431b0c60d3119 100644
--- a/Core/Computation/DWBAComputation.cpp
+++ b/Core/Computation/DWBAComputation.cpp
@@ -34,11 +34,11 @@ DWBAComputation::DWBAComputation(const MultiLayer& multilayer, const SimulationO
                                  std::vector<SimulationElement>::iterator end_it)
     : IComputation(multilayer, options, progress), m_begin_it(begin_it), m_end_it(end_it)
 {
-    auto p_fresnel_map = m_processed_sample->fresnelMap();
+    const IFresnelMap* p_fresnel_map = m_processed_sample->fresnelMap();
     bool polarized = m_processed_sample->containsMagneticMaterial();
-    for (const auto& layout : m_processed_sample->layouts()) {
+    for (const ProcessedLayout& layout : m_processed_sample->layouts()) {
         m_single_computation.addLayoutComputation(
-            new ParticleLayoutComputation(&layout, m_sim_options, polarized));
+            new ParticleLayoutComputation(layout, m_sim_options, polarized));
     }
     // scattering from rough surfaces in DWBA
     if (m_processed_sample->hasRoughness())
diff --git a/Core/Computation/DWBASingleComputation.cpp b/Core/Computation/DWBASingleComputation.cpp
index c164087acb68e2b4c96d342e5d68697871dc1921..e3acd2172c4373c3c1631c0678c5abbdede2f924 100644
--- a/Core/Computation/DWBASingleComputation.cpp
+++ b/Core/Computation/DWBASingleComputation.cpp
@@ -47,18 +47,17 @@ void DWBASingleComputation::setSpecularBinComputation(GISASSpecularComputation*
 
 void DWBASingleComputation::compute(SimulationElement& elem) const
 {
-    for (auto& layout_comp : m_layout_comps) {
+    for (auto& layout_comp : m_layout_comps)
         layout_comp->compute(elem);
-    }
-    if (m_roughness_comp) { // also check absence of matrix RT coefficients
+
+    if (m_roughness_comp) // also check absence of matrix RT coefficients
         m_roughness_comp->compute(elem);
-    }
-    if (m_spec_comp) { // also check absence of matrix RT coefficients
+
+    if (m_spec_comp) // also check absence of matrix RT coefficients
         m_spec_comp->compute(elem);
-    }
-    if (m_progress_counter) {
+
+    if (m_progress_counter)
         m_progress_counter->stepProgress();
-    }
 }
 
 const std::map<size_t, std::vector<HomogeneousRegion>>& DWBASingleComputation::regionMap() const
diff --git a/Core/Computation/IComputation.cpp b/Core/Computation/IComputation.cpp
index f04364d92b56eb7a4986668c513e24be730d7e59..f8f954cb0eb8d6c5ac57376160e5c7061413b836 100644
--- a/Core/Computation/IComputation.cpp
+++ b/Core/Computation/IComputation.cpp
@@ -34,7 +34,6 @@ void IComputation::run()
         runProtected();
         m_status.setCompleted();
     } catch (const std::exception& ex) {
-        m_status.setErrorMessage(std::string(ex.what()));
-        m_status.setFailed();
+        m_status.setFailed(ex.what());
     }
 }
diff --git a/Core/Computation/LayoutStrategyBuilder.cpp b/Core/Computation/LayoutStrategyBuilder.cpp
deleted file mode 100644
index aed5f7f0b411ad35ae2ae4b714b554d9008b0c7c..0000000000000000000000000000000000000000
--- a/Core/Computation/LayoutStrategyBuilder.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/Computation/LayoutStrategyBuilder.cpp
-//! @brief     Implements class LayoutStrategyBuilder.
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-// ************************************************************************** //
-
-#include "Core/Computation/LayoutStrategyBuilder.h"
-#include "Base/Types/Exceptions.h"
-#include "Core/Computation/ProcessedLayout.h"
-#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
-#include "Sample/Interference/DecouplingApproximationStrategy.h"
-#include "Sample/Interference/SSCApproximationStrategy.h"
-
-LayoutStrategyBuilder::LayoutStrategyBuilder(const ProcessedLayout* p_layout,
-                                             const SimulationOptions& sim_params, bool polarized)
-    : m_layout(p_layout), m_sim_params(sim_params), m_polarized(polarized)
-{
-    createStrategy();
-}
-
-// needs class definitions => don't move to .h
-LayoutStrategyBuilder::~LayoutStrategyBuilder() = default;
-
-IInterferenceFunctionStrategy* LayoutStrategyBuilder::releaseStrategy()
-{
-    return m_strategy.release();
-}
-
-//! Returns a new strategy object that is able to calculate the scattering for fixed k_f.
-void LayoutStrategyBuilder::createStrategy()
-{
-    const IInterferenceFunction* p_iff = m_layout->interferenceFunction();
-    if (p_iff && m_layout->numberOfSlices() > 1 && !p_iff->supportsMultilayer())
-        throw std::runtime_error("LayoutStrategyBuilder::checkInterferenceFunction: "
-                                 "interference function does not support multiple layers");
-
-    auto p_radial_para = dynamic_cast<const InterferenceFunctionRadialParaCrystal*>(p_iff);
-    if (p_radial_para && p_radial_para->kappa() > 0.0) {
-        double kappa = p_radial_para->kappa();
-        m_strategy = std::make_unique<SSCApproximationStrategy>(m_sim_params, kappa, m_polarized);
-    } else {
-        m_strategy = std::make_unique<DecouplingApproximationStrategy>(m_sim_params, m_polarized);
-    }
-    if (!m_strategy)
-        throw Exceptions::ClassInitializationException("Could not create appropriate strategy");
-    m_strategy->init(m_layout->formFactorList(), p_iff);
-}
diff --git a/Core/Computation/LayoutStrategyBuilder.h b/Core/Computation/LayoutStrategyBuilder.h
deleted file mode 100644
index d8534628886c599813d812cce68508f56e7479b5..0000000000000000000000000000000000000000
--- a/Core/Computation/LayoutStrategyBuilder.h
+++ /dev/null
@@ -1,47 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      Core/Computation/LayoutStrategyBuilder.h
-//! @brief     Defines class LayoutStrategyBuilder.
-//!
-//! @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_CORE_COMPUTATION_LAYOUTSTRATEGYBUILDER_H
-#define BORNAGAIN_CORE_COMPUTATION_LAYOUTSTRATEGYBUILDER_H
-
-#include "Sample/RT/SimulationOptions.h"
-#include <memory>
-
-class IInterferenceFunction;
-class IInterferenceFunctionStrategy;
-class ProcessedLayout;
-
-//! Methods to generate a simulation strategy for a ParticleLayoutComputation.
-//! @ingroup algorithms_internal
-
-class LayoutStrategyBuilder
-{
-public:
-    LayoutStrategyBuilder(const ProcessedLayout* p_layout, const SimulationOptions& sim_params,
-                          bool polarized);
-
-    ~LayoutStrategyBuilder();
-
-    IInterferenceFunctionStrategy* releaseStrategy();
-
-private:
-    void createStrategy();
-
-    const ProcessedLayout* m_layout;
-    SimulationOptions m_sim_params;
-    bool m_polarized; //!< polarized computation required?
-    std::unique_ptr<IInterferenceFunctionStrategy> m_strategy;
-};
-
-#endif // BORNAGAIN_CORE_COMPUTATION_LAYOUTSTRATEGYBUILDER_H
diff --git a/Core/Computation/ParticleLayoutComputation.cpp b/Core/Computation/ParticleLayoutComputation.cpp
index 4df104ffc713c4ffbc2e7205f68f7ef76c08a3eb..5e689de97feec83a681b38db502157f943515574 100644
--- a/Core/Computation/ParticleLayoutComputation.cpp
+++ b/Core/Computation/ParticleLayoutComputation.cpp
@@ -14,32 +14,63 @@
 
 #include "Core/Computation/ParticleLayoutComputation.h"
 #include "Base/Pixel/SimulationElement.h"
-#include "Core/Computation/LayoutStrategyBuilder.h"
+#include "Base/Types/Exceptions.h"
 #include "Core/Computation/ProcessedLayout.h"
-#include "Sample/Interference/IInterferenceFunctionStrategy.h"
+#include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
+#include "Sample/Interference/DecouplingApproximationStrategy.h"
+#include "Sample/Interference/SSCApproximationStrategy.h"
 
-ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout* p_layout,
+namespace
+{
+
+std::unique_ptr<IInterferenceFunctionStrategy>
+processedInterferenceFunction(const ProcessedLayout& layout, const SimulationOptions& sim_params,
+                              bool polarized)
+{
+    const IInterferenceFunction* p_iff = layout.interferenceFunction();
+    if (p_iff && layout.numberOfSlices() > 1 && !p_iff->supportsMultilayer())
+        throw std::runtime_error("LayoutStrategyBuilder::checkInterferenceFunction: "
+                                 "interference function does not support multiple layers");
+
+    auto p_radial_para = dynamic_cast<const InterferenceFunctionRadialParaCrystal*>(p_iff);
+
+    const std::vector<FormFactorCoherentSum>& weighted_formfactors = layout.formFactorList();
+
+    std::unique_ptr<IInterferenceFunctionStrategy> result;
+
+    if (p_radial_para && p_radial_para->kappa() > 0.0) {
+        double kappa = p_radial_para->kappa();
+        result = std::make_unique<SSCApproximationStrategy>(weighted_formfactors, p_iff, sim_params,
+                                                            polarized, kappa);
+    } else {
+        result = std::make_unique<DecouplingApproximationStrategy>(weighted_formfactors, p_iff,
+                                                                   sim_params, polarized);
+    }
+    if (!result)
+        throw Exceptions::ClassInitializationException("Could not create appropriate result");
+    return result;
+}
+
+} // namespace
+
+ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout& layout,
                                                      const SimulationOptions& options,
                                                      bool polarized)
-    : m_layout(p_layout)
+    : m_layout(layout), m_region_map(layout.regionMap()),
+      m_interference_function_strategy(processedInterferenceFunction(layout, options, polarized))
 {
-    LayoutStrategyBuilder builder(p_layout, options, polarized);
-    m_strategy.reset(builder.releaseStrategy());
-    m_region_map = p_layout->regionMap();
-    m_surface_density = p_layout->surfaceDensity();
 }
 
 ParticleLayoutComputation::~ParticleLayoutComputation() = default;
 
 void ParticleLayoutComputation::compute(SimulationElement& elem) const
 {
-    double alpha_f = elem.getAlphaMean();
-    size_t n_layers = m_layout->numberOfSlices();
-    if (n_layers > 1 && alpha_f < 0) {
-        return; // zero for transmission with multilayers (n>1)
-    } else {
-        elem.addIntensity(m_strategy->evaluate(elem) * m_surface_density);
-    }
+    const double alpha_f = elem.getAlphaMean();
+    const size_t n_layers = m_layout.numberOfSlices();
+    if (n_layers > 1 && alpha_f < 0)
+        return; // zero for transmission with multilayers (n>1) # TODO: support transmission GISAS
+
+    elem.addIntensity(m_interference_function_strategy->evaluate(elem) * m_layout.surfaceDensity());
 }
 
 void ParticleLayoutComputation::mergeRegionMap(
diff --git a/Core/Computation/ParticleLayoutComputation.h b/Core/Computation/ParticleLayoutComputation.h
index 3380b36c7371f2de0773d86446aff1e73591878d..5c98591d4293d8cb2b53acd0780bc8faebe48860 100644
--- a/Core/Computation/ParticleLayoutComputation.h
+++ b/Core/Computation/ParticleLayoutComputation.h
@@ -32,7 +32,7 @@ class SimulationOptions;
 class ParticleLayoutComputation final
 {
 public:
-    ParticleLayoutComputation(const ProcessedLayout* p_layout, const SimulationOptions& options,
+    ParticleLayoutComputation(const ProcessedLayout& layout, const SimulationOptions& options,
                               bool polarized);
     ~ParticleLayoutComputation();
 
@@ -42,10 +42,9 @@ public:
     void mergeRegionMap(std::map<size_t, std::vector<HomogeneousRegion>>& region_map) const;
 
 private:
-    const ProcessedLayout* m_layout;
-    std::unique_ptr<const IInterferenceFunctionStrategy> m_strategy;
-    double m_surface_density;
-    std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
+    const ProcessedLayout& m_layout;
+    const std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
+    std::unique_ptr<const IInterferenceFunctionStrategy> m_interference_function_strategy;
 };
 
 #endif // BORNAGAIN_CORE_COMPUTATION_PARTICLELAYOUTCOMPUTATION_H
diff --git a/Core/Scan/AngularSpecScan.h b/Core/Scan/AngularSpecScan.h
index 5ccb3e12b140a160095c64f216cbc3d4aea9f26f..1ed1aadaf86b609ddbc03b2589006e752e251279 100644
--- a/Core/Scan/AngularSpecScan.h
+++ b/Core/Scan/AngularSpecScan.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_ANGULARSPECSCAN_H
-#define BORNAGAIN_CORE_INSTRUMENT_ANGULARSPECSCAN_H
+#ifndef BORNAGAIN_CORE_SCAN_ANGULARSPECSCAN_H
+#define BORNAGAIN_CORE_SCAN_ANGULARSPECSCAN_H
 
 #include "Core/Scan/ISpecularScan.h"
 #include <memory>
@@ -127,4 +127,4 @@ private:
     mutable DistrOutput m_inc_res_cache;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_ANGULARSPECSCAN_H
+#endif // BORNAGAIN_CORE_SCAN_ANGULARSPECSCAN_H
diff --git a/Core/Scan/ISpecularScan.h b/Core/Scan/ISpecularScan.h
index 9093d0b4da3fac8b91311ae9b73b0bc665a100f3..f499ba180ac770f32bc1c7d5e4fd9fe46b06dc58 100644
--- a/Core/Scan/ISpecularScan.h
+++ b/Core/Scan/ISpecularScan.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_ISPECULARSCAN_H
-#define BORNAGAIN_CORE_INSTRUMENT_ISPECULARSCAN_H
+#ifndef BORNAGAIN_CORE_SCAN_ISPECULARSCAN_H
+#define BORNAGAIN_CORE_SCAN_ISPECULARSCAN_H
 
 #include "Base/Types/ICloneable.h"
 
@@ -64,4 +64,4 @@ inline std::ostream& operator<<(std::ostream& os, const ISpecularScan& scan)
 {
     return os << scan.print();
 }
-#endif // BORNAGAIN_CORE_INSTRUMENT_ISPECULARSCAN_H
+#endif // BORNAGAIN_CORE_SCAN_ISPECULARSCAN_H
diff --git a/Core/Scan/QSpecScan.h b/Core/Scan/QSpecScan.h
index 768d33ec85b3e6fc219bc31625754d036c8ecb00..a366ea39e72cd0840bb0745f34543643748959ff 100644
--- a/Core/Scan/QSpecScan.h
+++ b/Core/Scan/QSpecScan.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_QSPECSCAN_H
-#define BORNAGAIN_CORE_INSTRUMENT_QSPECSCAN_H
+#ifndef BORNAGAIN_CORE_SCAN_QSPECSCAN_H
+#define BORNAGAIN_CORE_SCAN_QSPECSCAN_H
 
 #include "Core/Scan/ISpecularScan.h"
 #include <memory>
@@ -94,4 +94,4 @@ private:
     mutable std::vector<std::vector<ParameterSample>> m_q_res_cache;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_QSPECSCAN_H
+#endif // BORNAGAIN_CORE_SCAN_QSPECSCAN_H
diff --git a/Core/Scan/SpecularSimulationElement.h b/Core/Scan/SpecularSimulationElement.h
index 88d06d5dc034695c6739513a701037a041b5d021..8a3825ad38627df32a49fdee90346886f705fa8f 100644
--- a/Core/Scan/SpecularSimulationElement.h
+++ b/Core/Scan/SpecularSimulationElement.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSIMULATIONELEMENT_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARSIMULATIONELEMENT_H
+#ifndef BORNAGAIN_CORE_SCAN_SPECULARSIMULATIONELEMENT_H
+#define BORNAGAIN_CORE_SCAN_SPECULARSIMULATIONELEMENT_H
 
 #include "Base/Pixel/PolarizationHandler.h"
 #include "Base/Types/Complex.h"
@@ -60,4 +60,4 @@ private:
     const std::function<std::vector<complex_t>(const std::vector<Slice>&)> m_kz_computation;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARSIMULATIONELEMENT_H
+#endif // BORNAGAIN_CORE_SCAN_SPECULARSIMULATIONELEMENT_H
diff --git a/Core/Scan/UnitConverter1D.h b/Core/Scan/UnitConverter1D.h
index be72cd6f57aa0d968df34a04e972bb5030ae4839..19d64dbf06d781ea94453d75b61aaf186b96e914 100644
--- a/Core/Scan/UnitConverter1D.h
+++ b/Core/Scan/UnitConverter1D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_UNITCONVERTER1D_H
-#define BORNAGAIN_CORE_INTENSITY_UNITCONVERTER1D_H
+#ifndef BORNAGAIN_CORE_SCAN_UNITCONVERTER1D_H
+#define BORNAGAIN_CORE_SCAN_UNITCONVERTER1D_H
 
 #include "Device/Unit/IUnitConverter.h"
 
@@ -129,4 +129,4 @@ protected:
 
     std::unique_ptr<IAxis> m_axis; //!< qz values (in inv. nm).
 };
-#endif // BORNAGAIN_CORE_INTENSITY_UNITCONVERTER1D_H
+#endif // BORNAGAIN_CORE_SCAN_UNITCONVERTER1D_H
diff --git a/Core/Simulation/DepthProbeSimulation.cpp b/Core/Simulation/DepthProbeSimulation.cpp
index ca9a9c1d7e9b07612c34af385b2c55f807ed9502..f90a107fa903846ba83444a23ebc6ead6d84792a 100644
--- a/Core/Simulation/DepthProbeSimulation.cpp
+++ b/Core/Simulation/DepthProbeSimulation.cpp
@@ -230,8 +230,6 @@ void DepthProbeSimulation::initialize()
 void DepthProbeSimulation::normalize(size_t start_ind, size_t n_elements)
 {
     const double beam_intensity = getBeamIntensity();
-    if (beam_intensity == 0.0)
-        return; // no normalization when beam intensity is zero
     for (size_t i = start_ind, stop_point = start_ind + n_elements; i < stop_point; ++i) {
         auto& element = m_sim_elements[i];
         const double alpha_i = -element.getAlphaI();
diff --git a/Core/Simulation/Simulation.cpp b/Core/Simulation/Simulation.cpp
index 472f2420e527c657fd9f4396e9222a3f6480c2cf..02f10d87e5014c09bf32d81edf012d6fd3f60a6d 100644
--- a/Core/Simulation/Simulation.cpp
+++ b/Core/Simulation/Simulation.cpp
@@ -68,7 +68,7 @@ size_t getNumberOfElements(size_t n_handlers, size_t current_handler, size_t n_e
     return std::min(handler_size, n_elements - start_index);
 }
 
-void runComputations(std::vector<std::unique_ptr<IComputation>> computations)
+void runComputations(std::vector<std::unique_ptr<IComputation>>& computations)
 {
     ASSERT(!computations.empty());
 
@@ -303,7 +303,7 @@ void Simulation::runSingleSimulation(size_t batch_start, size_t batch_size, doub
             break;
         computations.push_back(generateSingleThreadedComputation(thread_start, thread_size));
     }
-    runComputations(std::move(computations));
+    runComputations(computations);
 
     normalize(batch_start, batch_size);
     addBackgroundIntensity(batch_start, batch_size);
diff --git a/Core/Simulation/Simulation2D.cpp b/Core/Simulation/Simulation2D.cpp
index 7024aaa263f171ece76bad15aedd096d4e96cef8..e7d978c03456dc08be808633055c1f7e7a4e9468 100644
--- a/Core/Simulation/Simulation2D.cpp
+++ b/Core/Simulation/Simulation2D.cpp
@@ -111,13 +111,13 @@ std::vector<SimulationElement> Simulation2D::generateSimulationElements(const Be
 void Simulation2D::normalize(size_t start_ind, size_t n_elements)
 {
     const double beam_intensity = getBeamIntensity();
-    if (beam_intensity == 0.0)
-        return; // no normalization when beam intensity is zero
     for (size_t i = start_ind, stop_point = start_ind + n_elements; i < stop_point; ++i) {
         SimulationElement& element = m_sim_elements[i];
         double sin_alpha_i = std::abs(std::sin(element.getAlphaI()));
-        if (sin_alpha_i == 0.0)
-            sin_alpha_i = 1.0;
+        if (sin_alpha_i == 0.0) {
+            element.setIntensity(0);
+            continue;
+        }
         const double solid_angle = element.getSolidAngle();
         element.setIntensity(element.getIntensity() * beam_intensity * solid_angle / sin_alpha_i);
     }
diff --git a/Core/Simulation/SpecularSimulation.cpp b/Core/Simulation/SpecularSimulation.cpp
index a6a09e32a649e142658ab26f9ff647a6b9844b1b..f2e962c8393ff7f3ebeef9c576494f54e7360c7a 100644
--- a/Core/Simulation/SpecularSimulation.cpp
+++ b/Core/Simulation/SpecularSimulation.cpp
@@ -199,8 +199,6 @@ void SpecularSimulation::initialize()
 void SpecularSimulation::normalize(size_t start_ind, size_t n_elements)
 {
     const double beam_intensity = getBeamIntensity();
-    if (beam_intensity == 0.0)
-        return; // no normalization when beam intensity is zero
 
     std::vector<double> footprints;
     // TODO: use just m_scan when pointwise resolution is implemented
diff --git a/Core/Simulation/StandardSimulations.cpp b/Core/Simulation/StandardSimulations.cpp
index ab34fe6828842aca798f09c1c9e65455f05171e0..7d9dc381eab6e8e981d32e21d3b33faf87be5724 100644
--- a/Core/Simulation/StandardSimulations.cpp
+++ b/Core/Simulation/StandardSimulations.cpp
@@ -106,8 +106,8 @@ GISASSimulation* StandardSimulations::MiniGISASBeamDivergence()
     GISASSimulation* result = MiniGISAS();
 
     DistributionLogNormal wavelength_distr(1.0 * Units::angstrom, 0.1);
-    DistributionGaussian alpha_distr(0.2 * Units::degree, 0.1 * Units::degree);
-    DistributionGate phi_distr(-0.1 * Units::degree, 0.1 * Units::degree);
+    DistributionGaussian alpha_distr(0.2 * Units::degree, 0.02 * Units::degree);
+    DistributionGate phi_distr(-0.1 * Units::degree, 0.02 * Units::degree);
 
     ParameterPattern pattern1;
     pattern1.beginsWith("*").add("Beam").add("Wavelength");
diff --git a/Device/Beam/Beam.h b/Device/Beam/Beam.h
index 6db494d389ea377ddb99bec12027aa83da5b7215..746bd5d2bd8c6d5b9ce43a7225a07f21f5758258 100644
--- a/Device/Beam/Beam.h
+++ b/Device/Beam/Beam.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_BEAM_BEAM_H
-#define BORNAGAIN_CORE_BEAM_BEAM_H
+#ifndef BORNAGAIN_DEVICE_BEAM_BEAM_H
+#define BORNAGAIN_DEVICE_BEAM_BEAM_H
 
 #include "Base/Vector/EigenCore.h"
 #include "Param/Node/INode.h"
@@ -82,4 +82,4 @@ private:
     kvector_t m_bloch_vector; //!< Bloch vector encoding the beam's polarization
 };
 
-#endif // BORNAGAIN_CORE_BEAM_BEAM_H
+#endif // BORNAGAIN_DEVICE_BEAM_BEAM_H
diff --git a/Device/Beam/FootprintGauss.h b/Device/Beam/FootprintGauss.h
index a41bb77e4b7ec11cc655b2c60100d2c66358a76f..445c551000bac9110191dbacdadd19bf9d028811 100644
--- a/Device/Beam/FootprintGauss.h
+++ b/Device/Beam/FootprintGauss.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_BEAM_FOOTPRINTGAUSS_H
-#define BORNAGAIN_CORE_BEAM_FOOTPRINTGAUSS_H
+#ifndef BORNAGAIN_DEVICE_BEAM_FOOTPRINTGAUSS_H
+#define BORNAGAIN_DEVICE_BEAM_FOOTPRINTGAUSS_H
 
 #include "Device/Beam/IFootprintFactor.h"
 
@@ -39,4 +39,4 @@ public:
     std::string print() const override;
 };
 
-#endif // BORNAGAIN_CORE_BEAM_FOOTPRINTGAUSS_H
+#endif // BORNAGAIN_DEVICE_BEAM_FOOTPRINTGAUSS_H
diff --git a/Device/Beam/FootprintSquare.h b/Device/Beam/FootprintSquare.h
index 7736073d66ab67f7d903358a5de322f4d04aa1fe..fecfc821ee164d6423edfa4cc956cd63ec9f904c 100644
--- a/Device/Beam/FootprintSquare.h
+++ b/Device/Beam/FootprintSquare.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_BEAM_FOOTPRINTSQUARE_H
-#define BORNAGAIN_CORE_BEAM_FOOTPRINTSQUARE_H
+#ifndef BORNAGAIN_DEVICE_BEAM_FOOTPRINTSQUARE_H
+#define BORNAGAIN_DEVICE_BEAM_FOOTPRINTSQUARE_H
 
 #include "Device/Beam/IFootprintFactor.h"
 
@@ -37,4 +37,4 @@ public:
     std::string print() const override;
 };
 
-#endif // BORNAGAIN_CORE_BEAM_FOOTPRINTSQUARE_H
+#endif // BORNAGAIN_DEVICE_BEAM_FOOTPRINTSQUARE_H
diff --git a/Device/Beam/IFootprintFactor.h b/Device/Beam/IFootprintFactor.h
index de87d24f263eb56b445bcbd213cf14d5eb180b12..255bd949331a37b48c7049851e57e8f75a39789a 100644
--- a/Device/Beam/IFootprintFactor.h
+++ b/Device/Beam/IFootprintFactor.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_BEAM_IFOOTPRINTFACTOR_H
-#define BORNAGAIN_CORE_BEAM_IFOOTPRINTFACTOR_H
+#ifndef BORNAGAIN_DEVICE_BEAM_IFOOTPRINTFACTOR_H
+#define BORNAGAIN_DEVICE_BEAM_IFOOTPRINTFACTOR_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -54,4 +54,4 @@ inline std::ostream& operator<<(std::ostream& os, const IFootprintFactor& f_fact
     return os << f_factor.print();
 }
 
-#endif // BORNAGAIN_CORE_BEAM_IFOOTPRINTFACTOR_H
+#endif // BORNAGAIN_DEVICE_BEAM_IFOOTPRINTFACTOR_H
diff --git a/Device/Data/CumulativeValue.h b/Device/Data/CumulativeValue.h
index bd135adbb44c87c4d838fd058503824112e692d7..b04ee2b29eb36de890916d03cbbe00348cfd15ea 100644
--- a/Device/Data/CumulativeValue.h
+++ b/Device/Data/CumulativeValue.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_CUMULATIVEVALUE_H
-#define BORNAGAIN_CORE_INTENSITY_CUMULATIVEVALUE_H
+#ifndef BORNAGAIN_DEVICE_DATA_CUMULATIVEVALUE_H
+#define BORNAGAIN_DEVICE_DATA_CUMULATIVEVALUE_H
 
 //! The cumulative value with average and rms on-the-flight calculations.
 //! @ingroup tools
@@ -43,4 +43,4 @@ private:
 bool operator<(const CumulativeValue& lhs, const CumulativeValue& rhs);
 bool operator>(const CumulativeValue& lhs, const CumulativeValue& rhs);
 
-#endif // BORNAGAIN_CORE_INTENSITY_CUMULATIVEVALUE_H
+#endif // BORNAGAIN_DEVICE_DATA_CUMULATIVEVALUE_H
diff --git a/Device/Data/LLData.h b/Device/Data/LLData.h
index 1da2e6985c179fb504cfe130858317b8f2506389..ec311b771541aff7e92459e152c5cd4b25443e6e 100644
--- a/Device/Data/LLData.h
+++ b/Device/Data/LLData.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_LLDATA_H
-#define BORNAGAIN_CORE_INTENSITY_LLDATA_H
+#ifndef BORNAGAIN_DEVICE_DATA_LLDATA_H
+#define BORNAGAIN_DEVICE_DATA_LLDATA_H
 
 #include "Base/Types/Exceptions.h"
 #include "Base/Vector/EigenCore.h"
@@ -306,4 +306,4 @@ template <class T> bool HaveSameDimensions(const LLData<T>& left, const LLData<T
     return true;
 }
 
-#endif // BORNAGAIN_CORE_INTENSITY_LLDATA_H
+#endif // BORNAGAIN_DEVICE_DATA_LLDATA_H
diff --git a/Device/Data/OutputData.h b/Device/Data/OutputData.h
index 905392c0ef5a657d1e4c83de6d1224ab833a0dff..ca2eea1272ecd500567644f10f5ed36274a16fbe 100644
--- a/Device/Data/OutputData.h
+++ b/Device/Data/OutputData.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_OUTPUTDATA_H
-#define BORNAGAIN_CORE_INTENSITY_OUTPUTDATA_H
+#ifndef BORNAGAIN_DEVICE_DATA_OUTPUTDATA_H
+#define BORNAGAIN_DEVICE_DATA_OUTPUTDATA_H
 
 #include "Base/Axis/FixedBinAxis.h"
 #include "Base/Types/SafePointerVector.h"
@@ -627,4 +627,4 @@ template <class T> bool OutputData<T>::axisNameExists(const std::string& axis_na
     return false;
 }
 
-#endif // BORNAGAIN_CORE_INTENSITY_OUTPUTDATA_H
+#endif // BORNAGAIN_DEVICE_DATA_OUTPUTDATA_H
diff --git a/Device/Data/OutputDataIterator.h b/Device/Data/OutputDataIterator.h
index 0dd65d58a7cd2408f3ef34e63b715a56963dda4a..ee175d9eec4bc7bedafaf90893400c2abfdf4676 100644
--- a/Device/Data/OutputDataIterator.h
+++ b/Device/Data/OutputDataIterator.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_OUTPUTDATAITERATOR_H
-#define BORNAGAIN_CORE_INTENSITY_OUTPUTDATAITERATOR_H
+#ifndef BORNAGAIN_DEVICE_DATA_OUTPUTDATAITERATOR_H
+#define BORNAGAIN_DEVICE_DATA_OUTPUTDATAITERATOR_H
 
 #include <cstddef>
 #include <iterator>
@@ -211,4 +211,4 @@ bool operator!=(const OutputDataIterator<TValue1, TContainer1>& left,
     return !(left == right);
 }
 
-#endif // BORNAGAIN_CORE_INTENSITY_OUTPUTDATAITERATOR_H
+#endif // BORNAGAIN_DEVICE_DATA_OUTPUTDATAITERATOR_H
diff --git a/Device/Detector/DetectionProperties.h b/Device/Detector/DetectionProperties.h
index 64f03f8b9fa7a0ba3bdae742f95e06bf728e3a08..3af8862abf4be13d43268f9c8a884a242f4ba733 100644
--- a/Device/Detector/DetectionProperties.h
+++ b/Device/Detector/DetectionProperties.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_DETECTIONPROPERTIES_H
-#define BORNAGAIN_CORE_DETECTOR_DETECTIONPROPERTIES_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_DETECTIONPROPERTIES_H
+#define BORNAGAIN_DEVICE_DETECTOR_DETECTIONPROPERTIES_H
 
 #include "Base/Vector/EigenCore.h"
 #include "Param/Node/INode.h"
@@ -54,4 +54,4 @@ private:
     double m_total_transmission; //!< total transmission of polarization analysis
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_DETECTIONPROPERTIES_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_DETECTIONPROPERTIES_H
diff --git a/Device/Detector/DetectorContext.h b/Device/Detector/DetectorContext.h
index 846e9c35050bdc982db819dc363315344c671ad6..a05f61f3c2d1261cf227799cb9b1b256569a216e 100644
--- a/Device/Detector/DetectorContext.h
+++ b/Device/Detector/DetectorContext.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_DETECTORCONTEXT_H
-#define BORNAGAIN_CORE_DETECTOR_DETECTORCONTEXT_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_DETECTORCONTEXT_H
+#define BORNAGAIN_DEVICE_DETECTOR_DETECTORCONTEXT_H
 
 #include "Base/Pixel/IPixel.h"
 #include "Base/Vector/EigenCore.h"
@@ -47,4 +47,4 @@ private:
     std::vector<size_t> active_indices; //! The sequence of detector bin indices (unmasked, in ROI)
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_DETECTORCONTEXT_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_DETECTORCONTEXT_H
diff --git a/Device/Detector/DetectorMask.h b/Device/Detector/DetectorMask.h
index adf6cb95e62e3833500761b113d8671d4d61979e..237ddc1925e11322b0847e652b18a8dc0d057790 100644
--- a/Device/Detector/DetectorMask.h
+++ b/Device/Detector/DetectorMask.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_DETECTORMASK_H
-#define BORNAGAIN_CORE_DETECTOR_DETECTORMASK_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_DETECTORMASK_H
+#define BORNAGAIN_DEVICE_DETECTOR_DETECTORMASK_H
 
 #include "Device/Data/OutputData.h"
 #include "Device/Mask/IShape2D.h"
@@ -70,4 +70,4 @@ private:
     int m_number_of_masked_channels;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_DETECTORMASK_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_DETECTORMASK_H
diff --git a/Device/Detector/IDetector.h b/Device/Detector/IDetector.h
index 57e3788cd52ddf3d777f70394a0d29df2792d52d..87049a5c6b4f19ffc82d42ea914745b1c806caf1 100644
--- a/Device/Detector/IDetector.h
+++ b/Device/Detector/IDetector.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_IDETECTOR_H
-#define BORNAGAIN_CORE_DETECTOR_IDETECTOR_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_IDETECTOR_H
+#define BORNAGAIN_DEVICE_DETECTOR_IDETECTOR_H
 
 #include "Base/Types/CloneableVector.h"
 #include "Device/Detector/DetectionProperties.h"
@@ -128,4 +128,4 @@ private:
     std::unique_ptr<IDetectorResolution> m_detector_resolution;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_IDETECTOR_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_IDETECTOR_H
diff --git a/Device/Detector/IDetector2D.h b/Device/Detector/IDetector2D.h
index d7ef1fce3140d52ce2ad6ef0857f4c064f6b991e..07da13a34d53bbe37b0f38e7642e9389851fcddb 100644
--- a/Device/Detector/IDetector2D.h
+++ b/Device/Detector/IDetector2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_IDETECTOR2D_H
-#define BORNAGAIN_CORE_DETECTOR_IDETECTOR2D_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_IDETECTOR2D_H
+#define BORNAGAIN_DEVICE_DETECTOR_IDETECTOR2D_H
 
 #include "Device/Detector/DetectorMask.h"
 #include "Device/Detector/IDetector.h"
@@ -90,4 +90,4 @@ private:
     std::unique_ptr<RegionOfInterest> m_region_of_interest;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_IDETECTOR2D_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_IDETECTOR2D_H
diff --git a/Device/Detector/IsGISAXSDetector.h b/Device/Detector/IsGISAXSDetector.h
index da4a8a74cdd0e77ba366f0fa9e15b5d53ab9b12b..d4a6f7efedd8bd8480dbca9af4d6304c88c030c8 100644
--- a/Device/Detector/IsGISAXSDetector.h
+++ b/Device/Detector/IsGISAXSDetector.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_ISGISAXSDETECTOR_H
-#define BORNAGAIN_CORE_DETECTOR_ISGISAXSDETECTOR_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_ISGISAXSDETECTOR_H
+#define BORNAGAIN_DEVICE_DETECTOR_ISGISAXSDETECTOR_H
 
 #include "Device/Detector/SphericalDetector.h"
 
@@ -43,4 +43,4 @@ protected:
     size_t indexOfSpecular(const Beam& beam) const override;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_ISGISAXSDETECTOR_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_ISGISAXSDETECTOR_H
diff --git a/Device/Detector/RectangularDetector.h b/Device/Detector/RectangularDetector.h
index 4cb9e6ab485f2d5f83daa5b83b886d03ab35fbd5..64dd29735bd1facf0908e06ce0123cbda27ae580 100644
--- a/Device/Detector/RectangularDetector.h
+++ b/Device/Detector/RectangularDetector.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_RECTANGULARDETECTOR_H
-#define BORNAGAIN_CORE_DETECTOR_RECTANGULARDETECTOR_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_RECTANGULARDETECTOR_H
+#define BORNAGAIN_DEVICE_DETECTOR_RECTANGULARDETECTOR_H
 
 #include "Device/Detector/IDetector2D.h"
 
@@ -108,4 +108,4 @@ private:
     kvector_t m_v_unit;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_RECTANGULARDETECTOR_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_RECTANGULARDETECTOR_H
diff --git a/Device/Detector/RectangularPixel.h b/Device/Detector/RectangularPixel.h
index 6fc1b938a056c1dee185ec43d0ecad2de00f8ef9..c67b9f418e15a40c2d4241ca34fdf8f2181182e2 100644
--- a/Device/Detector/RectangularPixel.h
+++ b/Device/Detector/RectangularPixel.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_RECTANGULARPIXEL_H
-#define BORNAGAIN_CORE_DETECTOR_RECTANGULARPIXEL_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_RECTANGULARPIXEL_H
+#define BORNAGAIN_DEVICE_DETECTOR_RECTANGULARPIXEL_H
 
 #include "Base/Pixel/IPixel.h"
 
@@ -42,4 +42,4 @@ private:
     mutable double m_solid_angle;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_RECTANGULARPIXEL_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_RECTANGULARPIXEL_H
diff --git a/Device/Detector/RegionOfInterest.h b/Device/Detector/RegionOfInterest.h
index ef12ad7f5705db2643c55c5ec48da2283409f49c..a5bcb48f1b938fad45864fb585866fada1db8907 100644
--- a/Device/Detector/RegionOfInterest.h
+++ b/Device/Detector/RegionOfInterest.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_REGIONOFINTEREST_H
-#define BORNAGAIN_CORE_DETECTOR_REGIONOFINTEREST_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_REGIONOFINTEREST_H
+#define BORNAGAIN_DEVICE_DETECTOR_REGIONOFINTEREST_H
 
 #include "Base/Types/ICloneable.h"
 #include <memory>
@@ -87,4 +87,4 @@ inline size_t RegionOfInterest::ycoord(size_t index, const std::vector<size_t>&
     return index % dims[1];
 }
 
-#endif // BORNAGAIN_CORE_DETECTOR_REGIONOFINTEREST_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_REGIONOFINTEREST_H
diff --git a/Device/Detector/SimpleUnitConverters.cpp b/Device/Detector/SimpleUnitConverters.cpp
index ec848eacb0b72a4bbf832eea6e8835265af946fc..927accd989042b11b24624b9b6b8faab6cdf295a 100644
--- a/Device/Detector/SimpleUnitConverters.cpp
+++ b/Device/Detector/SimpleUnitConverters.cpp
@@ -33,6 +33,10 @@ double getQ(double wavelength, double angle)
 }
 } // namespace
 
+// ************************************************************************** //
+// class UnitConverterSimple
+// ************************************************************************** //
+
 UnitConverterSimple::UnitConverterSimple(const Beam& beam)
     : m_wavelength(beam.getWavelength()), m_alpha_i(-beam.getAlpha()), m_phi_i(beam.getPhi())
 {
@@ -55,9 +59,8 @@ double UnitConverterSimple::calculateMin(size_t i_axis, Axes::Units units_type)
     checkIndex(i_axis);
     units_type = substituteDefaultUnits(units_type);
     const auto& axis_data = m_axis_data_table[i_axis];
-    if (units_type == Axes::Units::NBINS) {
+    if (units_type == Axes::Units::NBINS)
         return 0.0;
-    }
     return calculateValue(i_axis, units_type, axis_data.min);
 }
 
@@ -66,9 +69,8 @@ double UnitConverterSimple::calculateMax(size_t i_axis, Axes::Units units_type)
     checkIndex(i_axis);
     units_type = substituteDefaultUnits(units_type);
     const auto& axis_data = m_axis_data_table[i_axis];
-    if (units_type == Axes::Units::NBINS) {
+    if (units_type == Axes::Units::NBINS)
         return static_cast<double>(axis_data.nbins);
-    }
     return calculateValue(i_axis, units_type, axis_data.max);
 }
 
@@ -104,16 +106,18 @@ void UnitConverterSimple::addDetectorAxis(const IDetector& detector, size_t i_ax
     const auto& axis = detector.getAxis(i_axis);
     const auto* p_roi = detector.regionOfInterest();
     const auto& axis_name = axisName(i_axis);
-    if (p_roi) {
-        auto P_roi_axis = p_roi->clipAxisToRoi(i_axis, axis);
-        addAxisData(axis_name, P_roi_axis->getMin(), P_roi_axis->getMax(), defaultUnits(),
-                    P_roi_axis->size());
-    } else {
+    if (!p_roi) {
         addAxisData(axis_name, axis.getMin(), axis.getMax(), defaultUnits(), axis.size());
+        return;
     }
+    auto P_roi_axis = p_roi->clipAxisToRoi(i_axis, axis);
+    addAxisData(axis_name, P_roi_axis->getMin(), P_roi_axis->getMax(), defaultUnits(),
+                P_roi_axis->size());
 }
 
-/* SphericalConverter **********************************************/
+// ************************************************************************** //
+// class SphericalConverter
+// ************************************************************************** //
 
 SphericalConverter::SphericalConverter(const SphericalDetector& detector, const Beam& beam)
     : UnitConverterSimple(beam)
@@ -195,7 +199,9 @@ std::vector<std::map<Axes::Units, std::string>> SphericalConverter::createNameMa
     return result;
 }
 
-/* RectangularConverter **********************************************/
+// ************************************************************************** //
+// class RectangularConverter
+// ************************************************************************** //
 
 RectangularConverter::RectangularConverter(const RectangularDetector& detector, const Beam& beam)
     : UnitConverterSimple(beam)
@@ -252,22 +258,20 @@ double RectangularConverter::calculateValue(size_t i_axis, Axes::Units units_typ
         return Units::rad2deg(axisAngle(i_axis, k_f));
     case Axes::Units::QSPACE: {
         const auto k_i = vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i, m_phi_i);
-        if (i_axis == 0) {
+        if (i_axis == 0)
             return (k_i - k_f).y();
-        } else if (i_axis == 1) {
+        if (i_axis == 1)
             return (k_f - k_i).z();
-        }
         throw std::runtime_error("Error in RectangularConverter::calculateValue: "
                                  "incorrect axis index: "
                                  + std::to_string(static_cast<int>(i_axis)));
     }
     case Axes::Units::QXQY: {
         const auto k_i = vecOfLambdaAlphaPhi(m_wavelength, m_alpha_i, m_phi_i);
-        if (i_axis == 0) {
+        if (i_axis == 0)
             return (k_i - k_f).y();
-        } else if (i_axis == 1) {
+        if (i_axis == 1)
             return (k_f - k_i).x();
-        }
         throw std::runtime_error("Error in RectangularConverter::calculateValue: "
                                  "incorrect axis index: "
                                  + std::to_string(static_cast<int>(i_axis)));
@@ -296,17 +300,18 @@ kvector_t RectangularConverter::normalizeToWavelength(kvector_t vector) const
 
 double RectangularConverter::axisAngle(size_t i_axis, kvector_t k_f) const
 {
-    if (i_axis == 0) {
+    if (i_axis == 0)
         return k_f.phi();
-    } else if (i_axis == 1) {
+    if (i_axis == 1)
         return M_PI_2 - k_f.theta();
-    }
     throw std::runtime_error("Error in RectangularConverter::axisAngle: "
                              "incorrect axis index: "
                              + std::to_string(static_cast<int>(i_axis)));
 }
 
-/* OffSpecularConverter **********************************************/
+// ************************************************************************** //
+// class OffSpecularConverter
+// ************************************************************************** //
 
 OffSpecularConverter::OffSpecularConverter(const IDetector2D& detector, const Beam& beam,
                                            const IAxis& alpha_axis)
@@ -389,7 +394,9 @@ void OffSpecularConverter::addDetectorYAxis(const IDetector2D& detector)
     }
 }
 
-/* DepthProbeConverter **********************************************/
+// ************************************************************************** //
+// class DepthProbeConverter
+// ************************************************************************** //
 
 const std::string z_axis_name = "Position [nm]";
 
diff --git a/Device/Detector/SimpleUnitConverters.h b/Device/Detector/SimpleUnitConverters.h
index fa2f1ac32475569f2b6f21c38f8b9daa7f3a180e..40a10c4a47533ff070f684e1f97a7976062a29ef 100644
--- a/Device/Detector/SimpleUnitConverters.h
+++ b/Device/Detector/SimpleUnitConverters.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_SIMPLEUNITCONVERTERS_H
-#define BORNAGAIN_CORE_INTENSITY_SIMPLEUNITCONVERTERS_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SIMPLEUNITCONVERTERS_H
+#define BORNAGAIN_DEVICE_DETECTOR_SIMPLEUNITCONVERTERS_H
 
 #include "Base/Vector/Vectors3D.h"
 #include "Device/Unit/IUnitConverter.h"
@@ -165,4 +165,4 @@ private:
     void checkUnits(Axes::Units units_type) const;
 };
 
-#endif // BORNAGAIN_CORE_INTENSITY_SIMPLEUNITCONVERTERS_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SIMPLEUNITCONVERTERS_H
diff --git a/Device/Detector/SimulationArea.h b/Device/Detector/SimulationArea.h
index b49141152df0e3b7f5d1677d52d4048e9feda0a0..6419bb243cac576fbcaea31455d20fa2e0049a23 100644
--- a/Device/Detector/SimulationArea.h
+++ b/Device/Detector/SimulationArea.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SIMULATIONAREA_H
-#define BORNAGAIN_CORE_DETECTOR_SIMULATIONAREA_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREA_H
+#define BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREA_H
 
 #include "Device/Detector/SimulationAreaIterator.h"
 
@@ -66,4 +66,4 @@ public:
     virtual bool isMasked(size_t) const;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_SIMULATIONAREA_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREA_H
diff --git a/Device/Detector/SimulationAreaIterator.h b/Device/Detector/SimulationAreaIterator.h
index f6fdf69600336d90993feefcdc34319c37fbcf88..f04d0aa72e07b37f62f92525c3c329f60846c7c5 100644
--- a/Device/Detector/SimulationAreaIterator.h
+++ b/Device/Detector/SimulationAreaIterator.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SIMULATIONAREAITERATOR_H
-#define BORNAGAIN_CORE_DETECTOR_SIMULATIONAREAITERATOR_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREAITERATOR_H
+#define BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREAITERATOR_H
 
 #include <cstdlib>
 class SimulationArea;
@@ -57,4 +57,4 @@ inline bool SimulationAreaIterator::operator!=(const SimulationAreaIterator& rig
     return !(*this == right);
 }
 
-#endif // BORNAGAIN_CORE_DETECTOR_SIMULATIONAREAITERATOR_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SIMULATIONAREAITERATOR_H
diff --git a/Device/Detector/SpecularDetector1D.h b/Device/Detector/SpecularDetector1D.h
index fbd995e7b0d6874803ae867c00010cea70b26b2d..b24ed89ef60068a6984a38359c1ad3cada99611c 100644
--- a/Device/Detector/SpecularDetector1D.h
+++ b/Device/Detector/SpecularDetector1D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SPECULARDETECTOR1D_H
-#define BORNAGAIN_CORE_DETECTOR_SPECULARDETECTOR1D_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SPECULARDETECTOR1D_H
+#define BORNAGAIN_DEVICE_DETECTOR_SPECULARDETECTOR1D_H
 
 #include "Device/Detector/IDetector.h"
 
@@ -52,4 +52,4 @@ protected:
     void initialize();
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_SPECULARDETECTOR1D_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SPECULARDETECTOR1D_H
diff --git a/Device/Detector/SphericalDetector.h b/Device/Detector/SphericalDetector.h
index ea6fdbd5ed4e8fd8922a6b26e1a34a176587796e..3186b0d3f5d29ddf9318204c311b7fc4deb616ee 100644
--- a/Device/Detector/SphericalDetector.h
+++ b/Device/Detector/SphericalDetector.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SPHERICALDETECTOR_H
-#define BORNAGAIN_CORE_DETECTOR_SPHERICALDETECTOR_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SPHERICALDETECTOR_H
+#define BORNAGAIN_DEVICE_DETECTOR_SPHERICALDETECTOR_H
 
 #include "Device/Detector/IDetector2D.h"
 
@@ -62,4 +62,4 @@ protected:
     size_t indexOfSpecular(const Beam& beam) const override;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_SPHERICALDETECTOR_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SPHERICALDETECTOR_H
diff --git a/Device/Detector/SphericalPixel.h b/Device/Detector/SphericalPixel.h
index 27a2b859c3556b70e1800425b9dc3d8ea7948458..7e23334c824e58c9c7c1fc12740fce0ad24727b1 100644
--- a/Device/Detector/SphericalPixel.h
+++ b/Device/Detector/SphericalPixel.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SPHERICALPIXEL_H
-#define BORNAGAIN_CORE_DETECTOR_SPHERICALPIXEL_H
+#ifndef BORNAGAIN_DEVICE_DETECTOR_SPHERICALPIXEL_H
+#define BORNAGAIN_DEVICE_DETECTOR_SPHERICALPIXEL_H
 
 #include "Base/Pixel/IPixel.h"
 
@@ -40,4 +40,4 @@ private:
     mutable double m_solid_angle;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_SPHERICALPIXEL_H
+#endif // BORNAGAIN_DEVICE_DETECTOR_SPHERICALPIXEL_H
diff --git a/Device/Histo/Histogram1D.h b/Device/Histo/Histogram1D.h
index 48b0dd2fbb68e339d575ac57cecb6042bb031655..723ef812f1daf271a6cafb3b3aa0dc6328f3aee5 100644
--- a/Device/Histo/Histogram1D.h
+++ b/Device/Histo/Histogram1D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_HISTOGRAM1D_H
-#define BORNAGAIN_CORE_INTENSITY_HISTOGRAM1D_H
+#ifndef BORNAGAIN_DEVICE_HISTO_HISTOGRAM1D_H
+#define BORNAGAIN_DEVICE_HISTO_HISTOGRAM1D_H
 
 #include "Device/Histo/IHistogram.h"
 
@@ -69,4 +69,4 @@ public:
     Histogram1D* crop(double xmin, double xmax);
 };
 
-#endif // BORNAGAIN_CORE_INTENSITY_HISTOGRAM1D_H
+#endif // BORNAGAIN_DEVICE_HISTO_HISTOGRAM1D_H
diff --git a/Device/Histo/Histogram2D.h b/Device/Histo/Histogram2D.h
index abb8eeabc6dddfcf7b26b0a65ba1eecf21096300..f3db774f0259c8e87080fb609071883911484b78 100644
--- a/Device/Histo/Histogram2D.h
+++ b/Device/Histo/Histogram2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_HISTOGRAM2D_H
-#define BORNAGAIN_CORE_INTENSITY_HISTOGRAM2D_H
+#ifndef BORNAGAIN_DEVICE_HISTO_HISTOGRAM2D_H
+#define BORNAGAIN_DEVICE_HISTO_HISTOGRAM2D_H
 
 #include "Device/Histo/IHistogram.h"
 #include "Device/Intensity/ArrayUtils.h"
@@ -126,4 +126,4 @@ template <typename T> void Histogram2D::initFromShape(const T& data)
     m_data.addAxis(FixedBinAxis("y-axis", nrows, 0.0, static_cast<double>(nrows)));
 }
 
-#endif // BORNAGAIN_CORE_INTENSITY_HISTOGRAM2D_H
+#endif // BORNAGAIN_DEVICE_HISTO_HISTOGRAM2D_H
diff --git a/Device/Histo/IHistogram.h b/Device/Histo/IHistogram.h
index 974adcafea29d04a4d2ecfd8c9d97bb645bf082f..f27aeef472ca6ebcae599a105ce3f8fc8483cf53 100644
--- a/Device/Histo/IHistogram.h
+++ b/Device/Histo/IHistogram.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_IHISTOGRAM_H
-#define BORNAGAIN_CORE_INTENSITY_IHISTOGRAM_H
+#ifndef BORNAGAIN_DEVICE_HISTO_IHISTOGRAM_H
+#define BORNAGAIN_DEVICE_HISTO_IHISTOGRAM_H
 
 #include "Device/Data/CumulativeValue.h"
 #include "Device/Data/OutputData.h"
@@ -193,4 +193,4 @@ protected:
     OutputData<CumulativeValue> m_data;
 };
 
-#endif // BORNAGAIN_CORE_INTENSITY_IHISTOGRAM_H
+#endif // BORNAGAIN_DEVICE_HISTO_IHISTOGRAM_H
diff --git a/Device/Histo/IntensityDataIOFactory.h b/Device/Histo/IntensityDataIOFactory.h
index 9c757d3023eddd9fb2db922275ca9a8c8ce76e42..e4648d2deb1dcc869c22f1eab6961b9349bf8e7a 100644
--- a/Device/Histo/IntensityDataIOFactory.h
+++ b/Device/Histo/IntensityDataIOFactory.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_INTENSITYDATAIOFACTORY_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_INTENSITYDATAIOFACTORY_H
+#ifndef BORNAGAIN_DEVICE_HISTO_INTENSITYDATAIOFACTORY_H
+#define BORNAGAIN_DEVICE_HISTO_INTENSITYDATAIOFACTORY_H
 
 #include <string>
 
@@ -63,4 +63,4 @@ public:
     static void writeSimulationResult(const SimulationResult& result, const std::string& file_name);
 };
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_INTENSITYDATAIOFACTORY_H
+#endif // BORNAGAIN_DEVICE_HISTO_INTENSITYDATAIOFACTORY_H
diff --git a/Device/Histo/SimulationResult.h b/Device/Histo/SimulationResult.h
index 97d009ebd3ae3b9096325696c33cf573f4d473b0..dee399c5d593150de6f4c23b49e5bc08e9432d3c 100644
--- a/Device/Histo/SimulationResult.h
+++ b/Device/Histo/SimulationResult.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_SIMULATIONRESULT_H
-#define BORNAGAIN_CORE_INSTRUMENT_SIMULATIONRESULT_H
+#ifndef BORNAGAIN_DEVICE_HISTO_SIMULATIONRESULT_H
+#define BORNAGAIN_DEVICE_HISTO_SIMULATIONRESULT_H
 
 #include "Base/Utils/PyObject.h"
 #include "Device/Unit/IUnitConverter.h"
@@ -49,9 +49,7 @@ public:
 #endif
 
     SimulationResult& operator=(const SimulationResult& other);
-#ifndef SWIG
     SimulationResult& operator=(SimulationResult&& other);
-#endif
 
 #ifndef SWIG
     std::unique_ptr<OutputData<double>> data(Axes::Units units = Axes::Units::DEFAULT) const;
@@ -84,8 +82,9 @@ public:
 
 private:
     void checkDimensions() const;
+
     std::unique_ptr<OutputData<double>> m_data;
     std::unique_ptr<IUnitConverter> m_unit_converter;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_SIMULATIONRESULT_H
+#endif // BORNAGAIN_DEVICE_HISTO_SIMULATIONRESULT_H
diff --git a/Device/InputOutput/DataFormatUtils.h b/Device/InputOutput/DataFormatUtils.h
index 6172fe968a9f661cd9d517befd520f9c0ca981e6..a8e001ae745c7edf7c8a561ae758c8c9fc0926f6 100644
--- a/Device/InputOutput/DataFormatUtils.h
+++ b/Device/InputOutput/DataFormatUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_DATAFORMATUTILS_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_DATAFORMATUTILS_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_DATAFORMATUTILS_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_DATAFORMATUTILS_H
 
 #include <memory>
 #include <string>
@@ -53,4 +53,4 @@ std::vector<double> parse_doubles(const std::string& str);
 void readLineOfDoubles(std::vector<double>& buffer, std::istringstream& iss);
 } // namespace DataFormatUtils
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_DATAFORMATUTILS_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_DATAFORMATUTILS_H
diff --git a/Device/InputOutput/OutputDataReadFactory.h b/Device/InputOutput/OutputDataReadFactory.h
index 4d27bd5b6dcf31e00d5cea0785455764e1bf60e5..cd154cfc4f9b5f9c8b3498a284a114ab50025fc5 100644
--- a/Device/InputOutput/OutputDataReadFactory.h
+++ b/Device/InputOutput/OutputDataReadFactory.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
 
 #include "Device/InputOutput/OutputDataReader.h"
 
@@ -30,4 +30,4 @@ private:
     static IOutputDataReadStrategy* getReadStrategy(const std::string& file_name);
 };
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADFACTORY_H
diff --git a/Device/InputOutput/OutputDataReadStrategy.h b/Device/InputOutput/OutputDataReadStrategy.h
index 0eeda75002f89e324179bdfe6f873a4a737f94ce..07a57fc273e53dc84c80b4c8ebba7dcb47bc97fc 100644
--- a/Device/InputOutput/OutputDataReadStrategy.h
+++ b/Device/InputOutput/OutputDataReadStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
 
 #include <istream>
 
@@ -75,4 +75,4 @@ private:
 };
 #endif // BORNAGAIN_TIFF_SUPPORT
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADSTRATEGY_H
diff --git a/Device/InputOutput/OutputDataReader.h b/Device/InputOutput/OutputDataReader.h
index 80de5a5a52dc45b9a8310029ff64f1105e931696..688d6de7282fe7b9f7c498eef91d0f67e607542d 100644
--- a/Device/InputOutput/OutputDataReader.h
+++ b/Device/InputOutput/OutputDataReader.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADER_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADER_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADER_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADER_H
 
 #include "Device/InputOutput/OutputDataReadStrategy.h"
 #include <memory>
@@ -39,4 +39,4 @@ private:
     std::unique_ptr<IOutputDataReadStrategy> m_read_strategy;
 };
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAREADER_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAREADER_H
diff --git a/Device/InputOutput/OutputDataWriteFactory.h b/Device/InputOutput/OutputDataWriteFactory.h
index bd671675089dbab8f761f73cd3d2898a0240dd8f..335e82a10ad42ec041905cad93dc2f32f3cf99db 100644
--- a/Device/InputOutput/OutputDataWriteFactory.h
+++ b/Device/InputOutput/OutputDataWriteFactory.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
 
 #include "Device/InputOutput/OutputDataWriter.h"
 
@@ -29,4 +29,4 @@ private:
     static IOutputDataWriteStrategy* getWriteStrategy(const std::string& file_name);
 };
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITEFACTORY_H
diff --git a/Device/InputOutput/OutputDataWriteStrategy.h b/Device/InputOutput/OutputDataWriteStrategy.h
index eb70b33910a5073558a5efdd9ed8ac086f7fcd83..e38b0d4e9c223b5ab5f2954c14d671fb2fba21aa 100644
--- a/Device/InputOutput/OutputDataWriteStrategy.h
+++ b/Device/InputOutput/OutputDataWriteStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
 
 #include <istream>
 
@@ -69,4 +69,4 @@ private:
 
 #endif // BORNAGAIN_TIFF_SUPPORT
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITESTRATEGY_H
diff --git a/Device/InputOutput/OutputDataWriter.h b/Device/InputOutput/OutputDataWriter.h
index 924b55e9185277d1d9b6830deb5f4a3eea72019d..4beadbedf88d937029e40928a97490b6a7ee7696 100644
--- a/Device/InputOutput/OutputDataWriter.h
+++ b/Device/InputOutput/OutputDataWriter.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITER_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITER_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITER_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITER_H
 
 #include "Device/InputOutput/OutputDataWriteStrategy.h"
 #include <memory>
@@ -39,4 +39,4 @@ private:
     std::unique_ptr<IOutputDataWriteStrategy> m_write_strategy;
 };
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_OUTPUTDATAWRITER_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_OUTPUTDATAWRITER_H
diff --git a/Device/InputOutput/TiffHandler.h b/Device/InputOutput/TiffHandler.h
index 9776d9a1727b6c1f8b2807ce92bb92e918311e7b..b61318e413183720687eb0cc9d51537d4d16b55d 100644
--- a/Device/InputOutput/TiffHandler.h
+++ b/Device/InputOutput/TiffHandler.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_TIFFHANDLER_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_TIFFHANDLER_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_TIFFHANDLER_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_TIFFHANDLER_H
 
 #ifdef BORNAGAIN_TIFF_SUPPORT
 
@@ -52,4 +52,4 @@ private:
 
 #endif // BORNAGAIN_TIFF_SUPPORT
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_TIFFHANDLER_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_TIFFHANDLER_H
diff --git a/Device/InputOutput/boost_streams.h b/Device/InputOutput/boost_streams.h
index 699aa7c655d4a5132812ef3fbe05e936c33430df..9202f843bf347ec367ea465741462fd7be06cd9b 100644
--- a/Device/InputOutput/boost_streams.h
+++ b/Device/InputOutput/boost_streams.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INPUTOUTPUT_BOOST_STREAMS_H
-#define BORNAGAIN_CORE_INPUTOUTPUT_BOOST_STREAMS_H
+#ifndef BORNAGAIN_DEVICE_INPUTOUTPUT_BOOST_STREAMS_H
+#define BORNAGAIN_DEVICE_INPUTOUTPUT_BOOST_STREAMS_H
 
 #include <boost/iostreams/copy.hpp>
 #include <boost/iostreams/filtering_stream.hpp>
@@ -27,4 +27,4 @@
 #pragma warning(pop)
 #endif
 
-#endif // BORNAGAIN_CORE_INPUTOUTPUT_BOOST_STREAMS_H
+#endif // BORNAGAIN_DEVICE_INPUTOUTPUT_BOOST_STREAMS_H
diff --git a/Device/Instrument/ChiSquaredModule.h b/Device/Instrument/ChiSquaredModule.h
index d86b3a442bd6794e369049dd5e5753dd24451edf..c4086c112e950a7537bad2e531536ce597dc75a9 100644
--- a/Device/Instrument/ChiSquaredModule.h
+++ b/Device/Instrument/ChiSquaredModule.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_CHISQUAREDMODULE_H
-#define BORNAGAIN_CORE_INSTRUMENT_CHISQUAREDMODULE_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_CHISQUAREDMODULE_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_CHISQUAREDMODULE_H
 
 #include "Device/Instrument/IChiSquaredModule.h"
 
@@ -32,4 +32,4 @@ public:
     virtual double residual(double a, double b, double weight);
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_CHISQUAREDMODULE_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_CHISQUAREDMODULE_H
diff --git a/Device/Instrument/FourierTransform.h b/Device/Instrument/FourierTransform.h
index 7adfe6209b0559fb6cf6bf9fb0a8b5df43e0d356..31a9c152e411a32dcaeb325fd7fd07afb4dc64d0 100644
--- a/Device/Instrument/FourierTransform.h
+++ b/Device/Instrument/FourierTransform.h
@@ -13,8 +13,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_FOURIERTRANSFORM_H
-#define BORNAGAIN_CORE_INSTRUMENT_FOURIERTRANSFORM_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_FOURIERTRANSFORM_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_FOURIERTRANSFORM_H
 
 #include <fftw3.h>
 #include <vector>
@@ -91,4 +91,4 @@ private:
     Workspace ws;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_FOURIERTRANSFORM_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_FOURIERTRANSFORM_H
diff --git a/Device/Instrument/IChiSquaredModule.h b/Device/Instrument/IChiSquaredModule.h
index 0dd95cc0777fa50d2f57ae85ea6a6cc2bf3f5fe9..8be5212e258cad5ad1832e9a2475b24baade0bf1 100644
--- a/Device/Instrument/IChiSquaredModule.h
+++ b/Device/Instrument/IChiSquaredModule.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_ICHISQUAREDMODULE_H
-#define BORNAGAIN_CORE_INSTRUMENT_ICHISQUAREDMODULE_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_ICHISQUAREDMODULE_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_ICHISQUAREDMODULE_H
 
 #include "Base/Types/ICloneable.h"
 #include <memory>
@@ -54,4 +54,4 @@ protected:
     std::unique_ptr<IIntensityFunction> m_intensity_function;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_ICHISQUAREDMODULE_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_ICHISQUAREDMODULE_H
diff --git a/Device/Instrument/Instrument.h b/Device/Instrument/Instrument.h
index 0fa54a173228c454b667545442c2b554f705d894..fea83b481164d712ecd169318e0b75ebc3c2ac01 100644
--- a/Device/Instrument/Instrument.h
+++ b/Device/Instrument/Instrument.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_INSTRUMENT_H
-#define BORNAGAIN_CORE_INSTRUMENT_INSTRUMENT_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H
 
 #include "Device/Beam/Beam.h"
 #include <memory>
@@ -94,4 +94,4 @@ protected:
     Beam m_beam;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_INSTRUMENT_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_INSTRUMENT_H
diff --git a/Device/Instrument/IntensityDataFunctions.h b/Device/Instrument/IntensityDataFunctions.h
index 5aa79fbd26b2b580d69d6c50c46adffb4c155d9d..3f66e25ba2a44e81a3ac28e0c0d44b326705ff58 100644
--- a/Device/Instrument/IntensityDataFunctions.h
+++ b/Device/Instrument/IntensityDataFunctions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_INTENSITYDATAFUNCTIONS_H
-#define BORNAGAIN_CORE_INTENSITY_INTENSITYDATAFUNCTIONS_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_INTENSITYDATAFUNCTIONS_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_INTENSITYDATAFUNCTIONS_H
 
 #include "Device/Data/OutputData.h"
 #include <memory>
@@ -84,4 +84,4 @@ std::unique_ptr<OutputData<double>> createFFT(const OutputData<double>& data);
 
 }; // namespace IntensityDataFunctions
 
-#endif // BORNAGAIN_CORE_INTENSITY_INTENSITYDATAFUNCTIONS_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_INTENSITYDATAFUNCTIONS_H
diff --git a/Device/Instrument/PyArrayImportUtils.h b/Device/Instrument/PyArrayImportUtils.h
index c59509cb2e1beff5d911229aafdda9c5b654fb8c..23becfda818c7aed0cf3272662aa86c259bc64b2 100644
--- a/Device/Instrument/PyArrayImportUtils.h
+++ b/Device/Instrument/PyArrayImportUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_PYARRAYIMPORTUTILS_H
-#define BORNAGAIN_CORE_INSTRUMENT_PYARRAYIMPORTUTILS_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_PYARRAYIMPORTUTILS_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_PYARRAYIMPORTUTILS_H
 
 #include <vector>
 
@@ -32,4 +32,4 @@ OutputData<double>* importArrayToOutputData(const std::vector<std::vector<double
 
 } // namespace PyArrayImport
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_PYARRAYIMPORTUTILS_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_PYARRAYIMPORTUTILS_H
diff --git a/Device/Instrument/PyFmt2.h b/Device/Instrument/PyFmt2.h
index 08ad87d23ff16a5a479798c19d0f4024cffc329c..266dc95736ae0124be08952e8466a5a4885089fa 100644
--- a/Device/Instrument/PyFmt2.h
+++ b/Device/Instrument/PyFmt2.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PYIO_PYTHONFORMATTING_H
-#define BORNAGAIN_CORE_PYIO_PYTHONFORMATTING_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_PYFMT2_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_PYFMT2_H
 
 #include <functional>
 #include <string>
@@ -42,4 +42,4 @@ std::string printParameterDistribution(const ParameterDistribution& par_distr,
                                        const std::string& units = "");
 } // namespace pyfmt2
 
-#endif // BORNAGAIN_CORE_PYIO_PYTHONFORMATTING_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_PYFMT2_H
diff --git a/Device/Instrument/SpectrumUtils.h b/Device/Instrument/SpectrumUtils.h
index e2d2bf82f91aa9baa35cc1149b3dc0e1920da43c..4630f2348743ea2423250174ec68c119ec3f4c67 100644
--- a/Device/Instrument/SpectrumUtils.h
+++ b/Device/Instrument/SpectrumUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_SPECTRUMUTILS_H
-#define BORNAGAIN_CORE_INSTRUMENT_SPECTRUMUTILS_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_SPECTRUMUTILS_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_SPECTRUMUTILS_H
 
 #include "Device/Histo/Histogram2D.h"
 #include <string>
@@ -31,4 +31,4 @@ std::vector<std::pair<double, double>> FindPeaks(const Histogram2D& hist, double
                                                  double threshold = 0.05);
 }
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_SPECTRUMUTILS_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_SPECTRUMUTILS_H
diff --git a/Device/Instrument/VarianceFunctions.h b/Device/Instrument/VarianceFunctions.h
index ef060f08a4974941d6ac8db641dd69c6acea6b87..9e68f2d3ce5b6843cc805ec40c008e219c57b04d 100644
--- a/Device/Instrument/VarianceFunctions.h
+++ b/Device/Instrument/VarianceFunctions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INSTRUMENT_VARIANCEFUNCTIONS_H
-#define BORNAGAIN_CORE_INSTRUMENT_VARIANCEFUNCTIONS_H
+#ifndef BORNAGAIN_DEVICE_INSTRUMENT_VARIANCEFUNCTIONS_H
+#define BORNAGAIN_DEVICE_INSTRUMENT_VARIANCEFUNCTIONS_H
 
 //! Variance function interface.
 //! @ingroup fitting_internal
@@ -54,4 +54,4 @@ private:
     double m_epsilon;
 };
 
-#endif // BORNAGAIN_CORE_INSTRUMENT_VARIANCEFUNCTIONS_H
+#endif // BORNAGAIN_DEVICE_INSTRUMENT_VARIANCEFUNCTIONS_H
diff --git a/Device/Intensity/ArrayUtils.h b/Device/Intensity/ArrayUtils.h
index 8caa05aa6e79daab8e15d2102b83701f9c38ccc3..ea9615f6ef7a3e578135b7e0ae9626b425040739 100644
--- a/Device/Intensity/ArrayUtils.h
+++ b/Device/Intensity/ArrayUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_ARRAYUTILS_H
-#define BORNAGAIN_CORE_INTENSITY_ARRAYUTILS_H
+#ifndef BORNAGAIN_DEVICE_INTENSITY_ARRAYUTILS_H
+#define BORNAGAIN_DEVICE_INTENSITY_ARRAYUTILS_H
 
 #include "Device/Data/OutputData.h"
 #include <memory>
@@ -164,4 +164,4 @@ template <class T> decltype(auto) ArrayUtils::createVector2D(const T& data)
     return result;
 }
 
-#endif // BORNAGAIN_CORE_INTENSITY_ARRAYUTILS_H
+#endif // BORNAGAIN_DEVICE_INTENSITY_ARRAYUTILS_H
diff --git a/Device/Intensity/IIntensityFunction.h b/Device/Intensity/IIntensityFunction.h
index 430fb7293f1aff8666df7729e833f815f0b13d60..1f5a57f80ec981f94d1d635b6b5fd16e761dfe95 100644
--- a/Device/Intensity/IIntensityFunction.h
+++ b/Device/Intensity/IIntensityFunction.h
@@ -13,8 +13,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_IINTENSITYFUNCTION_H
-#define BORNAGAIN_CORE_INTENSITY_IINTENSITYFUNCTION_H
+#ifndef BORNAGAIN_DEVICE_INTENSITY_IINTENSITYFUNCTION_H
+#define BORNAGAIN_DEVICE_INTENSITY_IINTENSITYFUNCTION_H
 
 //! Interface for applying arbitrary function to the measured intensity.
 //! @ingroup algorithms_internal
@@ -47,4 +47,4 @@ public:
     virtual double evaluate(double value) const;
 };
 
-#endif // BORNAGAIN_CORE_INTENSITY_IINTENSITYFUNCTION_H
+#endif // BORNAGAIN_DEVICE_INTENSITY_IINTENSITYFUNCTION_H
diff --git a/Device/Mask/Ellipse.h b/Device/Mask/Ellipse.h
index 8712dd389f008a4ec183b8997516aba77eeaf572..87cf61e3745f9c992ba93455ea9a0db0cacdc279 100644
--- a/Device/Mask/Ellipse.h
+++ b/Device/Mask/Ellipse.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_ELLIPSE_H
-#define BORNAGAIN_CORE_MASK_ELLIPSE_H
+#ifndef BORNAGAIN_DEVICE_MASK_ELLIPSE_H
+#define BORNAGAIN_DEVICE_MASK_ELLIPSE_H
 
 #include "Device/Mask/IShape2D.h"
 
@@ -39,4 +39,4 @@ private:
     double m_xc, m_yc, m_xr, m_yr, m_theta;
 };
 
-#endif // BORNAGAIN_CORE_MASK_ELLIPSE_H
+#endif // BORNAGAIN_DEVICE_MASK_ELLIPSE_H
diff --git a/Device/Mask/IShape2D.h b/Device/Mask/IShape2D.h
index af1951183dfdf559890de30d3982b767ba9af8f1..aba831b41393b26f2a9515419249038a0ca413d5 100644
--- a/Device/Mask/IShape2D.h
+++ b/Device/Mask/IShape2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_ISHAPE2D_H
-#define BORNAGAIN_CORE_MASK_ISHAPE2D_H
+#ifndef BORNAGAIN_DEVICE_MASK_ISHAPE2D_H
+#define BORNAGAIN_DEVICE_MASK_ISHAPE2D_H
 
 #include "Base/Types/ICloneable.h"
 #include <iostream>
@@ -49,4 +49,4 @@ private:
     const char* const m_name;
 };
 
-#endif // BORNAGAIN_CORE_MASK_ISHAPE2D_H
+#endif // BORNAGAIN_DEVICE_MASK_ISHAPE2D_H
diff --git a/Device/Mask/InfinitePlane.h b/Device/Mask/InfinitePlane.h
index 1de5eb920399d105905aab80246ee9de2808c730..02df9e3121de28c0bb87e742f2900e9b2d4a80fb 100644
--- a/Device/Mask/InfinitePlane.h
+++ b/Device/Mask/InfinitePlane.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_INFINITEPLANE_H
-#define BORNAGAIN_CORE_MASK_INFINITEPLANE_H
+#ifndef BORNAGAIN_DEVICE_MASK_INFINITEPLANE_H
+#define BORNAGAIN_DEVICE_MASK_INFINITEPLANE_H
 
 #include "Device/Mask/IShape2D.h"
 
@@ -30,4 +30,4 @@ public:
     bool contains(const Bin1D&, const Bin1D&) const { return true; }
 };
 
-#endif // BORNAGAIN_CORE_MASK_INFINITEPLANE_H
+#endif // BORNAGAIN_DEVICE_MASK_INFINITEPLANE_H
diff --git a/Device/Mask/Line.h b/Device/Mask/Line.h
index 263e49be893ce71c451f8bffad47ce931d87361b..583895ec902001beefda202084c81f3350e5cbd5 100644
--- a/Device/Mask/Line.h
+++ b/Device/Mask/Line.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_LINE_H
-#define BORNAGAIN_CORE_MASK_LINE_H
+#ifndef BORNAGAIN_DEVICE_MASK_LINE_H
+#define BORNAGAIN_DEVICE_MASK_LINE_H
 
 #include "Device/Mask/IShape2D.h"
 
@@ -69,4 +69,4 @@ private:
     double m_y;
 };
 
-#endif // BORNAGAIN_CORE_MASK_LINE_H
+#endif // BORNAGAIN_DEVICE_MASK_LINE_H
diff --git a/Device/Mask/Polygon.h b/Device/Mask/Polygon.h
index 3c6abba5794635ddc3d7f9d4c7fcaa531936e4e4..b13475a2ce410af5b519820d2b8ae49acc274be2 100644
--- a/Device/Mask/Polygon.h
+++ b/Device/Mask/Polygon.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_POLYGON_H
-#define BORNAGAIN_CORE_MASK_POLYGON_H
+#ifndef BORNAGAIN_DEVICE_MASK_POLYGON_H
+#define BORNAGAIN_DEVICE_MASK_POLYGON_H
 
 #include "Device/Mask/IShape2D.h"
 #include <vector>
@@ -52,4 +52,4 @@ private:
     PolygonPrivate* m_d;
 };
 
-#endif // BORNAGAIN_CORE_MASK_POLYGON_H
+#endif // BORNAGAIN_DEVICE_MASK_POLYGON_H
diff --git a/Device/Mask/Rectangle.h b/Device/Mask/Rectangle.h
index 30b1a194d1a801dc8cbbd8264152a81bd3ac2122..fa3446c8e0c27e17167b0a37699df03c417bf80d 100644
--- a/Device/Mask/Rectangle.h
+++ b/Device/Mask/Rectangle.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MASK_RECTANGLE_H
-#define BORNAGAIN_CORE_MASK_RECTANGLE_H
+#ifndef BORNAGAIN_DEVICE_MASK_RECTANGLE_H
+#define BORNAGAIN_DEVICE_MASK_RECTANGLE_H
 
 #include "Device/Mask/IShape2D.h"
 
@@ -40,4 +40,4 @@ private:
     double m_xlow, m_ylow, m_xup, m_yup;
 };
 
-#endif // BORNAGAIN_CORE_MASK_RECTANGLE_H
+#endif // BORNAGAIN_DEVICE_MASK_RECTANGLE_H
diff --git a/Device/Resolution/ConvolutionDetectorResolution.h b/Device/Resolution/ConvolutionDetectorResolution.h
index 9fce46e2e514821b4658491b1a98e5b0abe09b95..97f6f800ec8fe3ae28b06cc17dee6249f8156d37 100644
--- a/Device/Resolution/ConvolutionDetectorResolution.h
+++ b/Device/Resolution/ConvolutionDetectorResolution.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_CONVOLUTIONDETECTORRESOLUTION_H
-#define BORNAGAIN_CORE_DETECTOR_CONVOLUTIONDETECTORRESOLUTION_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_CONVOLUTIONDETECTORRESOLUTION_H
+#define BORNAGAIN_DEVICE_RESOLUTION_CONVOLUTIONDETECTORRESOLUTION_H
 
 #include "Device/Resolution/IDetectorResolution.h"
 #include "Device/Resolution/IResolutionFunction2D.h"
@@ -67,4 +67,4 @@ inline const IResolutionFunction2D* ConvolutionDetectorResolution::getResolution
     return m_res_function_2d.get();
 }
 
-#endif // BORNAGAIN_CORE_DETECTOR_CONVOLUTIONDETECTORRESOLUTION_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_CONVOLUTIONDETECTORRESOLUTION_H
diff --git a/Device/Resolution/Convolve.h b/Device/Resolution/Convolve.h
index ee4157a5703b1c43849a5d4fa5a191ba12f4537f..93937d9917a124f7e5b421df46bd2c6fe1267602 100644
--- a/Device/Resolution/Convolve.h
+++ b/Device/Resolution/Convolve.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_CONVOLVE_H
-#define BORNAGAIN_CORE_DETECTOR_CONVOLVE_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_CONVOLVE_H
+#define BORNAGAIN_DEVICE_RESOLUTION_CONVOLVE_H
 
 #include <fftw3.h>
 #include <vector>
@@ -119,4 +119,4 @@ private:
     std::vector<size_t> m_implemented_factors; // favorite factorization terms of fftw3
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_CONVOLVE_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_CONVOLVE_H
diff --git a/Device/Resolution/IDetectorResolution.h b/Device/Resolution/IDetectorResolution.h
index e2d9d5ff6e4feba2e1a7c8aab277f9fcdf4b9919..925ecb08d68a4d128925d03120010e734923eac2 100644
--- a/Device/Resolution/IDetectorResolution.h
+++ b/Device/Resolution/IDetectorResolution.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_IDETECTORRESOLUTION_H
-#define BORNAGAIN_CORE_DETECTOR_IDETECTORRESOLUTION_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_IDETECTORRESOLUTION_H
+#define BORNAGAIN_DEVICE_RESOLUTION_IDETECTORRESOLUTION_H
 
 #include "Base/Types/ICloneable.h"
 #include "Device/Data/OutputData.h"
@@ -35,4 +35,4 @@ public:
     virtual IDetectorResolution* clone() const = 0;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_IDETECTORRESOLUTION_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_IDETECTORRESOLUTION_H
diff --git a/Device/Resolution/IResolutionFunction2D.h b/Device/Resolution/IResolutionFunction2D.h
index 7fd5fb9b96fc94701ef10506076ce7b2da0bae1b..7207ece5f12ee7595854511a7dd6e4b5f22e687b 100644
--- a/Device/Resolution/IResolutionFunction2D.h
+++ b/Device/Resolution/IResolutionFunction2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_IRESOLUTIONFUNCTION2D_H
-#define BORNAGAIN_CORE_DETECTOR_IRESOLUTIONFUNCTION2D_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_IRESOLUTIONFUNCTION2D_H
+#define BORNAGAIN_DEVICE_RESOLUTION_IRESOLUTIONFUNCTION2D_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -33,4 +33,4 @@ public:
     virtual IResolutionFunction2D* clone() const = 0;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_IRESOLUTIONFUNCTION2D_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_IRESOLUTIONFUNCTION2D_H
diff --git a/Device/Resolution/ResolutionFunction2DGaussian.h b/Device/Resolution/ResolutionFunction2DGaussian.h
index 37ca3c193272e179f8b387938b4fb2c65bfe960d..1ac407e98516dfce54b4b4158db361c9f3c70c7a 100644
--- a/Device/Resolution/ResolutionFunction2DGaussian.h
+++ b/Device/Resolution/ResolutionFunction2DGaussian.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_RESOLUTIONFUNCTION2DGAUSSIAN_H
-#define BORNAGAIN_CORE_DETECTOR_RESOLUTIONFUNCTION2DGAUSSIAN_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_RESOLUTIONFUNCTION2DGAUSSIAN_H
+#define BORNAGAIN_DEVICE_RESOLUTION_RESOLUTIONFUNCTION2DGAUSSIAN_H
 
 #include "Device/Resolution/IResolutionFunction2D.h"
 
@@ -44,4 +44,4 @@ private:
     double m_sigma_y;
 };
 
-#endif // BORNAGAIN_CORE_DETECTOR_RESOLUTIONFUNCTION2DGAUSSIAN_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_RESOLUTIONFUNCTION2DGAUSSIAN_H
diff --git a/Device/Resolution/ScanResolution.h b/Device/Resolution/ScanResolution.h
index 6361e54f5fa1aa655704bbc7e0bfc1a58f0401a2..f632cf01f6c590d1836ad44bd1080bf640213b3e 100644
--- a/Device/Resolution/ScanResolution.h
+++ b/Device/Resolution/ScanResolution.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_DETECTOR_SCANRESOLUTION_H
-#define BORNAGAIN_CORE_DETECTOR_SCANRESOLUTION_H
+#ifndef BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
+#define BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Varia/ParameterSample.h"
@@ -69,4 +69,4 @@ inline std::ostream& operator<<(std::ostream& os, const ScanResolution& scan_res
     return os << scan_resolution.print();
 }
 
-#endif // BORNAGAIN_CORE_DETECTOR_SCANRESOLUTION_H
+#endif // BORNAGAIN_DEVICE_RESOLUTION_SCANRESOLUTION_H
diff --git a/Device/Unit/AxisNames.h b/Device/Unit/AxisNames.h
index a367a4af0ac62456889f836c2244c60bf393e22b..1bfccc9c57053a5a732565a7b6a34364876ea3e0 100644
--- a/Device/Unit/AxisNames.h
+++ b/Device/Unit/AxisNames.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_AXISNAMES_H
-#define BORNAGAIN_CORE_INTENSITY_AXISNAMES_H
+#ifndef BORNAGAIN_DEVICE_UNIT_AXISNAMES_H
+#define BORNAGAIN_DEVICE_UNIT_AXISNAMES_H
 
 #include "Device/Unit/IUnitConverter.h"
 #include <map>
@@ -35,4 +35,4 @@ std::map<Axes::Units, std::string> InitSpecAxisQ();
 std::map<Axes::Units, std::string> InitSampleDepthAxis();
 } // namespace AxisNames
 
-#endif // BORNAGAIN_CORE_INTENSITY_AXISNAMES_H
+#endif // BORNAGAIN_DEVICE_UNIT_AXISNAMES_H
diff --git a/Device/Unit/IUnitConverter.cpp b/Device/Unit/IUnitConverter.cpp
index 630aa3178015af76db332311595f05bd98ed3348..b3dd5928ea37523370529d0faa6652aae0edf64c 100644
--- a/Device/Unit/IUnitConverter.cpp
+++ b/Device/Unit/IUnitConverter.cpp
@@ -58,7 +58,7 @@ void IUnitConverter::throwUnitsError(std::string method, std::vector<Axes::Units
        << ": unknown or unsupported unit type. Available units "
           "are:\n";
     for (auto unit : available)
-        ss << axisUnitName.at(unit) << "\n";
+        ss << axisUnitLabel.at(unit) << "\n";
     throw std::runtime_error(ss.str());
 }
 
diff --git a/Device/Unit/IUnitConverter.h b/Device/Unit/IUnitConverter.h
index 20036922abbb39914a5c9c04f0d657273c2c2479..0b9d0312317c94b704b1876c0d0933947c1cef2d 100644
--- a/Device/Unit/IUnitConverter.h
+++ b/Device/Unit/IUnitConverter.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_INTENSITY_IUNITCONVERTER_H
-#define BORNAGAIN_CORE_INTENSITY_IUNITCONVERTER_H
+#ifndef BORNAGAIN_DEVICE_UNIT_IUNITCONVERTER_H
+#define BORNAGAIN_DEVICE_UNIT_IUNITCONVERTER_H
 
 #include "Base/Types/ICloneable.h"
 #include <map>
@@ -34,16 +34,10 @@ public:
     enum Units { DEFAULT, NBINS, RADIANS, DEGREES, MM, QSPACE, QXQY, RQ4 };
 };
 
-const std::map<Axes::Units, const char*> axisUnitName = {
-    {Axes::Units::NBINS, "Axes::Units::UNDEFINED"}, {Axes::Units::NBINS, "Axes::Units::NBINS"},
-    {Axes::Units::RADIANS, "Axes::Units::RADIANS"}, {Axes::Units::DEGREES, "Axes::Units::DEGREES"},
-    {Axes::Units::MM, "Axes::Units::MM"},           {Axes::Units::QSPACE, "Axes::Units::QSPACE"},
-    {Axes::Units::QXQY, "Axes::Units::QXQY"},       {Axes::Units::RQ4, "Axes::Units::RQ4"}};
-
 const std::map<Axes::Units, const char*> axisUnitLabel = {
-    {Axes::Units::NBINS, "undefined"}, {Axes::Units::NBINS, "bin"}, {Axes::Units::RADIANS, "rad"},
-    {Axes::Units::DEGREES, "deg"},     {Axes::Units::MM, "mm"},     {Axes::Units::QSPACE, "1/nm"},
-    {Axes::Units::QXQY, "1/nm"},       {Axes::Units::RQ4, "nm^-4?"}};
+    {Axes::Units::DEFAULT, "undefined"}, {Axes::Units::NBINS, "bin"}, {Axes::Units::RADIANS, "rad"},
+    {Axes::Units::DEGREES, "deg"},       {Axes::Units::MM, "mm"},     {Axes::Units::QSPACE, "1/nm"},
+    {Axes::Units::QXQY, "1/nm"},         {Axes::Units::RQ4, "nm^-4?"}};
 
 //! Interface to provide axis translations to different units for simulation output
 //! @ingroup simulation_internal
@@ -85,4 +79,4 @@ private:
     virtual std::vector<std::map<Axes::Units, std::string>> createNameMaps() const = 0;
 };
 
-#endif // BORNAGAIN_CORE_INTENSITY_IUNITCONVERTER_H
+#endif // BORNAGAIN_DEVICE_UNIT_IUNITCONVERTER_H
diff --git a/Param/Base/IParameter.h b/Param/Base/IParameter.h
index 1570d9cfe4041d8b7499aa10e4ef15b81831da4a..162178c7451b7775963175f31edd301e28ceb471 100644
--- a/Param/Base/IParameter.h
+++ b/Param/Base/IParameter.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETER_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETER_H
+#ifndef BORNAGAIN_PARAM_BASE_IPARAMETER_H
+#define BORNAGAIN_PARAM_BASE_IPARAMETER_H
 
 #include <functional>
 #include <stdexcept>
@@ -74,4 +74,4 @@ template <class T> bool IParameter<T>::hasSameData(const IParameter<T>& other)
     return &getData() == &other.getData();
 }
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETER_H
+#endif // BORNAGAIN_PARAM_BASE_IPARAMETER_H
diff --git a/Param/Base/IParameterized.h b/Param/Base/IParameterized.h
index 0beecd0878d3e2ed60030d8d958fb6322cff75bd..93a9fdb977809f259c51a47c89856af2bd3d3751 100644
--- a/Param/Base/IParameterized.h
+++ b/Param/Base/IParameterized.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETERIZED_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETERIZED_H
+#ifndef BORNAGAIN_PARAM_BASE_IPARAMETERIZED_H
+#define BORNAGAIN_PARAM_BASE_IPARAMETERIZED_H
 
 #include "Base/Vector/Vectors3D.h"
 #include <memory>
@@ -73,4 +73,4 @@ private:
     std::unique_ptr<ParameterPool> m_pool; //!< parameter pool (kind of pointer-to-implementation)
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_IPARAMETERIZED_H
+#endif // BORNAGAIN_PARAM_BASE_IPARAMETERIZED_H
diff --git a/Param/Base/ParameterPool.h b/Param/Base/ParameterPool.h
index 971ead24e1bc992bed5db728a469bfcba044f7db..a77d7ef7d70279fe37f6076bb282bacb16d2a2ac 100644
--- a/Param/Base/ParameterPool.h
+++ b/Param/Base/ParameterPool.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPOOL_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPOOL_H
+#ifndef BORNAGAIN_PARAM_BASE_PARAMETERPOOL_H
+#define BORNAGAIN_PARAM_BASE_PARAMETERPOOL_H
 
 #include "Base/Types/ICloneable.h"
 #include <ostream>
@@ -84,4 +84,4 @@ private:
     std::vector<RealParameter*> m_params;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPOOL_H
+#endif // BORNAGAIN_PARAM_BASE_PARAMETERPOOL_H
diff --git a/Param/Base/RealParameter.h b/Param/Base/RealParameter.h
index 7e1905123392e7fce6860fb5b8656917243468c4..f825f74cd89789ab0dd9cb87dd2e84fcb53a7416 100644
--- a/Param/Base/RealParameter.h
+++ b/Param/Base/RealParameter.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_REALPARAMETER_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_REALPARAMETER_H
+#ifndef BORNAGAIN_PARAM_BASE_REALPARAMETER_H
+#define BORNAGAIN_PARAM_BASE_REALPARAMETER_H
 
 #include "Fit/Tools/Attributes.h"
 #include "Fit/Tools/RealLimits.h"
@@ -61,4 +61,4 @@ protected:
     Unit m_unit;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_REALPARAMETER_H
+#endif // BORNAGAIN_PARAM_BASE_REALPARAMETER_H
diff --git a/Param/Base/Unit.h b/Param/Base/Unit.h
index 703fe11df6902d211fb29c0b4748b4237db86a69..297fd17111ab718b946428ffb2f27f1210fd63ed 100644
--- a/Param/Base/Unit.h
+++ b/Param/Base/Unit.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_UNIT_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_UNIT_H
+#ifndef BORNAGAIN_PARAM_BASE_UNIT_H
+#define BORNAGAIN_PARAM_BASE_UNIT_H
 
 #include <string>
 
@@ -30,4 +30,4 @@ private:
     std::string m_name;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_UNIT_H
+#endif // BORNAGAIN_PARAM_BASE_UNIT_H
diff --git a/Param/Distrib/DistributionHandler.h b/Param/Distrib/DistributionHandler.h
index 7e6d7a459915022c5d06fcb3fd96c3896b4c7e64..a8874de53d5e398a93c6f87d9b4321e363e9a0da 100644
--- a/Param/Distrib/DistributionHandler.h
+++ b/Param/Distrib/DistributionHandler.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONHANDLER_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONHANDLER_H
+#ifndef BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONHANDLER_H
+#define BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONHANDLER_H
 
 #include "Param/Distrib/ParameterDistribution.h"
 #include <vector>
@@ -57,4 +57,4 @@ private:
     std::vector<std::vector<ParameterSample>> m_cached_samples;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONHANDLER_H
+#endif // BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONHANDLER_H
diff --git a/Param/Distrib/Distributions.h b/Param/Distrib/Distributions.h
index 8ebdf4e239cba9562726f534631e2b0f297d537b..be1ca122f87c130bfabebed19127563f8d7caafe 100644
--- a/Param/Distrib/Distributions.h
+++ b/Param/Distrib/Distributions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONS_H
+#ifndef BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONS_H
+#define BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONS_H
 
 #include "Base/Types/ICloneable.h"
 #include "Fit/Tools/RealLimits.h"
@@ -291,4 +291,4 @@ private:
     const double& m_right;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_DISTRIBUTIONS_H
+#endif // BORNAGAIN_PARAM_DISTRIB_DISTRIBUTIONS_H
diff --git a/Param/Distrib/ParameterDistribution.h b/Param/Distrib/ParameterDistribution.h
index 92004eba3a8daf0eaa4f9576d1ed3d565d8e2c69..0710954e5482acca3ab1758ca57407c37514c27f 100644
--- a/Param/Distrib/ParameterDistribution.h
+++ b/Param/Distrib/ParameterDistribution.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERDISTRIBUTION_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERDISTRIBUTION_H
+#ifndef BORNAGAIN_PARAM_DISTRIB_PARAMETERDISTRIBUTION_H
+#define BORNAGAIN_PARAM_DISTRIB_PARAMETERDISTRIBUTION_H
 
 #include "Fit/Tools/RealLimits.h"
 #include "Param/Base/IParameterized.h"
@@ -77,4 +77,4 @@ private:
     double m_xmax;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERDISTRIBUTION_H
+#endif // BORNAGAIN_PARAM_DISTRIB_PARAMETERDISTRIBUTION_H
diff --git a/Param/Distrib/RangedDistributions.h b/Param/Distrib/RangedDistributions.h
index b2e44a5545d4f221d0c9bc6f9e03aa2b1e092a36..66feb41f91c9283745b4f6e10ea4daabbd7c5881 100644
--- a/Param/Distrib/RangedDistributions.h
+++ b/Param/Distrib/RangedDistributions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_RANGEDDISTRIBUTIONS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_RANGEDDISTRIBUTIONS_H
+#ifndef BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
+#define BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
 
 #include "Base/Types/ICloneable.h"
 #include "Fit/Tools/RealLimits.h"
@@ -222,4 +222,4 @@ inline std::ostream& operator<<(std::ostream& os, const RangedDistribution& dist
     return os << distribution.pyString();
 }
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_RANGEDDISTRIBUTIONS_H
+#endif // BORNAGAIN_PARAM_DISTRIB_RANGEDDISTRIBUTIONS_H
diff --git a/Param/Node/INode.h b/Param/Node/INode.h
index 775a8642e11539157f83580a5ac9e25012a7191e..b7f4e1f6d962b5521ff3a71eab5b798b7159ef16 100644
--- a/Param/Node/INode.h
+++ b/Param/Node/INode.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_INODE_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_INODE_H
+#ifndef BORNAGAIN_PARAM_NODE_INODE_H
+#define BORNAGAIN_PARAM_NODE_INODE_H
 
 #include "Param/Base/IParameterized.h"
 #include "Param/Node/INodeVisitor.h" // not forward declared because used by all children
@@ -131,4 +131,4 @@ inline std::vector<const INode*>& operator<<(std::vector<const INode*>&& v_node,
     return v_node;
 }
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_INODE_H
+#endif // BORNAGAIN_PARAM_NODE_INODE_H
diff --git a/Param/Node/INodeVisitor.h b/Param/Node/INodeVisitor.h
index 748dc302c704fe18df90b025ae7c93b753655646..8358ace6a2fbda94214e1c3aa502eac9dbc87fab 100644
--- a/Param/Node/INodeVisitor.h
+++ b/Param/Node/INodeVisitor.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
+#ifndef BORNAGAIN_PARAM_NODE_INODEVISITOR_H
+#define BORNAGAIN_PARAM_NODE_INODEVISITOR_H
 
 class BasicLattice;
 class Beam;
@@ -289,4 +289,4 @@ private:
 void VisitNodesPreorder(const INode& node, INodeVisitor& visitor);
 void VisitNodesPostorder(const INode& node, INodeVisitor& visitor);
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_INODEVISITOR_H
+#endif // BORNAGAIN_PARAM_NODE_INODEVISITOR_H
diff --git a/Param/Node/IterationStrategy.h b/Param/Node/IterationStrategy.h
index eb3d0d4561e28293bcd2162dcc918adf136a3578..af52ca26817444738d0a1a86b7890c2045027adf 100644
--- a/Param/Node/IterationStrategy.h
+++ b/Param/Node/IterationStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_ITERATIONSTRATEGY_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_ITERATIONSTRATEGY_H
+#ifndef BORNAGAIN_PARAM_NODE_ITERATIONSTRATEGY_H
+#define BORNAGAIN_PARAM_NODE_ITERATIONSTRATEGY_H
 
 class INode;
 class IteratorMemento;
@@ -58,4 +58,4 @@ public:
     virtual bool isDone(IteratorMemento& iterator_stack) const;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_ITERATIONSTRATEGY_H
+#endif // BORNAGAIN_PARAM_NODE_ITERATIONSTRATEGY_H
diff --git a/Param/Node/NodeIterator.h b/Param/Node/NodeIterator.h
index ceebe1fc52047e7098e0b7dd4b13e4cbd74a64cf..f3786c39c78c65684c6764179ccf7e2c91ce63dd 100644
--- a/Param/Node/NodeIterator.h
+++ b/Param/Node/NodeIterator.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H
+#ifndef BORNAGAIN_PARAM_NODE_NODEITERATOR_H
+#define BORNAGAIN_PARAM_NODE_NODEITERATOR_H
 
 #include "Param/Node/INode.h"
 #include <ostream>
@@ -134,4 +134,4 @@ template <class Strategy> inline int NodeIterator<Strategy>::depth() const
     return static_cast<int>(m_memento_itor.size());
 }
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_NODEITERATOR_H
+#endif // BORNAGAIN_PARAM_NODE_NODEITERATOR_H
diff --git a/Param/Node/NodeUtils.h b/Param/Node/NodeUtils.h
index 12190382a8966f2595b8da2b160f003641d8cafd..8987680b570c863d3ce4cfcabd2900c43fdd1f1c 100644
--- a/Param/Node/NodeUtils.h
+++ b/Param/Node/NodeUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_NODEUTILS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_NODEUTILS_H
+#ifndef BORNAGAIN_PARAM_NODE_NODEUTILS_H
+#define BORNAGAIN_PARAM_NODE_NODEUTILS_H
 
 #include <string>
 
@@ -30,4 +30,4 @@ std::string nodePath(const INode& node, const INode* root = nullptr);
 
 } // namespace NodeUtils
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_NODEUTILS_H
+#endif // BORNAGAIN_PARAM_NODE_NODEUTILS_H
diff --git a/Param/Varia/ParameterPattern.h b/Param/Varia/ParameterPattern.h
index d9fa77f39e08c1f3b5f7bb2e301bbd2b166e6a79..9b3b965de8654f8e5560a15f0c941204f81ffa0e 100644
--- a/Param/Varia/ParameterPattern.h
+++ b/Param/Varia/ParameterPattern.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPATTERN_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPATTERN_H
+#ifndef BORNAGAIN_PARAM_VARIA_PARAMETERPATTERN_H
+#define BORNAGAIN_PARAM_VARIA_PARAMETERPATTERN_H
 
 #include <string>
 
@@ -35,4 +35,4 @@ private:
     std::string m_pattern;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERPATTERN_H
+#endif // BORNAGAIN_PARAM_VARIA_PARAMETERPATTERN_H
diff --git a/Param/Varia/ParameterSample.h b/Param/Varia/ParameterSample.h
index 4e5ef0bf0b42239ba5c01d0f9139c9e4b7b67a5f..78fb1178da4c4f3dadd125de35c8015a6c06d8b2 100644
--- a/Param/Varia/ParameterSample.h
+++ b/Param/Varia/ParameterSample.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERSAMPLE_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERSAMPLE_H
+#ifndef BORNAGAIN_PARAM_VARIA_PARAMETERSAMPLE_H
+#define BORNAGAIN_PARAM_VARIA_PARAMETERSAMPLE_H
 
 //! A parameter value with a weight, as obtained when sampling from a distribution.
 //! @ingroup algorithms_internal
@@ -26,4 +26,4 @@ public:
     double weight;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERSAMPLE_H
+#endif // BORNAGAIN_PARAM_VARIA_PARAMETERSAMPLE_H
diff --git a/Param/Varia/ParameterUtils.h b/Param/Varia/ParameterUtils.h
index 62ab00cb17a443ce4920021680e5a3bb6c1c3eeb..6711626a28919a07a43ce6bef6c24d9c3fd63e95 100644
--- a/Param/Varia/ParameterUtils.h
+++ b/Param/Varia/ParameterUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERUTILS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERUTILS_H
+#ifndef BORNAGAIN_PARAM_VARIA_PARAMETERUTILS_H
+#define BORNAGAIN_PARAM_VARIA_PARAMETERUTILS_H
 
 #include <string>
 
@@ -30,4 +30,4 @@ std::string poolParameterUnits(const IParameterized& node, const std::string& pa
 
 } // namespace ParameterUtils
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PARAMETERUTILS_H
+#endif // BORNAGAIN_PARAM_VARIA_PARAMETERUTILS_H
diff --git a/Param/Varia/PyFmtLimits.h b/Param/Varia/PyFmtLimits.h
index 1e74aaa935c791b285851ca55bfcff1558002092..ba2f703b83cfccfa9ca30233ec11ed9f33886d97 100644
--- a/Param/Varia/PyFmtLimits.h
+++ b/Param/Varia/PyFmtLimits.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_PYFMTLIMITS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_PYFMTLIMITS_H
+#ifndef BORNAGAIN_PARAM_VARIA_PYFMTLIMITS_H
+#define BORNAGAIN_PARAM_VARIA_PYFMTLIMITS_H
 
 #include <string>
 
@@ -27,4 +27,4 @@ std::string printRealLimits(const RealLimits& limits, const std::string& units =
 std::string printRealLimitsArg(const RealLimits& limits, const std::string& units = "");
 } // namespace pyfmt
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_PYFMTLIMITS_H
+#endif // BORNAGAIN_PARAM_VARIA_PYFMTLIMITS_H
diff --git a/Sample/Aggregate/IInterferenceFunction.h b/Sample/Aggregate/IInterferenceFunction.h
index f8ad14b72fb20ac8657fdc377127bfee0c7bef3a..ad4f99361a3a204c3fbd7ccfb115e6390a16699f 100644
--- a/Sample/Aggregate/IInterferenceFunction.h
+++ b/Sample/Aggregate/IInterferenceFunction.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_IINTERFERENCEFUNCTION_H
-#define BORNAGAIN_CORE_AGGREGATE_IINTERFERENCEFUNCTION_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_IINTERFERENCEFUNCTION_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_IINTERFERENCEFUNCTION_H
 
 #include "Sample/Scattering/ISample.h"
 
@@ -58,4 +58,4 @@ protected:
     virtual double iff_without_dw(const kvector_t q) const = 0;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_IINTERFERENCEFUNCTION_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_IINTERFERENCEFUNCTION_H
diff --git a/Sample/Aggregate/InterferenceFunction1DLattice.h b/Sample/Aggregate/InterferenceFunction1DLattice.h
index fdb4d43966e52f3d69358de7ab084c80aea4c502..8dff487f2cba46824a6cb95e1b59a2b888c32694 100644
--- a/Sample/Aggregate/InterferenceFunction1DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction1DLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 
@@ -48,4 +48,4 @@ private:
     int m_na; //!< determines the number of reciprocal lattice points to use
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION1DLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunction2DLattice.h b/Sample/Aggregate/InterferenceFunction2DLattice.h
index 3df8ab38aaf5fd0f9c6a10c3774f2d822a84e94d..173d061d261d00995f7bbdbcd7eaa0beaf357c08 100644
--- a/Sample/Aggregate/InterferenceFunction2DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction2DLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Correlations/FTDecay1D.h"
@@ -83,4 +83,4 @@ private:
     mutable double m_qy;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunction2DParaCrystal.h b/Sample/Aggregate/InterferenceFunction2DParaCrystal.h
index 0bcc1680762575fbe1028dba53b0bccd2f261e65..b333d35cec2339b9435545f96b2a3aed1815ec86 100644
--- a/Sample/Aggregate/InterferenceFunction2DParaCrystal.h
+++ b/Sample/Aggregate/InterferenceFunction2DParaCrystal.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
 
 #include "Base/Types/Complex.h"
 #include "Sample/Aggregate/IInterferenceFunction.h"
@@ -92,4 +92,4 @@ private:
     mutable double m_qy;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DPARACRYSTAL_H
diff --git a/Sample/Aggregate/InterferenceFunction2DSuperLattice.h b/Sample/Aggregate/InterferenceFunction2DSuperLattice.h
index ae2f84c704fbe0834278aa0c73969370c66a4e6e..9f6cff8f562b476c9aff757d3215a4190f6401cb 100644
--- a/Sample/Aggregate/InterferenceFunction2DSuperLattice.h
+++ b/Sample/Aggregate/InterferenceFunction2DSuperLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Lattice/Lattice2D.h"
@@ -69,4 +69,4 @@ private:
     mutable double m_xi;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION2DSUPERLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunction3DLattice.h b/Sample/Aggregate/InterferenceFunction3DLattice.h
index 2ae4e7b8843def904a8ca632e939f238caea61b8..848ed23399c590c18fc8cdf8da00c8b759449de4 100644
--- a/Sample/Aggregate/InterferenceFunction3DLattice.h
+++ b/Sample/Aggregate/InterferenceFunction3DLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Lattice/Lattice.h"
@@ -52,4 +52,4 @@ private:
     double m_rec_radius; //!< radius in reciprocal space defining the nearest q vectors to use
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTION3DLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
index 01c31243d5db52cf925a1fc1dcc5f9dc18c8dbf7..1cd85527e6bfb8a06bce9822739ff9ffd6545ae4 100644
--- a/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
+++ b/Sample/Aggregate/InterferenceFunctionFinite2DLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Lattice/Lattice2D.h"
@@ -64,4 +64,4 @@ private:
     mutable double m_qy;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE2DLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
index 65e7809f2cec86028d0c93d19c0982f2bccf897a..a393780d95f8732fce64e3453892c87e24227f1f 100644
--- a/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
+++ b/Sample/Aggregate/InterferenceFunctionFinite3DLattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Lattice/Lattice.h"
@@ -50,4 +50,4 @@ private:
     unsigned m_N_1, m_N_2, m_N_3; //!< Size of the finite lattice in lattice units
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONFINITE3DLATTICE_H
diff --git a/Sample/Aggregate/InterferenceFunctionHardDisk.h b/Sample/Aggregate/InterferenceFunctionHardDisk.h
index b6c054436441dce2761980544278a0b62b03f315..e4cacad57e0c88cd16f7049abd9d3f15fcf13218 100644
--- a/Sample/Aggregate/InterferenceFunctionHardDisk.h
+++ b/Sample/Aggregate/InterferenceFunctionHardDisk.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 
@@ -50,4 +50,4 @@ private:
     mutable double m_q, m_c_zero, m_s2, m_packing;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONHARDDISK_H
diff --git a/Sample/Aggregate/InterferenceFunctionNone.h b/Sample/Aggregate/InterferenceFunctionNone.h
index c3a20af5c9437f2216af1b2b038f8427b5653701..7623b4df9397ec0fe6490e855810fee9758faf95 100644
--- a/Sample/Aggregate/InterferenceFunctionNone.h
+++ b/Sample/Aggregate/InterferenceFunctionNone.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 
@@ -33,4 +33,4 @@ private:
     double iff_without_dw(const kvector_t q) const override final;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONNONE_H
diff --git a/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
index 7b22ebda42b2c8b8aa8956255c3424242ec5f865..984a288d432890203cfde36eadc078aee02eb781 100644
--- a/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
+++ b/Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
 
 #include "Base/Types/Complex.h"
 #include "Sample/Aggregate/IInterferenceFunction.h"
@@ -62,4 +62,4 @@ private:
     double m_domain_size; //!< Size of coherence domain
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONRADIALPARACRYSTAL_H
diff --git a/Sample/Aggregate/InterferenceFunctionTwin.h b/Sample/Aggregate/InterferenceFunctionTwin.h
index 89c6ac3f92339c7d32a08390ead7b9ec7cd1a067..5f8c4ef8615608bef6d6a265bec1f4b4b248de46 100644
--- a/Sample/Aggregate/InterferenceFunctionTwin.h
+++ b/Sample/Aggregate/InterferenceFunctionTwin.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
 
 #include "Sample/Aggregate/IInterferenceFunction.h"
 
@@ -42,4 +42,4 @@ private:
     double m_std_dev;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONTWIN_H
diff --git a/Sample/Aggregate/InterferenceFunctions.h b/Sample/Aggregate/InterferenceFunctions.h
index 22b3ca512202effda593a1452729d243f744a7a3..a1ecb133584b3ca8535862634a42329059568468 100644
--- a/Sample/Aggregate/InterferenceFunctions.h
+++ b/Sample/Aggregate/InterferenceFunctions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
-#define BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONS_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONS_H
 
 #include "Sample/Aggregate/InterferenceFunction1DLattice.h"
 #include "Sample/Aggregate/InterferenceFunction2DLattice.h"
@@ -27,4 +27,4 @@
 #include "Sample/Aggregate/InterferenceFunctionRadialParaCrystal.h"
 #include "Sample/Aggregate/InterferenceFunctionTwin.h"
 
-#endif // BORNAGAIN_CORE_AGGREGATE_INTERFERENCEFUNCTIONS_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_INTERFERENCEFUNCTIONS_H
diff --git a/Sample/Aggregate/ParticleLayout.h b/Sample/Aggregate/ParticleLayout.h
index e72043f293994ffa4d8587d2bd9fb81cc0097db9..ddb434c3a2843351fd6c2cc865b5e9e39c88a2ce 100644
--- a/Sample/Aggregate/ParticleLayout.h
+++ b/Sample/Aggregate/ParticleLayout.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_AGGREGATE_PARTICLELAYOUT_H
-#define BORNAGAIN_CORE_AGGREGATE_PARTICLELAYOUT_H
+#ifndef BORNAGAIN_SAMPLE_AGGREGATE_PARTICLELAYOUT_H
+#define BORNAGAIN_SAMPLE_AGGREGATE_PARTICLELAYOUT_H
 
 #include "Sample/Correlations/ILayout.h"
 #include "Sample/Scattering/Rotations.h"
@@ -65,4 +65,4 @@ private:
     double m_total_particle_density;
 };
 
-#endif // BORNAGAIN_CORE_AGGREGATE_PARTICLELAYOUT_H
+#endif // BORNAGAIN_SAMPLE_AGGREGATE_PARTICLELAYOUT_H
diff --git a/Sample/Correlations/FTDecay1D.h b/Sample/Correlations/FTDecay1D.h
index f72741bcbf4d40faf664d763938f3f94883c7308..a48b4ea8c9f3764176c538cc6eeb1f32ec96978c 100644
--- a/Sample/Correlations/FTDecay1D.h
+++ b/Sample/Correlations/FTDecay1D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_FTDECAY1D_H
-#define BORNAGAIN_CORE_CORRELATIONS_FTDECAY1D_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY1D_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY1D_H
 
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/ICloneable.h"
@@ -97,4 +97,4 @@ private:
     const double& m_eta;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_FTDECAY1D_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY1D_H
diff --git a/Sample/Correlations/FTDecay2D.h b/Sample/Correlations/FTDecay2D.h
index 442546a9bb570d2084e11ff49030924111d06e55..9ff297709f226839f07cfc0404d18e72bb4cb13b 100644
--- a/Sample/Correlations/FTDecay2D.h
+++ b/Sample/Correlations/FTDecay2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_FTDECAY2D_H
-#define BORNAGAIN_CORE_CORRELATIONS_FTDECAY2D_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY2D_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY2D_H
 
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/ICloneable.h"
@@ -103,4 +103,4 @@ protected:
     const double& m_eta;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_FTDECAY2D_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_FTDECAY2D_H
diff --git a/Sample/Correlations/FTDistributions1D.h b/Sample/Correlations/FTDistributions1D.h
index ce14bcaf060229bd87507c9cd3076bf2e42c6151..fb171cee0373c858302aaa1009a454b68e7d7085 100644
--- a/Sample/Correlations/FTDistributions1D.h
+++ b/Sample/Correlations/FTDistributions1D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
-#define BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS1D_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS1D_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -173,4 +173,4 @@ protected:
     const double& m_eta;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS1D_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS1D_H
diff --git a/Sample/Correlations/FTDistributions2D.h b/Sample/Correlations/FTDistributions2D.h
index 6766a215bdf35287690a8fd772d2b110bceca955..04c42cf4d7860330916d92db72ddf965672ede4a 100644
--- a/Sample/Correlations/FTDistributions2D.h
+++ b/Sample/Correlations/FTDistributions2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS2D_H
-#define BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS2D_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS2D_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS2D_H
 
 #include "Base/Const/MathConstants.h"
 #include "Base/Types/ICloneable.h"
@@ -152,4 +152,4 @@ protected:
     const double& m_eta;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_FTDISTRIBUTIONS2D_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_FTDISTRIBUTIONS2D_H
diff --git a/Sample/Correlations/IDistribution1DSampler.h b/Sample/Correlations/IDistribution1DSampler.h
index 34bf7ea933c3acb140d6c42848a7253e7919231c..e4d89567998ceabd56ddb942d2037df9bed623b6 100644
--- a/Sample/Correlations/IDistribution1DSampler.h
+++ b/Sample/Correlations/IDistribution1DSampler.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
-#define BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
 
 class IDistribution1DSampler
 {
@@ -74,4 +74,4 @@ private:
     double m_omega;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION1DSAMPLER_H
diff --git a/Sample/Correlations/IDistribution2DSampler.h b/Sample/Correlations/IDistribution2DSampler.h
index 77cd814a1a53ad850b92e3004b6b8503800c7e53..96949c004dbcdbc35f8819da367fc7e9b12542e7 100644
--- a/Sample/Correlations/IDistribution2DSampler.h
+++ b/Sample/Correlations/IDistribution2DSampler.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
-#define BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
 
 #include <utility>
 
@@ -78,4 +78,4 @@ private:
     double m_omega_x, m_omega_y;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_IDISTRIBUTION2DSAMPLER_H
diff --git a/Sample/Correlations/ILayout.h b/Sample/Correlations/ILayout.h
index 34cc093403ae6e311acdea776635c3720dcc962c..8ec537dc5a5b7bbf82bc25783e572cefe35a4d42 100644
--- a/Sample/Correlations/ILayout.h
+++ b/Sample/Correlations/ILayout.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_ILAYOUT_H
-#define BORNAGAIN_CORE_CORRELATIONS_ILAYOUT_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_ILAYOUT_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_ILAYOUT_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Sample/Scattering/ISample.h"
@@ -63,4 +63,4 @@ protected:
     double m_weight;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_ILAYOUT_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_ILAYOUT_H
diff --git a/Sample/Correlations/IPeakShape.h b/Sample/Correlations/IPeakShape.h
index 7dd1a85db4f4b72415afcff19fbcc8be5b2a48a4..320673c559ed327e94060a04ea967028314157f6 100644
--- a/Sample/Correlations/IPeakShape.h
+++ b/Sample/Correlations/IPeakShape.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_CORRELATIONS_IPEAKSHAPE_H
-#define BORNAGAIN_CORE_CORRELATIONS_IPEAKSHAPE_H
+#ifndef BORNAGAIN_SAMPLE_CORRELATIONS_IPEAKSHAPE_H
+#define BORNAGAIN_SAMPLE_CORRELATIONS_IPEAKSHAPE_H
 
 #include "Sample/Scattering/ISample.h"
 
@@ -193,4 +193,4 @@ private:
     mutable kvector_t m_ux, m_uy, m_p;
 };
 
-#endif // BORNAGAIN_CORE_CORRELATIONS_IPEAKSHAPE_H
+#endif // BORNAGAIN_SAMPLE_CORRELATIONS_IPEAKSHAPE_H
diff --git a/Sample/Fresnel/FormFactorCoherentPart.h b/Sample/Fresnel/FormFactorCoherentPart.h
index 4efc9c8b1728f9f0c267bfaae190b6737ae29c2f..d3d75f882b37c1fb68045201b4e1afa81187e513 100644
--- a/Sample/Fresnel/FormFactorCoherentPart.h
+++ b/Sample/Fresnel/FormFactorCoherentPart.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTPART_H
-#define BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTPART_H
+#ifndef BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTPART_H
+#define BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTPART_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/EigenCore.h"
@@ -50,4 +50,4 @@ private:
     size_t m_layer_index;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTPART_H
+#endif // BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTPART_H
diff --git a/Sample/Fresnel/FormFactorCoherentSum.h b/Sample/Fresnel/FormFactorCoherentSum.h
index 504bbb895560d57ca9c14cdbd66bbfc245d83783..ed1239a2823cc2d50c405762f1aefb0445ce931e 100644
--- a/Sample/Fresnel/FormFactorCoherentSum.h
+++ b/Sample/Fresnel/FormFactorCoherentSum.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTSUM_H
-#define BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTSUM_H
+#ifndef BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTSUM_H
+#define BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTSUM_H
 
 #include "Sample/Fresnel/FormFactorCoherentPart.h"
 #include <vector>
@@ -46,4 +46,4 @@ private:
     double m_abundance;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_FORMFACTORCOHERENTSUM_H
+#endif // BORNAGAIN_SAMPLE_FRESNEL_FORMFACTORCOHERENTSUM_H
diff --git a/Sample/Fresnel/IFresnelMap.h b/Sample/Fresnel/IFresnelMap.h
index 0377ce8ba0be053cd8778beb8a8aca6b5f0a78df..c21e76699147d02e1f383581ea50627c2dadefac 100644
--- a/Sample/Fresnel/IFresnelMap.h
+++ b/Sample/Fresnel/IFresnelMap.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_IFRESNELMAP_H
-#define BORNAGAIN_CORE_MULTILAYER_IFRESNELMAP_H
+#ifndef BORNAGAIN_SAMPLE_FRESNEL_IFRESNELMAP_H
+#define BORNAGAIN_SAMPLE_FRESNEL_IFRESNELMAP_H
 
 #include "Sample/Specular/ISpecularStrategy.h"
 #include <memory>
@@ -60,4 +60,4 @@ protected:
     std::unique_ptr<ISpecularStrategy> m_Strategy;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_IFRESNELMAP_H
+#endif // BORNAGAIN_SAMPLE_FRESNEL_IFRESNELMAP_H
diff --git a/Sample/Fresnel/MatrixFresnelMap.h b/Sample/Fresnel/MatrixFresnelMap.h
index 234bdd146abe8718b8da4fbfe47f1b5383b688c9..d567a0b614f86dff2113adce3835bb18d7ea2d66 100644
--- a/Sample/Fresnel/MatrixFresnelMap.h
+++ b/Sample/Fresnel/MatrixFresnelMap.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_MATRIXFRESNELMAP_H
-#define BORNAGAIN_CORE_MULTILAYER_MATRIXFRESNELMAP_H
+#ifndef BORNAGAIN_SAMPLE_FRESNEL_MATRIXFRESNELMAP_H
+#define BORNAGAIN_SAMPLE_FRESNEL_MATRIXFRESNELMAP_H
 
 #include "Sample/Fresnel/IFresnelMap.h"
 #include "Sample/RT/MatrixRTCoefficients.h"
@@ -71,4 +71,4 @@ private:
                                                                 CoefficientHash& hash_table) const;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_MATRIXFRESNELMAP_H
+#endif // BORNAGAIN_SAMPLE_FRESNEL_MATRIXFRESNELMAP_H
diff --git a/Sample/Fresnel/ScalarFresnelMap.h b/Sample/Fresnel/ScalarFresnelMap.h
index 244a4691e21960ede630b503014480caa675d1f6..878a094073036e21b880133f4fee628c19ddb398 100644
--- a/Sample/Fresnel/ScalarFresnelMap.h
+++ b/Sample/Fresnel/ScalarFresnelMap.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SCALARFRESNELMAP_H
-#define BORNAGAIN_CORE_MULTILAYER_SCALARFRESNELMAP_H
+#ifndef BORNAGAIN_SAMPLE_FRESNEL_SCALARFRESNELMAP_H
+#define BORNAGAIN_SAMPLE_FRESNEL_SCALARFRESNELMAP_H
 
 #include "Sample/Fresnel/IFresnelMap.h"
 #include "Sample/RT/ScalarRTCoefficients.h"
@@ -56,4 +56,4 @@ private:
         m_cache;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SCALARFRESNELMAP_H
+#endif // BORNAGAIN_SAMPLE_FRESNEL_SCALARFRESNELMAP_H
diff --git a/Sample/HardParticle/FormFactorAnisoPyramid.h b/Sample/HardParticle/FormFactorAnisoPyramid.h
index a27a81254e4268e1b749acdfac6cdc2347d6e899..0835f6e8796c25070c240e8951f0225e6db8122c 100644
--- a/Sample/HardParticle/FormFactorAnisoPyramid.h
+++ b/Sample/HardParticle/FormFactorAnisoPyramid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -52,4 +52,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORANISOPYRAMID_H
diff --git a/Sample/HardParticle/FormFactorBar.h b/Sample/HardParticle/FormFactorBar.h
index ac4734e75ad3a9a8358cb950232ceab48138c3e6..de85188f8a94c51035b62ae49ec0fc3009fdd5c9 100644
--- a/Sample/HardParticle/FormFactorBar.h
+++ b/Sample/HardParticle/FormFactorBar.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBAR_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBAR_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBAR_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBAR_H
 
 #include "Sample/HardParticle/IProfileRipple.h"
 
@@ -45,4 +45,4 @@ private:
     complex_t factor_x(complex_t qx) const final;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBAR_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBAR_H
diff --git a/Sample/HardParticle/FormFactorBox.h b/Sample/HardParticle/FormFactorBox.h
index daf1ce53d42fad1585320d27206f04fc82dd8668..c1aa908f65e75e31d84cdc121146c78ad3b0d230 100644
--- a/Sample/HardParticle/FormFactorBox.h
+++ b/Sample/HardParticle/FormFactorBox.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBOX_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBOX_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBOX_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBOX_H
 
 #include "Sample/HardParticle/IFormFactorPrism.h"
 
@@ -53,4 +53,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORBOX_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORBOX_H
diff --git a/Sample/HardParticle/FormFactorCantellatedCube.h b/Sample/HardParticle/FormFactorCantellatedCube.h
index 1405ccc8b0828b401232ec60364b074f581eb6e8..472f7b129fd16c544fb17f8f48bf03b76bb0367b 100644
--- a/Sample/HardParticle/FormFactorCantellatedCube.h
+++ b/Sample/HardParticle/FormFactorCantellatedCube.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -44,4 +44,4 @@ private:
     const double& m_removed_length;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCANTELLATEDCUBE_H
diff --git a/Sample/HardParticle/FormFactorCone.h b/Sample/HardParticle/FormFactorCone.h
index 932a59aadc621cf3a52a431395246bd7fccc9951..a02facab854e52aba54e0faa717cd88270333844 100644
--- a/Sample/HardParticle/FormFactorCone.h
+++ b/Sample/HardParticle/FormFactorCone.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -56,4 +56,4 @@ private:
     mutable cvector_t m_q;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE_H
diff --git a/Sample/HardParticle/FormFactorCone6.h b/Sample/HardParticle/FormFactorCone6.h
index 8aafce2c708a408eacef911eb52dfc3a639f0afc..849761c3d6e55d2e357e49de6133fe34c78e2d12 100644
--- a/Sample/HardParticle/FormFactorCone6.h
+++ b/Sample/HardParticle/FormFactorCone6.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE6_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE6_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE6_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE6_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -49,4 +49,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCONE6_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCONE6_H
diff --git a/Sample/HardParticle/FormFactorCosineRipple.h b/Sample/HardParticle/FormFactorCosineRipple.h
index 846fa52db4b463e25dadf8efd6d16aaae1bd9345..b1ac68bd89db1c886240d436472e0d85fc95ca8f 100644
--- a/Sample/HardParticle/FormFactorCosineRipple.h
+++ b/Sample/HardParticle/FormFactorCosineRipple.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
 
 #include "Sample/HardParticle/IProfileRipple.h"
 
@@ -59,4 +59,4 @@ private:
     complex_t factor_x(complex_t qx) const override final;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCOSINERIPPLE_H
diff --git a/Sample/HardParticle/FormFactorCuboctahedron.h b/Sample/HardParticle/FormFactorCuboctahedron.h
index 469f17455478d9ff9800eee412ca09a3bbf9325f..fee2ccc43b6c28f12501bed857b03c58d10d6b2f 100644
--- a/Sample/HardParticle/FormFactorCuboctahedron.h
+++ b/Sample/HardParticle/FormFactorCuboctahedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -52,4 +52,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCUBOCTAHEDRON_H
diff --git a/Sample/HardParticle/FormFactorCylinder.h b/Sample/HardParticle/FormFactorCylinder.h
index 1696ba1dfd864c80097b1e1e42cfe06fc91e3a69..3d9edc1566e1757aabca7d32309a0881ef8fe249 100644
--- a/Sample/HardParticle/FormFactorCylinder.h
+++ b/Sample/HardParticle/FormFactorCylinder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCYLINDER_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCYLINDER_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCYLINDER_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCYLINDER_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -50,4 +50,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORCYLINDER_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORCYLINDER_H
diff --git a/Sample/HardParticle/FormFactorDodecahedron.h b/Sample/HardParticle/FormFactorDodecahedron.h
index 79f78056fb5cb5bd5ae8ec0c3845d2af695bebc5..fad5fc3b8cc45da717bbae714e60b1d13fd7e2ae 100644
--- a/Sample/HardParticle/FormFactorDodecahedron.h
+++ b/Sample/HardParticle/FormFactorDodecahedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -42,4 +42,4 @@ private:
     const double& m_edge;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDODECAHEDRON_H
diff --git a/Sample/HardParticle/FormFactorDot.h b/Sample/HardParticle/FormFactorDot.h
index d668c9a9a8b3cd6761f619022780d1b2c8b16b76..8a81d080eebad3289abe0dd42c5132e323437b3b 100644
--- a/Sample/HardParticle/FormFactorDot.h
+++ b/Sample/HardParticle/FormFactorDot.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDOT_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDOT_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDOT_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDOT_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -45,4 +45,4 @@ private:
     const double& m_radius;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORDOT_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORDOT_H
diff --git a/Sample/HardParticle/FormFactorEllipsoidalCylinder.h b/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
index 035afe0c4ddb94372bbffe12c35b6a497afead74..0b47e6bbf62bef0cfa121c4184f2224d8b0870d4 100644
--- a/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
+++ b/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -52,4 +52,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORELLIPSOIDALCYLINDER_H
diff --git a/Sample/HardParticle/FormFactorFullSphere.h b/Sample/HardParticle/FormFactorFullSphere.h
index d2b185fa693ddefa4d0efcda801c2cf6336129f9..cd7a26f4adf1125f920b14cbc2296af2ee9da398 100644
--- a/Sample/HardParticle/FormFactorFullSphere.h
+++ b/Sample/HardParticle/FormFactorFullSphere.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -55,4 +55,4 @@ private:
     bool m_position_at_center;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHERE_H
diff --git a/Sample/HardParticle/FormFactorFullSpheroid.h b/Sample/HardParticle/FormFactorFullSpheroid.h
index 16f753fcf9e256b493d36862641ee08eaabb257d..5c46920e4bb1bf846f68c5887408c5611b63f86c 100644
--- a/Sample/HardParticle/FormFactorFullSpheroid.h
+++ b/Sample/HardParticle/FormFactorFullSpheroid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -50,4 +50,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORFULLSPHEROID_H
diff --git a/Sample/HardParticle/FormFactorHemiEllipsoid.h b/Sample/HardParticle/FormFactorHemiEllipsoid.h
index 186e6bbf85dac50c74812dbca942df260aa6ba85..5c7a61e1e3a7570ce14f524896aa18cbbdbd4e19 100644
--- a/Sample/HardParticle/FormFactorHemiEllipsoid.h
+++ b/Sample/HardParticle/FormFactorHemiEllipsoid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -54,4 +54,4 @@ private:
     mutable cvector_t m_q;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHEMIELLIPSOID_H
diff --git a/Sample/HardParticle/FormFactorHollowSphere.h b/Sample/HardParticle/FormFactorHollowSphere.h
index 7287e5226f2220f94dda7e9d712a4b683f764ee2..f4601ff96f8bced9c3b00a9087fd0e8b68dccb74 100644
--- a/Sample/HardParticle/FormFactorHollowSphere.h
+++ b/Sample/HardParticle/FormFactorHollowSphere.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
 
 #include "Sample/HardParticle/FormFactorFullSphere.h"
 
@@ -45,4 +45,4 @@ private:
     const double& m_full_width; //!< This is the full width of the radius distribution
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORHOLLOWSPHERE_H
diff --git a/Sample/HardParticle/FormFactorIcosahedron.h b/Sample/HardParticle/FormFactorIcosahedron.h
index 4647288a49a2c702f56f40b44b2573167e388118..f38d5114d3995b93cde667d916119549937f78b4 100644
--- a/Sample/HardParticle/FormFactorIcosahedron.h
+++ b/Sample/HardParticle/FormFactorIcosahedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -42,4 +42,4 @@ private:
     const double& m_edge;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORICOSAHEDRON_H
diff --git a/Sample/HardParticle/FormFactorLongBoxGauss.h b/Sample/HardParticle/FormFactorLongBoxGauss.h
index e3cc09f47a60d9b951a18797e212236645bf14ee..8ebea56bf0da61f3b65be285274a434825893cb9 100644
--- a/Sample/HardParticle/FormFactorLongBoxGauss.h
+++ b/Sample/HardParticle/FormFactorLongBoxGauss.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -51,4 +51,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXGAUSS_H
diff --git a/Sample/HardParticle/FormFactorLongBoxLorentz.h b/Sample/HardParticle/FormFactorLongBoxLorentz.h
index 04113ada9b7b913ff95211d4ec652c1029000c80..19bef0c5a9d512ad3c570fc1ab7212ed131500b9 100644
--- a/Sample/HardParticle/FormFactorLongBoxLorentz.h
+++ b/Sample/HardParticle/FormFactorLongBoxLorentz.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -52,4 +52,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORLONGBOXLORENTZ_H
diff --git a/Sample/HardParticle/FormFactorPrism3.h b/Sample/HardParticle/FormFactorPrism3.h
index 0f9d710be36c626a97dabd212cd3248c00021866..5ee97ccc2783371062aadd5f96066fed4b92e2fb 100644
--- a/Sample/HardParticle/FormFactorPrism3.h
+++ b/Sample/HardParticle/FormFactorPrism3.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM3_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM3_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM3_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM3_H
 
 #include "Sample/HardParticle/IFormFactorPrism.h"
 
@@ -46,4 +46,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM3_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM3_H
diff --git a/Sample/HardParticle/FormFactorPrism6.h b/Sample/HardParticle/FormFactorPrism6.h
index 0726adbaa7b072a6224cbbd7d4a4374cdeee0b40..acaf30fb4718d98c3c9a79e32a2d89b5bb35e3be 100644
--- a/Sample/HardParticle/FormFactorPrism6.h
+++ b/Sample/HardParticle/FormFactorPrism6.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM6_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM6_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM6_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM6_H
 
 #include "Sample/HardParticle/IFormFactorPrism.h"
 
@@ -46,4 +46,4 @@ private:
     const double& m_height;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPRISM6_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPRISM6_H
diff --git a/Sample/HardParticle/FormFactorPyramid.h b/Sample/HardParticle/FormFactorPyramid.h
index 6b77766468ca6378f194fe74b33ff501f60d89ab..cf1bf2bc0a4bd49586a3db790011c8542fe60cd3 100644
--- a/Sample/HardParticle/FormFactorPyramid.h
+++ b/Sample/HardParticle/FormFactorPyramid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPYRAMID_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPYRAMID_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPYRAMID_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPYRAMID_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -50,4 +50,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORPYRAMID_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORPYRAMID_H
diff --git a/Sample/HardParticle/FormFactorSawtoothRipple.h b/Sample/HardParticle/FormFactorSawtoothRipple.h
index 55c9ccfa6e7cae5d93228e34138e8a766b509fb2..d8f095f49303d410f2b8aa6d930a9e9e651193dd 100644
--- a/Sample/HardParticle/FormFactorSawtoothRipple.h
+++ b/Sample/HardParticle/FormFactorSawtoothRipple.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
 
 #include "Sample/HardParticle/IProfileRipple.h"
 
@@ -59,4 +59,4 @@ private:
     complex_t factor_x(complex_t qx) const override final;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORSAWTOOTHRIPPLE_H
diff --git a/Sample/HardParticle/FormFactorTetrahedron.h b/Sample/HardParticle/FormFactorTetrahedron.h
index 704f009434f803ff9d7c18757e207c99ab48d8fa..f281578bae81a3635edb30b6fb374b6d2deaa2c1 100644
--- a/Sample/HardParticle/FormFactorTetrahedron.h
+++ b/Sample/HardParticle/FormFactorTetrahedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -49,4 +49,4 @@ private:
     const double& m_alpha;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTETRAHEDRON_H
diff --git a/Sample/HardParticle/FormFactorTruncatedCube.h b/Sample/HardParticle/FormFactorTruncatedCube.h
index d5c5158853c2d79ac3ccd67626a5038abb91a26a..d67fecac9398238adcaf231851407ca0fea0a123 100644
--- a/Sample/HardParticle/FormFactorTruncatedCube.h
+++ b/Sample/HardParticle/FormFactorTruncatedCube.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
 
 #include "Sample/HardParticle/IFormFactorPolyhedron.h"
 
@@ -44,4 +44,4 @@ private:
     const double& m_removed_length;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDCUBE_H
diff --git a/Sample/HardParticle/FormFactorTruncatedSphere.h b/Sample/HardParticle/FormFactorTruncatedSphere.h
index 6773cadaba9c5bfd3211b4372a2edde5db7a3396..1ecd37eb22016db09e214cb995eca566c350b2d7 100644
--- a/Sample/HardParticle/FormFactorTruncatedSphere.h
+++ b/Sample/HardParticle/FormFactorTruncatedSphere.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -56,4 +56,4 @@ private:
     mutable cvector_t m_q;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHERE_H
diff --git a/Sample/HardParticle/FormFactorTruncatedSpheroid.h b/Sample/HardParticle/FormFactorTruncatedSpheroid.h
index b52a7828f4f687ee523062045da6c8a502618fc8..3c4cbee6135ae97f8c08549b72e5908c68b877c7 100644
--- a/Sample/HardParticle/FormFactorTruncatedSpheroid.h
+++ b/Sample/HardParticle/FormFactorTruncatedSpheroid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
-#define BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -59,4 +59,4 @@ private:
     mutable cvector_t m_q;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_FORMFACTORTRUNCATEDSPHEROID_H
diff --git a/Sample/HardParticle/HardParticles.h b/Sample/HardParticle/HardParticles.h
index 89776c3ee50392ce09913574e867a81308ddb05b..1484b324b78494d419fb8127587ef988c7862180 100644
--- a/Sample/HardParticle/HardParticles.h
+++ b/Sample/HardParticle/HardParticles.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_HARDPARTICLES_H
-#define BORNAGAIN_CORE_HARDPARTICLE_HARDPARTICLES_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_HARDPARTICLES_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_HARDPARTICLES_H
 
 #include "Sample/HardParticle/FormFactorAnisoPyramid.h"
 #include "Sample/HardParticle/FormFactorBar.h"
@@ -42,4 +42,4 @@
 #include "Sample/HardParticle/FormFactorTruncatedSphere.h"
 #include "Sample/HardParticle/FormFactorTruncatedSpheroid.h"
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_HARDPARTICLES_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_HARDPARTICLES_H
diff --git a/Sample/HardParticle/IFormFactorPolyhedron.h b/Sample/HardParticle/IFormFactorPolyhedron.h
index 9db32caf064ae2d10aeaabd8c8f9e4ac15e0931a..4f69f45445852b5b98855df9e9d223bcd471b9eb 100644
--- a/Sample/HardParticle/IFormFactorPolyhedron.h
+++ b/Sample/HardParticle/IFormFactorPolyhedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
 
 #include "Sample/HardParticle/PolyhedralTopology.h"
 #include "Sample/Scattering/IFormFactorBorn.h"
@@ -52,4 +52,4 @@ private:
     std::unique_ptr<Polyhedron> pimpl;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPOLYHEDRON_H
diff --git a/Sample/HardParticle/IFormFactorPrism.h b/Sample/HardParticle/IFormFactorPrism.h
index d83199b46a30e3de8774de25eb8e28bdfba6a06d..7582c14fb9e13ed7bcea363cda3c5dd45b024f4b 100644
--- a/Sample/HardParticle/IFormFactorPrism.h
+++ b/Sample/HardParticle/IFormFactorPrism.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPRISM_H
-#define BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPRISM_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPRISM_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPRISM_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 #include <memory>
@@ -44,4 +44,4 @@ private:
     std::unique_ptr<Prism> pimpl;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_IFORMFACTORPRISM_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_IFORMFACTORPRISM_H
diff --git a/Sample/HardParticle/IProfileRipple.h b/Sample/HardParticle/IProfileRipple.h
index c8a2e09d6bbc3406ff356c5e27b5bc2299356ee2..ebf75ade3ca32f6619b1d30452760a2c4d3d81c4 100644
--- a/Sample/HardParticle/IProfileRipple.h
+++ b/Sample/HardParticle/IProfileRipple.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_IPROFILERIPPLE_H
-#define BORNAGAIN_CORE_HARDPARTICLE_IPROFILERIPPLE_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_IPROFILERIPPLE_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_IPROFILERIPPLE_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -83,4 +83,4 @@ private:
     complex_t factor_yz(complex_t qy, complex_t qz) const final;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_IPROFILERIPPLE_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_IPROFILERIPPLE_H
diff --git a/Sample/HardParticle/PolyhedralComponents.h b/Sample/HardParticle/PolyhedralComponents.h
index dab7a26bb3d28bf69282c6250c0d0d211155bb29..990f2e43578dc1fced3f6d92d4962def194c7183 100644
--- a/Sample/HardParticle/PolyhedralComponents.h
+++ b/Sample/HardParticle/PolyhedralComponents.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
-#define BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/Vectors3D.h"
@@ -80,4 +80,4 @@ private:
                         double abslevel) const;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALCOMPONENTS_H
diff --git a/Sample/HardParticle/PolyhedralTopology.h b/Sample/HardParticle/PolyhedralTopology.h
index c6bb1c2bcb90690ff09764f010fd2af6dc69d7bc..6c9dfdce4a6a77fefca0cbd98e14adfa81c1487e 100644
--- a/Sample/HardParticle/PolyhedralTopology.h
+++ b/Sample/HardParticle/PolyhedralTopology.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
-#define BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
 
 #include <vector>
 
@@ -33,4 +33,4 @@ public:
     bool symmetry_Ci;
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRALTOPOLOGY_H
diff --git a/Sample/HardParticle/Polyhedron.h b/Sample/HardParticle/Polyhedron.h
index ff850fa5ba2702d1ab70d6166203633972edc568..0bba01eec76f6703d2c778da15ddb191da2d0b54 100644
--- a/Sample/HardParticle/Polyhedron.h
+++ b/Sample/HardParticle/Polyhedron.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRON_H
-#define BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRON_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRON_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRON_H
 
 #include "Sample/HardParticle/PolyhedralComponents.h"
 #include "Sample/HardParticle/PolyhedralTopology.h"
@@ -46,4 +46,4 @@ private:
     std::vector<kvector_t> m_vertices; //! for topZ, bottomZ computation only
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_POLYHEDRON_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_POLYHEDRON_H
diff --git a/Sample/HardParticle/Prism.h b/Sample/HardParticle/Prism.h
index ed0f4e1004f27a8e4ad12c50a7da20cd9413ba23..62cc397c19acdb26f0b9b224fb4102905c81739c 100644
--- a/Sample/HardParticle/Prism.h
+++ b/Sample/HardParticle/Prism.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_PRISM_H
-#define BORNAGAIN_CORE_HARDPARTICLE_PRISM_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_PRISM_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_PRISM_H
 
 #include "Sample/HardParticle/PolyhedralComponents.h"
 #include "Sample/HardParticle/PolyhedralTopology.h"
@@ -35,4 +35,4 @@ private:
     std::vector<kvector_t> m_vertices; //! for topZ, bottomZ computation only
 };
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_PRISM_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_PRISM_H
diff --git a/Sample/HardParticle/Ripples.h b/Sample/HardParticle/Ripples.h
index 1e61ce3272a1d9b3812fd9d608d568ba96bbd307..5208bf87065853aedad24237516f71dcfc7e8de3 100644
--- a/Sample/HardParticle/Ripples.h
+++ b/Sample/HardParticle/Ripples.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_HARDPARTICLE_RIPPLES_H
-#define BORNAGAIN_CORE_HARDPARTICLE_RIPPLES_H
+#ifndef BORNAGAIN_SAMPLE_HARDPARTICLE_RIPPLES_H
+#define BORNAGAIN_SAMPLE_HARDPARTICLE_RIPPLES_H
 
 #include "Base/Types/Complex.h"
 
@@ -32,4 +32,4 @@ complex_t profile_yz_triangular(complex_t qy, complex_t qz, double width, double
 
 } // namespace ripples
 
-#endif // BORNAGAIN_CORE_HARDPARTICLE_RIPPLES_H
+#endif // BORNAGAIN_SAMPLE_HARDPARTICLE_RIPPLES_H
diff --git a/Sample/Interference/DecouplingApproximationStrategy.cpp b/Sample/Interference/DecouplingApproximationStrategy.cpp
index 8b9b7ea07d6a598de9e866276c528bcdb1f944cf..7b6f493ad14590276e0c9ecb6ea708db0a7f0e56 100644
--- a/Sample/Interference/DecouplingApproximationStrategy.cpp
+++ b/Sample/Interference/DecouplingApproximationStrategy.cpp
@@ -19,14 +19,12 @@
 #include "Param/Base/RealParameter.h"
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Fresnel/FormFactorCoherentSum.h"
-#include "Sample/Interference/InterferenceFunctionUtils.h"
+#include "Sample/Interference/FormFactorPrecompute.h"
 
-using InterferenceFunctionUtils::PrecomputePolarizedFormFactors;
-using InterferenceFunctionUtils::PrecomputeScalarFormFactors;
-
-DecouplingApproximationStrategy::DecouplingApproximationStrategy(SimulationOptions sim_params,
-                                                                 bool polarized)
-    : IInterferenceFunctionStrategy(sim_params, polarized)
+DecouplingApproximationStrategy::DecouplingApproximationStrategy(
+    const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+    const IInterferenceFunction* p_iff, SimulationOptions sim_params, bool polarized)
+    : IInterferenceFunctionStrategy(weighted_formfactors, p_iff, sim_params, polarized)
 {
 }
 
@@ -38,7 +36,7 @@ DecouplingApproximationStrategy::scalarCalculation(const SimulationElement& sim_
 {
     double intensity = 0.0;
     complex_t amplitude = complex_t(0.0, 0.0);
-    auto precomputed_ff = PrecomputeScalarFormFactors(sim_element, m_formfactor_wrappers);
+    auto precomputed_ff = FormFactorPrecompute::scalar(sim_element, m_formfactor_wrappers);
     for (size_t i = 0; i < m_formfactor_wrappers.size(); ++i) {
         complex_t ff = precomputed_ff[i];
         if (std::isnan(ff.real()))
@@ -49,8 +47,8 @@ DecouplingApproximationStrategy::scalarCalculation(const SimulationElement& sim_
         intensity += fraction * std::norm(ff);
     }
     double amplitude_norm = std::norm(amplitude);
-    double itf_function = m_iff->evaluate(sim_element.getMeanQ());
-    return intensity + amplitude_norm * (itf_function - 1.0);
+    double coherence_factor = m_iff->evaluate(sim_element.getMeanQ());
+    return intensity + amplitude_norm * (coherence_factor - 1.0);
 }
 
 //! This is the polarized version
@@ -60,7 +58,7 @@ DecouplingApproximationStrategy::polarizedCalculation(const SimulationElement& s
     Eigen::Matrix2cd mean_intensity = Eigen::Matrix2cd::Zero();
     Eigen::Matrix2cd mean_amplitude = Eigen::Matrix2cd::Zero();
 
-    auto precomputed_ff = PrecomputePolarizedFormFactors(sim_element, m_formfactor_wrappers);
+    auto precomputed_ff = FormFactorPrecompute::polarized(sim_element, m_formfactor_wrappers);
     const auto& polarization_handler = sim_element.polarizationHandler();
     for (size_t i = 0; i < m_formfactor_wrappers.size(); ++i) {
         Eigen::Matrix2cd ff = precomputed_ff[i];
@@ -78,6 +76,6 @@ DecouplingApproximationStrategy::polarizedCalculation(const SimulationElement& s
     Eigen::Matrix2cd intensity_matrix = polarization_handler.getAnalyzerOperator() * mean_intensity;
     double amplitude_trace = std::abs(amplitude_matrix.trace());
     double intensity_trace = std::abs(intensity_matrix.trace());
-    double itf_function = m_iff->evaluate(sim_element.getMeanQ());
-    return intensity_trace + amplitude_trace * (itf_function - 1.0);
+    double coherence_factor = m_iff->evaluate(sim_element.getMeanQ());
+    return intensity_trace + amplitude_trace * (coherence_factor - 1.0);
 }
diff --git a/Sample/Interference/DecouplingApproximationStrategy.h b/Sample/Interference/DecouplingApproximationStrategy.h
index fc7312756554434b809405aa079b81a62aebe8e6..bb2569e9fd5ca409eb0416ab881717781efa0ca4 100644
--- a/Sample/Interference/DecouplingApproximationStrategy.h
+++ b/Sample/Interference/DecouplingApproximationStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_DECOUPLINGAPPROXIMATIONSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_DECOUPLINGAPPROXIMATIONSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_INTERFERENCE_DECOUPLINGAPPROXIMATIONSTRATEGY_H
+#define BORNAGAIN_SAMPLE_INTERFERENCE_DECOUPLINGAPPROXIMATIONSTRATEGY_H
 
 #include "Sample/Interference/IInterferenceFunctionStrategy.h"
 
@@ -26,11 +26,13 @@ class SimulationElement;
 class DecouplingApproximationStrategy final : public IInterferenceFunctionStrategy
 {
 public:
-    DecouplingApproximationStrategy(SimulationOptions sim_params, bool polarized);
+    DecouplingApproximationStrategy(const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+                                    const IInterferenceFunction* p_iff,
+                                    SimulationOptions sim_params, bool polarized);
 
 private:
     double scalarCalculation(const SimulationElement& sim_element) const override;
     double polarizedCalculation(const SimulationElement& sim_element) const override;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_DECOUPLINGAPPROXIMATIONSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_INTERFERENCE_DECOUPLINGAPPROXIMATIONSTRATEGY_H
diff --git a/Sample/Interference/InterferenceFunctionUtils.cpp b/Sample/Interference/FormFactorPrecompute.cpp
similarity index 62%
rename from Sample/Interference/InterferenceFunctionUtils.cpp
rename to Sample/Interference/FormFactorPrecompute.cpp
index 4982beb3258c0699e135df0f002b181baf7dab04..dbe2a0f6e77c0c8ba93381aac7b5acb6a027303d 100644
--- a/Sample/Interference/InterferenceFunctionUtils.cpp
+++ b/Sample/Interference/FormFactorPrecompute.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Sample/Interference/InterferenceFunctionUtils.cpp
+//! @file      Sample/Interference/FormFactorPrecompute.cpp
 //! @brief     Implements helper functions for InterferenceFunctions and Strategies.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,14 +12,12 @@
 //
 // ************************************************************************** //
 
-#include "Sample/Interference/InterferenceFunctionUtils.h"
+#include "Sample/Interference/FormFactorPrecompute.h"
 #include "Sample/Fresnel/FormFactorCoherentSum.h"
 
-namespace InterferenceFunctionUtils
-{
 std::vector<complex_t>
-PrecomputeScalarFormFactors(const SimulationElement& sim_element,
-                            const std::vector<FormFactorCoherentSum>& ff_wrappers)
+FormFactorPrecompute::scalar(const SimulationElement& sim_element,
+                             const std::vector<FormFactorCoherentSum>& ff_wrappers)
 {
     std::vector<complex_t> result;
     for (auto& ffw : ff_wrappers) {
@@ -28,14 +26,13 @@ PrecomputeScalarFormFactors(const SimulationElement& sim_element,
     return result;
 }
 
-matrixFFVector_t
-PrecomputePolarizedFormFactors(const SimulationElement& sim_element,
-                               const std::vector<FormFactorCoherentSum>& ff_wrappers)
+FormFactorPrecompute::matrixFFVector_t
+FormFactorPrecompute::polarized(const SimulationElement& sim_element,
+                                const std::vector<FormFactorCoherentSum>& ff_wrappers)
 {
-    matrixFFVector_t result;
+    FormFactorPrecompute::matrixFFVector_t result;
     for (auto& ffw : ff_wrappers) {
         result.push_back(ffw.evaluatePol(sim_element));
     }
     return result;
 }
-} // namespace InterferenceFunctionUtils
diff --git a/Sample/Interference/InterferenceFunctionUtils.h b/Sample/Interference/FormFactorPrecompute.h
similarity index 54%
rename from Sample/Interference/InterferenceFunctionUtils.h
rename to Sample/Interference/FormFactorPrecompute.h
index f45b666bf22d7ec9731688e97d7fcdc8b632a96f..f8ef50be63734c2e75bf76d54b553414b1a55e6c 100644
--- a/Sample/Interference/InterferenceFunctionUtils.h
+++ b/Sample/Interference/FormFactorPrecompute.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Sample/Interference/InterferenceFunctionUtils.h
+//! @file      Sample/Interference/FormFactorPrecompute.h
 //! @brief     Defines helper functions for InterferenceFunctions and Strategies.
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_INTERFERENCEFUNCTIONUTILS_H
-#define BORNAGAIN_CORE_MULTILAYER_INTERFERENCEFUNCTIONUTILS_H
+#ifndef BORNAGAIN_SAMPLE_INTERFERENCE_FORMFACTORPRECOMPUTE_H
+#define BORNAGAIN_SAMPLE_INTERFERENCE_FORMFACTORPRECOMPUTE_H
 
 #include "Base/Types/Complex.h"
 #include <Eigen/StdVector>
@@ -22,17 +22,15 @@
 class FormFactorCoherentSum;
 class SimulationElement;
 
-namespace InterferenceFunctionUtils
+namespace FormFactorPrecompute
 {
 using matrixFFVector_t = std::vector<Eigen::Matrix2cd, Eigen::aligned_allocator<Eigen::Matrix2cd>>;
 
-std::vector<complex_t>
-PrecomputeScalarFormFactors(const SimulationElement& sim_element,
-                            const std::vector<FormFactorCoherentSum>& ff_wrappers);
-matrixFFVector_t
-PrecomputePolarizedFormFactors(const SimulationElement& sim_element,
-                               const std::vector<FormFactorCoherentSum>& ff_wrappers);
+std::vector<complex_t> scalar(const SimulationElement& sim_element,
+                              const std::vector<FormFactorCoherentSum>& ff_wrappers);
+matrixFFVector_t polarized(const SimulationElement& sim_element,
+                           const std::vector<FormFactorCoherentSum>& ff_wrappers);
 
-} // namespace InterferenceFunctionUtils
+} // namespace FormFactorPrecompute
 
-#endif // BORNAGAIN_CORE_MULTILAYER_INTERFERENCEFUNCTIONUTILS_H
+#endif // BORNAGAIN_SAMPLE_INTERFERENCE_FORMFACTORPRECOMPUTE_H
diff --git a/Sample/Interference/IInterferenceFunctionStrategy.cpp b/Sample/Interference/IInterferenceFunctionStrategy.cpp
index cb4a6a9ddfac766aa7cb221e118873c0e00f9fb9..89cc44c9af0a52caa79ede41fdd599ae7af04752 100644
--- a/Sample/Interference/IInterferenceFunctionStrategy.cpp
+++ b/Sample/Interference/IInterferenceFunctionStrategy.cpp
@@ -19,19 +19,12 @@
 #include "Sample/Aggregate/InterferenceFunctionNone.h"
 #include "Sample/Fresnel/FormFactorCoherentSum.h"
 
-IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(const SimulationOptions& sim_params,
-                                                             bool polarized)
+IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(
+    const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+    const IInterferenceFunction* p_iff, const SimulationOptions& sim_params, bool polarized)
     : m_iff(nullptr), m_options(sim_params), m_polarized(polarized),
       m_integrator(
           make_integrator_miser(this, &IInterferenceFunctionStrategy::evaluate_for_fixed_angles, 2))
-{
-}
-
-IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy() = default;
-
-void IInterferenceFunctionStrategy::init(
-    const std::vector<FormFactorCoherentSum>& weighted_formfactors,
-    const IInterferenceFunction* p_iff)
 {
     if (weighted_formfactors.empty())
         throw Exceptions::ClassInitializationException(
@@ -41,10 +34,10 @@ void IInterferenceFunctionStrategy::init(
         m_iff.reset(p_iff->clone());
     else
         m_iff.reset(new InterferenceFunctionNone());
-
-    strategy_specific_post_init();
 }
 
+IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy() = default;
+
 double IInterferenceFunctionStrategy::evaluate(const SimulationElement& sim_element) const
 {
     if (m_options.isIntegrate() && (sim_element.getSolidAngle() > 0.0))
@@ -82,5 +75,3 @@ double IInterferenceFunctionStrategy::evaluate_for_fixed_angles(double* fraction
     SimulationElement sim_element = pars->pointElement(par0, par1);
     return pars->getIntegrationFactor(par0, par1) * evaluateSinglePoint(sim_element);
 }
-
-void IInterferenceFunctionStrategy::strategy_specific_post_init() {}
diff --git a/Sample/Interference/IInterferenceFunctionStrategy.h b/Sample/Interference/IInterferenceFunctionStrategy.h
index ba0a541a81c57adc184bc3ea60ef6193d651a249..9d6b56908820f1a29cec2cb98996fc3ef7a760d1 100644
--- a/Sample/Interference/IInterferenceFunctionStrategy.h
+++ b/Sample/Interference/IInterferenceFunctionStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_INTERFERENCE_IINTERFERENCEFUNCTIONSTRATEGY_H
+#define BORNAGAIN_SAMPLE_INTERFERENCE_IINTERFERENCEFUNCTIONSTRATEGY_H
 
 #include "Base/Types/Complex.h"
 #include "Sample/RT/SimulationOptions.h"
@@ -41,26 +41,23 @@ class SimulationElement;
 class IInterferenceFunctionStrategy
 {
 public:
-    IInterferenceFunctionStrategy(const SimulationOptions& sim_params, bool polarized);
+    IInterferenceFunctionStrategy(const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+                                  const IInterferenceFunction* p_iff,
+                                  const SimulationOptions& sim_params, bool polarized);
     virtual ~IInterferenceFunctionStrategy();
 
-    //! Initializes the object with form factors and an interference function
-    void init(const std::vector<FormFactorCoherentSum>& weighted_formfactors,
-              const IInterferenceFunction* p_iff);
-
     //! Calculates the intensity for scalar particles/interactions
     double evaluate(const SimulationElement& sim_element) const;
 
 protected:
     std::vector<FormFactorCoherentSum> m_formfactor_wrappers;
     std::unique_ptr<IInterferenceFunction> m_iff;
-    SimulationOptions m_options;
+    const SimulationOptions m_options;
 
 private:
     double evaluateSinglePoint(const SimulationElement& sim_element) const;
     double MCIntegratedEvaluate(const SimulationElement& sim_element) const;
     double evaluate_for_fixed_angles(double* fractions, size_t dim, void* params) const;
-    virtual void strategy_specific_post_init();
     //! Evaluates the intensity in the scalar case
     virtual double scalarCalculation(const SimulationElement& sim_element) const = 0;
     //! Evaluates the intensity in the polarized case
@@ -73,4 +70,4 @@ private:
 #endif
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_IINTERFERENCEFUNCTIONSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_INTERFERENCE_IINTERFERENCEFUNCTIONSTRATEGY_H
diff --git a/Sample/Interference/SSCAHelper.cpp b/Sample/Interference/SSCAHelper.cpp
index c9bd8dee49b60b901b552418e3ae160b1069f8e3..4961df4e69679574f58199e074ec4c7388376b0e 100644
--- a/Sample/Interference/SSCAHelper.cpp
+++ b/Sample/Interference/SSCAHelper.cpp
@@ -68,10 +68,9 @@ SSCAHelper::getMeanFormfactorNorm(double qp, const std::vector<complex_t>& preco
     return ff_orig * ff_conj;
 }
 
-void SSCAHelper::getMeanFormfactors(
-    double qp, Eigen::Matrix2cd& ff_orig, Eigen::Matrix2cd& ff_conj,
-    const InterferenceFunctionUtils::matrixFFVector_t& precomputed_ff,
-    const std::vector<FormFactorCoherentSum>& ff_wrappers) const
+void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd& ff_orig, Eigen::Matrix2cd& ff_conj,
+                                    const FormFactorPrecompute::matrixFFVector_t& precomputed_ff,
+                                    const std::vector<FormFactorCoherentSum>& ff_wrappers) const
 {
     ff_orig = Eigen::Matrix2cd::Zero();
     ff_conj = Eigen::Matrix2cd::Zero();
diff --git a/Sample/Interference/SSCAHelper.h b/Sample/Interference/SSCAHelper.h
index f96782a162b11b25421b3189cd6272df32b15400..eaff366a9dbf23818020c6a690deb3db99965d2a 100644
--- a/Sample/Interference/SSCAHelper.h
+++ b/Sample/Interference/SSCAHelper.h
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
-#define BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
+#ifndef BORNAGAIN_SAMPLE_INTERFERENCE_SSCAHELPER_H
+#define BORNAGAIN_SAMPLE_INTERFERENCE_SSCAHELPER_H
 
+#include "Sample/Interference/FormFactorPrecompute.h"
 #include "Sample/Interference/IInterferenceFunctionStrategy.h"
-#include "Sample/Interference/InterferenceFunctionUtils.h"
 #include <Eigen/StdVector>
 
 class FormFactorCoherentSum;
@@ -41,7 +41,7 @@ public:
     complex_t getMeanFormfactorNorm(double qp, const std::vector<complex_t>& precomputed_ff,
                                     const std::vector<FormFactorCoherentSum>& ff_wrappers) const;
     void getMeanFormfactors(double qp, Eigen::Matrix2cd& ff_orig, Eigen::Matrix2cd& ff_conj,
-                            const InterferenceFunctionUtils::matrixFFVector_t& precomputed_ff,
+                            const FormFactorPrecompute::matrixFFVector_t& precomputed_ff,
                             const std::vector<FormFactorCoherentSum>& ff_wrappers) const;
 
 private:
@@ -49,4 +49,4 @@ private:
     double m_mean_radius;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SSCAHELPER_H
+#endif // BORNAGAIN_SAMPLE_INTERFERENCE_SSCAHELPER_H
diff --git a/Sample/Interference/SSCApproximationStrategy.cpp b/Sample/Interference/SSCApproximationStrategy.cpp
index 6040bbfff232ecf0e4fb6a9a1d7e56f2c00c2409..05ea5486b1fd398a5964939c1b28ea85c37ef138 100644
--- a/Sample/Interference/SSCApproximationStrategy.cpp
+++ b/Sample/Interference/SSCApproximationStrategy.cpp
@@ -17,16 +17,11 @@
 #include "Sample/Aggregate/IInterferenceFunction.h"
 #include "Sample/Fresnel/FormFactorCoherentSum.h"
 
-using InterferenceFunctionUtils::PrecomputePolarizedFormFactors;
-using InterferenceFunctionUtils::PrecomputeScalarFormFactors;
-
-SSCApproximationStrategy::SSCApproximationStrategy(SimulationOptions sim_params, double kappa,
-                                                   bool polarized)
-    : IInterferenceFunctionStrategy(sim_params, polarized), m_helper(kappa)
-{
-}
-
-void SSCApproximationStrategy::strategy_specific_post_init()
+SSCApproximationStrategy::SSCApproximationStrategy(
+    const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+    const IInterferenceFunction* p_iff, SimulationOptions sim_params, bool polarized, double kappa)
+    : IInterferenceFunctionStrategy(weighted_formfactors, p_iff, sim_params, polarized),
+      m_helper(kappa)
 {
     m_helper.init(m_formfactor_wrappers);
 }
@@ -38,7 +33,7 @@ double SSCApproximationStrategy::scalarCalculation(const SimulationElement& sim_
 {
     double qp = sim_element.getMeanQ().magxy();
     double diffuse_intensity = 0.0;
-    auto precomputed_ff = PrecomputeScalarFormFactors(sim_element, m_formfactor_wrappers);
+    auto precomputed_ff = FormFactorPrecompute::scalar(sim_element, m_formfactor_wrappers);
     for (size_t i = 0; i < m_formfactor_wrappers.size(); ++i) {
         complex_t ff = precomputed_ff[i];
         double fraction = m_formfactor_wrappers[i].relativeAbundance();
@@ -58,7 +53,7 @@ double SSCApproximationStrategy::polarizedCalculation(const SimulationElement& s
 {
     double qp = sim_element.getMeanQ().magxy();
     Eigen::Matrix2cd diffuse_matrix = Eigen::Matrix2cd::Zero();
-    auto precomputed_ff = PrecomputePolarizedFormFactors(sim_element, m_formfactor_wrappers);
+    auto precomputed_ff = FormFactorPrecompute::polarized(sim_element, m_formfactor_wrappers);
     const auto& polarization_handler = sim_element.polarizationHandler();
     for (size_t i = 0; i < m_formfactor_wrappers.size(); ++i) {
         Eigen::Matrix2cd ff = precomputed_ff[i];
diff --git a/Sample/Interference/SSCApproximationStrategy.h b/Sample/Interference/SSCApproximationStrategy.h
index a40fca106e1731d78d93864fb22518cf278d28fa..073a478ab49406167253b03288dcbe115463a1d7 100644
--- a/Sample/Interference/SSCApproximationStrategy.h
+++ b/Sample/Interference/SSCApproximationStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SSCAPPROXIMATIONSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SSCAPPROXIMATIONSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_INTERFERENCE_SSCAPPROXIMATIONSTRATEGY_H
+#define BORNAGAIN_SAMPLE_INTERFERENCE_SSCAPPROXIMATIONSTRATEGY_H
 
 #include "Sample/Interference/SSCAHelper.h"
 
@@ -26,13 +26,14 @@ class SimulationElement;
 class SSCApproximationStrategy final : public IInterferenceFunctionStrategy
 {
 public:
-    SSCApproximationStrategy(SimulationOptions sim_params, double kappa, bool polarized);
+    SSCApproximationStrategy(const std::vector<FormFactorCoherentSum>& weighted_formfactors,
+                             const IInterferenceFunction* p_iff, SimulationOptions sim_params,
+                             bool polarized, double kappa);
 
 private:
-    void strategy_specific_post_init() override;
     double scalarCalculation(const SimulationElement& sim_element) const override;
     double polarizedCalculation(const SimulationElement& sim_element) const override;
     SSCAHelper m_helper;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SSCAPPROXIMATIONSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_INTERFERENCE_SSCAPPROXIMATIONSTRATEGY_H
diff --git a/Sample/Lattice/ILatticeOrientation.h b/Sample/Lattice/ILatticeOrientation.h
index ceeaa037e04e6d22b108c0ce426bc838257d0ac1..75b8d14a36ab41b48200381c2ed1df4d6065e306 100644
--- a/Sample/Lattice/ILatticeOrientation.h
+++ b/Sample/Lattice/ILatticeOrientation.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LATTICE_ILATTICEORIENTATION_H
-#define BORNAGAIN_CORE_LATTICE_ILATTICEORIENTATION_H
+#ifndef BORNAGAIN_SAMPLE_LATTICE_ILATTICEORIENTATION_H
+#define BORNAGAIN_SAMPLE_LATTICE_ILATTICEORIENTATION_H
 
 #include "Base/Vector/Transform3D.h"
 #include "Sample/Lattice/Lattice.h"
@@ -63,4 +63,4 @@ private:
     MillerIndex m_ind1, m_ind2;
 };
 
-#endif // BORNAGAIN_CORE_LATTICE_ILATTICEORIENTATION_H
+#endif // BORNAGAIN_SAMPLE_LATTICE_ILATTICEORIENTATION_H
diff --git a/Sample/Lattice/ISelectionRule.h b/Sample/Lattice/ISelectionRule.h
index 5f37754c4f2f249001e0d07d44164d7f375040be..4de5813c5179d101d74ac100237c73a34cdec551 100644
--- a/Sample/Lattice/ISelectionRule.h
+++ b/Sample/Lattice/ISelectionRule.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LATTICE_ISELECTIONRULE_H
-#define BORNAGAIN_CORE_LATTICE_ISELECTIONRULE_H
+#ifndef BORNAGAIN_SAMPLE_LATTICE_ISELECTIONRULE_H
+#define BORNAGAIN_SAMPLE_LATTICE_ISELECTIONRULE_H
 
 #include "Base/Vector/Vectors3D.h"
 
@@ -63,4 +63,4 @@ inline bool SimpleSelectionRule::coordinateSelected(const ivector_t& coordinate)
     return (m_a * coordinate[0] + m_b * coordinate[1] + m_c * coordinate[2]) % m_mod == 0;
 }
 
-#endif // BORNAGAIN_CORE_LATTICE_ISELECTIONRULE_H
+#endif // BORNAGAIN_SAMPLE_LATTICE_ISELECTIONRULE_H
diff --git a/Sample/Lattice/Lattice.h b/Sample/Lattice/Lattice.h
index 9350a4ac4727fd65170a1c7c3adecf473aca19ee..64a6b3f0f0d9a884cb63a00a940f598a4f1c5764 100644
--- a/Sample/Lattice/Lattice.h
+++ b/Sample/Lattice/Lattice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LATTICE_LATTICE_H
-#define BORNAGAIN_CORE_LATTICE_LATTICE_H
+#ifndef BORNAGAIN_SAMPLE_LATTICE_LATTICE_H
+#define BORNAGAIN_SAMPLE_LATTICE_LATTICE_H
 
 #include "Param/Node/INode.h"
 #include <vector>
@@ -116,4 +116,4 @@ private:
     mutable bool m_cache_ok;
 };
 
-#endif // BORNAGAIN_CORE_LATTICE_LATTICE_H
+#endif // BORNAGAIN_SAMPLE_LATTICE_LATTICE_H
diff --git a/Sample/Lattice/Lattice2D.h b/Sample/Lattice/Lattice2D.h
index 038b96434d47dbcee426a7c285aff1071666d275..3cb822c7a875e2ef876ec9e0897ca754f8c58254 100644
--- a/Sample/Lattice/Lattice2D.h
+++ b/Sample/Lattice/Lattice2D.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LATTICE_LATTICE2D_H
-#define BORNAGAIN_CORE_LATTICE_LATTICE2D_H
+#ifndef BORNAGAIN_SAMPLE_LATTICE_LATTICE2D_H
+#define BORNAGAIN_SAMPLE_LATTICE_LATTICE2D_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -102,4 +102,4 @@ private:
     double m_length;
 };
 
-#endif // BORNAGAIN_CORE_LATTICE_LATTICE2D_H
+#endif // BORNAGAIN_SAMPLE_LATTICE_LATTICE2D_H
diff --git a/Sample/Lattice/LatticeUtils.h b/Sample/Lattice/LatticeUtils.h
index 9dc6c8466808ab954cc4fefa84d831f0a1b80844..aa1b418938adbff49338a0faa6bc5bacbb3c31e1 100644
--- a/Sample/Lattice/LatticeUtils.h
+++ b/Sample/Lattice/LatticeUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LATTICE_LATTICEUTILS_H
-#define BORNAGAIN_CORE_LATTICE_LATTICEUTILS_H
+#ifndef BORNAGAIN_SAMPLE_LATTICE_LATTICEUTILS_H
+#define BORNAGAIN_SAMPLE_LATTICE_LATTICEUTILS_H
 
 #include "Sample/Lattice/Lattice.h"
 
@@ -26,4 +26,4 @@ Lattice createHCPLattice(double a, double c, const ILatticeOrientation& orientat
 Lattice createBCTLattice(double a, double c, const ILatticeOrientation& orientation);
 } // namespace LatticeUtils
 
-#endif // BORNAGAIN_CORE_LATTICE_LATTICEUTILS_H
+#endif // BORNAGAIN_SAMPLE_LATTICE_LATTICEUTILS_H
diff --git a/Sample/LibFF/SomeFormFactors.h b/Sample/LibFF/SomeFormFactors.h
index e14e89aadef7bc07c44266101640e637b8c11c18..209d55f1c746b7b7018df2b54c67450cd475468d 100644
--- a/Sample/LibFF/SomeFormFactors.h
+++ b/Sample/LibFF/SomeFormFactors.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_LIBFF_SOMEFORMFACTORS_H
-#define BORNAGAIN_CORE_LIBFF_SOMEFORMFACTORS_H
+#ifndef BORNAGAIN_SAMPLE_LIBFF_SOMEFORMFACTORS_H
+#define BORNAGAIN_SAMPLE_LIBFF_SOMEFORMFACTORS_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/Vectors3D.h"
@@ -27,4 +27,4 @@ complex_t ffSphere(cvector_t q, double R);
 
 } // namespace someff
 
-#endif // BORNAGAIN_CORE_LIBFF_SOMEFORMFACTORS_H
+#endif // BORNAGAIN_SAMPLE_LIBFF_SOMEFORMFACTORS_H
diff --git a/Sample/Material/BaseMaterialImpl.h b/Sample/Material/BaseMaterialImpl.h
index 164061f346a7e1296fbecd0fce3ae64cf7082f44..c4a4be65b94c5b9f2c944cfa7fcfe9a4c26e36c7 100644
--- a/Sample/Material/BaseMaterialImpl.h
+++ b/Sample/Material/BaseMaterialImpl.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_BASEMATERIALIMPL_H
-#define BORNAGAIN_CORE_MATERIAL_BASEMATERIALIMPL_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_BASEMATERIALIMPL_H
+#define BORNAGAIN_SAMPLE_MATERIAL_BASEMATERIALIMPL_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/EigenCore.h"
@@ -81,4 +81,4 @@ private:
     const std::string m_name;
 };
 
-#endif // BORNAGAIN_CORE_MATERIAL_BASEMATERIALIMPL_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_BASEMATERIALIMPL_H
diff --git a/Sample/Material/MagneticMaterialImpl.h b/Sample/Material/MagneticMaterialImpl.h
index 4820e591fcbf54d3261adcd5073d4142e017bb89..a7e304b1c1aa4ab3a546db87a13df1a4c12bda58 100644
--- a/Sample/Material/MagneticMaterialImpl.h
+++ b/Sample/Material/MagneticMaterialImpl.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_MAGNETICMATERIALIMPL_H
-#define BORNAGAIN_CORE_MATERIAL_MAGNETICMATERIALIMPL_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_MAGNETICMATERIALIMPL_H
+#define BORNAGAIN_SAMPLE_MATERIAL_MAGNETICMATERIALIMPL_H
 
 #include "Sample/Material/BaseMaterialImpl.h"
 
@@ -59,4 +59,4 @@ private:
     kvector_t m_magnetization; //!< magnetization
 };
 
-#endif // BORNAGAIN_CORE_MATERIAL_MAGNETICMATERIALIMPL_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_MAGNETICMATERIALIMPL_H
diff --git a/Sample/Material/Material.h b/Sample/Material/Material.h
index 4846e0352157871e0d84a5877fe2d29d642ec15c..7d33e6d78d48f18a65b9c07911ee524594e9d0ce 100644
--- a/Sample/Material/Material.h
+++ b/Sample/Material/Material.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_MATERIAL_H
-#define BORNAGAIN_CORE_MATERIAL_MATERIAL_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIAL_H
+#define BORNAGAIN_SAMPLE_MATERIAL_MATERIAL_H
 
 #include "Sample/Material/BaseMaterialImpl.h"
 #include <memory>
@@ -103,4 +103,4 @@ bool operator==(const Material& left, const Material& right);
 //! Comparison operator for material wrapper (inequality check)
 bool operator!=(const Material& left, const Material& right);
 
-#endif // BORNAGAIN_CORE_MATERIAL_MATERIAL_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_MATERIAL_H
diff --git a/Sample/Material/MaterialBySLDImpl.h b/Sample/Material/MaterialBySLDImpl.h
index e501bb4e5638f43d428c6b3d9397527b71f5067f..bb62940fe65d48fe1fb8001d78fc7581b1720cc1 100644
--- a/Sample/Material/MaterialBySLDImpl.h
+++ b/Sample/Material/MaterialBySLDImpl.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_MATERIALBYSLDIMPL_H
-#define BORNAGAIN_CORE_MATERIAL_MATERIALBYSLDIMPL_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
+#define BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
 
 #include "Sample/Material/MagneticMaterialImpl.h"
 #include "Sample/Material/MaterialFactoryFuncs.h"
@@ -63,4 +63,4 @@ private:
     double m_sld_imag; //!< imaginary part of scattering length density (negative by default)
 };
 
-#endif // BORNAGAIN_CORE_MATERIAL_MATERIALBYSLDIMPL_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_MATERIALBYSLDIMPL_H
diff --git a/Sample/Material/MaterialFactoryFuncs.h b/Sample/Material/MaterialFactoryFuncs.h
index 65b15ceae3f9aa40fb6ba2e522882722b66ec378..c01b0696581301783d08b2b3a0b08306839125c2 100644
--- a/Sample/Material/MaterialFactoryFuncs.h
+++ b/Sample/Material/MaterialFactoryFuncs.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_MATERIALFACTORYFUNCS_H
-#define BORNAGAIN_CORE_MATERIAL_MATERIALFACTORYFUNCS_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIALFACTORYFUNCS_H
+#define BORNAGAIN_SAMPLE_MATERIAL_MATERIALFACTORYFUNCS_H
 
 #include "Sample/Material/Material.h"
 
@@ -62,4 +62,4 @@ Material MaterialBySLD();
 Material MaterialBySLD(const std::string& name, double sld_real, double sld_imag,
                        kvector_t magnetization = {});
 
-#endif // BORNAGAIN_CORE_MATERIAL_MATERIALFACTORYFUNCS_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_MATERIALFACTORYFUNCS_H
diff --git a/Sample/Material/MaterialUtils.h b/Sample/Material/MaterialUtils.h
index 2393f938c17469b9454e45e0574c78b957b30ac9..ab0a14b25ff80cb66c53553d6174b91f7c7ea10d 100644
--- a/Sample/Material/MaterialUtils.h
+++ b/Sample/Material/MaterialUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_MATERIALUTILS_H
-#define BORNAGAIN_CORE_MATERIAL_MATERIALUTILS_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_MATERIALUTILS_H
+#define BORNAGAIN_SAMPLE_MATERIAL_MATERIALUTILS_H
 
 #include "Sample/Material/Material.h"
 
@@ -48,4 +48,4 @@ MATERIAL_TYPES checkMaterialTypes(const std::vector<const Material*>& materials)
 
 } // namespace MaterialUtils
 
-#endif // BORNAGAIN_CORE_MATERIAL_MATERIALUTILS_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_MATERIALUTILS_H
diff --git a/Sample/Material/RefractiveMaterialImpl.h b/Sample/Material/RefractiveMaterialImpl.h
index fc551adfd437be5b193379f016cd2b3140089924..005cd1684e09932d770964f8082260604750f9c7 100644
--- a/Sample/Material/RefractiveMaterialImpl.h
+++ b/Sample/Material/RefractiveMaterialImpl.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_REFRACTIVEMATERIALIMPL_H
-#define BORNAGAIN_CORE_MATERIAL_REFRACTIVEMATERIALIMPL_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_REFRACTIVEMATERIALIMPL_H
+#define BORNAGAIN_SAMPLE_MATERIAL_REFRACTIVEMATERIALIMPL_H
 
 #include "Sample/Material/MagneticMaterialImpl.h"
 #include "Sample/Material/Material.h"
@@ -65,4 +65,4 @@ private:
     double m_beta; //!< \f$\beta\f$ coefficient for refractive index \f$n = 1 - \delta + i \beta\f$
 };
 
-#endif // BORNAGAIN_CORE_MATERIAL_REFRACTIVEMATERIALIMPL_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_REFRACTIVEMATERIALIMPL_H
diff --git a/Sample/Material/WavevectorInfo.h b/Sample/Material/WavevectorInfo.h
index 79224eb2abb2819313fa79d68230ee56c35c5f09..e9f4e6659c5d510c19a35afb649164c363092b34 100644
--- a/Sample/Material/WavevectorInfo.h
+++ b/Sample/Material/WavevectorInfo.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MATERIAL_WAVEVECTORINFO_H
-#define BORNAGAIN_CORE_MATERIAL_WAVEVECTORINFO_H
+#ifndef BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
+#define BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
 
 #include "Base/Vector/Vectors3D.h"
 
@@ -48,4 +48,4 @@ private:
     double m_vacuum_wavelength;
 };
 
-#endif // BORNAGAIN_CORE_MATERIAL_WAVEVECTORINFO_H
+#endif // BORNAGAIN_SAMPLE_MATERIAL_WAVEVECTORINFO_H
diff --git a/Sample/Multilayer/Layer.h b/Sample/Multilayer/Layer.h
index c904c2f001629158c84ad363ddd337fd46064b08..5d2b7fe382367c6261d2e895a95821b29dbb7a8e 100644
--- a/Sample/Multilayer/Layer.h
+++ b/Sample/Multilayer/Layer.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_LAYER_H
-#define BORNAGAIN_CORE_MULTILAYER_LAYER_H
+#ifndef BORNAGAIN_SAMPLE_MULTILAYER_LAYER_H
+#define BORNAGAIN_SAMPLE_MULTILAYER_LAYER_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Sample/Material/Material.h"
@@ -60,4 +60,4 @@ private:
     unsigned int m_n_slices = 1;          //!< number of slices to create for graded layer approach
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_LAYER_H
+#endif // BORNAGAIN_SAMPLE_MULTILAYER_LAYER_H
diff --git a/Sample/Multilayer/MultiLayer.h b/Sample/Multilayer/MultiLayer.h
index 3d394f7a749b12a1b8f5b4afa2150d6b4fac1376..da2325fad302e76ea4eedc56add90ec28b3b62d6 100644
--- a/Sample/Multilayer/MultiLayer.h
+++ b/Sample/Multilayer/MultiLayer.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
-#define BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
+#ifndef BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYER_H
+#define BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYER_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Sample/Multilayer/RoughnessModels.h"
@@ -110,4 +110,4 @@ private:
     RoughnessModel m_roughness_model{RoughnessModel::DEFAULT};
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_MULTILAYER_H
+#endif // BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYER_H
diff --git a/Sample/Multilayer/MultiLayerUtils.h b/Sample/Multilayer/MultiLayerUtils.h
index 9ef842fd4e1f024a8df0ed51d0374ef2c61edf65..17721cd179ccd4ccdf2de94679f671cd571241e9 100644
--- a/Sample/Multilayer/MultiLayerUtils.h
+++ b/Sample/Multilayer/MultiLayerUtils.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_MULTILAYERUTILS_H
-#define BORNAGAIN_CORE_MULTILAYER_MULTILAYERUTILS_H
+#ifndef BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYERUTILS_H
+#define BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYERUTILS_H
 
 #include <cstddef>
 #include <vector>
@@ -50,4 +50,4 @@ std::vector<ZLimits> ParticleRegions(const MultiLayer& multilayer, bool use_slic
 bool hasRoughness(const MultiLayer& sample);
 } // namespace MultiLayerUtils
 
-#endif // BORNAGAIN_CORE_MULTILAYER_MULTILAYERUTILS_H
+#endif // BORNAGAIN_SAMPLE_MULTILAYER_MULTILAYERUTILS_H
diff --git a/Sample/Multilayer/PyImport.h b/Sample/Multilayer/PyImport.h
index b8fe77de467207dbf1a991557069fa52c3499c01..55517a72182ef75df9b377368068e5a2cb94d412 100644
--- a/Sample/Multilayer/PyImport.h
+++ b/Sample/Multilayer/PyImport.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PYIO_PYIMPORT_H
-#define BORNAGAIN_CORE_PYIO_PYIMPORT_H
+#ifndef BORNAGAIN_SAMPLE_MULTILAYER_PYIMPORT_H
+#define BORNAGAIN_SAMPLE_MULTILAYER_PYIMPORT_H
 
 #ifdef BORNAGAIN_PYTHON
 
@@ -45,4 +45,4 @@ std::vector<std::string> listOfFunctions(const std::string& script, const std::s
 
 #endif // BORNAGAIN_PYTHON
 
-#endif // BORNAGAIN_CORE_PYIO_PYIMPORT_H
+#endif // BORNAGAIN_SAMPLE_MULTILAYER_PYIMPORT_H
diff --git a/Sample/Multilayer/RoughnessModels.h b/Sample/Multilayer/RoughnessModels.h
index 7c43a4a84a855909466cc3251dacca09156020b0..761d453e71e877ddf5bb4cc93fc42a7eff1b625b 100644
--- a/Sample/Multilayer/RoughnessModels.h
+++ b/Sample/Multilayer/RoughnessModels.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_ROUGHNESSMODELS_H
-#define BORNAGAIN_CORE_MULTILAYER_ROUGHNESSMODELS_H
+#ifndef BORNAGAIN_SAMPLE_MULTILAYER_ROUGHNESSMODELS_H
+#define BORNAGAIN_SAMPLE_MULTILAYER_ROUGHNESSMODELS_H
 
 #include <string>
 
@@ -28,4 +28,4 @@ struct RoughnessModelWrap {
 };
 typedef RoughnessModelWrap::RoughnessModel RoughnessModel;
 
-#endif // BORNAGAIN_CORE_MULTILAYER_ROUGHNESSMODELS_H
+#endif // BORNAGAIN_SAMPLE_MULTILAYER_ROUGHNESSMODELS_H
diff --git a/Sample/Particle/Crystal.h b/Sample/Particle/Crystal.h
index 690840c1c3bce9925891a30a7565aeb5ebb22360..b60de86420421deb8ea305ae46968c655fb62572 100644
--- a/Sample/Particle/Crystal.h
+++ b/Sample/Particle/Crystal.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_CRYSTAL_H
-#define BORNAGAIN_CORE_PARTICLE_CRYSTAL_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
+#define BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
 
 #include "Sample/Lattice/Lattice.h"
 #include "Sample/Particle/IClusteredParticles.h"
@@ -52,4 +52,4 @@ private:
     double m_position_variance;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_CRYSTAL_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_CRYSTAL_H
diff --git a/Sample/Particle/FormFactorCoreShell.h b/Sample/Particle/FormFactorCoreShell.h
index 539d164da0732671581636596a47a50f36391c44..76a59df1f7dc3cbb51d812f981222f51eb1fc794 100644
--- a/Sample/Particle/FormFactorCoreShell.h
+++ b/Sample/Particle/FormFactorCoreShell.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_FORMFACTORCORESHELL_H
-#define BORNAGAIN_CORE_PARTICLE_FORMFACTORCORESHELL_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCORESHELL_H
+#define BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCORESHELL_H
 
 #include "Sample/Scattering/IFormFactor.h"
 
@@ -55,4 +55,4 @@ protected:
     std::unique_ptr<IFormFactor> m_shell;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_FORMFACTORCORESHELL_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCORESHELL_H
diff --git a/Sample/Particle/FormFactorCrystal.h b/Sample/Particle/FormFactorCrystal.h
index 9fbe492b2abb2c39c454dc5bd365b82bdb3a52b7..ea098a254b0fc30819a50188d646bbbce2f80326 100644
--- a/Sample/Particle/FormFactorCrystal.h
+++ b/Sample/Particle/FormFactorCrystal.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_FORMFACTORCRYSTAL_H
-#define BORNAGAIN_CORE_PARTICLE_FORMFACTORCRYSTAL_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCRYSTAL_H
+#define BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCRYSTAL_H
 
 #include "Sample/Lattice/Lattice.h"
 #include "Sample/Scattering/IFormFactorBorn.h"
@@ -64,4 +64,4 @@ private:
     double m_max_rec_length;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_FORMFACTORCRYSTAL_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORCRYSTAL_H
diff --git a/Sample/Particle/FormFactorWeighted.h b/Sample/Particle/FormFactorWeighted.h
index 20ee91190f9399d4595e6443becc31d25fb2a6f1..0b26dd44e3bc78a59810334fa031f819e3e9754d 100644
--- a/Sample/Particle/FormFactorWeighted.h
+++ b/Sample/Particle/FormFactorWeighted.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_FORMFACTORWEIGHTED_H
-#define BORNAGAIN_CORE_PARTICLE_FORMFACTORWEIGHTED_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORWEIGHTED_H
+#define BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORWEIGHTED_H
 
 #include "Sample/Scattering/IFormFactor.h"
 
@@ -57,4 +57,4 @@ protected:
     std::vector<double> m_weights;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_FORMFACTORWEIGHTED_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_FORMFACTORWEIGHTED_H
diff --git a/Sample/Particle/HomogeneousRegion.h b/Sample/Particle/HomogeneousRegion.h
index f17a8f664decb9e0addd036bb18d49ce29c35728..738155b0fc8b7442fa3c5962b682fae2fcf3b615 100644
--- a/Sample/Particle/HomogeneousRegion.h
+++ b/Sample/Particle/HomogeneousRegion.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_HOMOGENEOUSREGION_H
-#define BORNAGAIN_CORE_PARTICLE_HOMOGENEOUSREGION_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_HOMOGENEOUSREGION_H
+#define BORNAGAIN_SAMPLE_PARTICLE_HOMOGENEOUSREGION_H
 
 #include "Sample/Material/Material.h"
 
@@ -40,4 +40,4 @@ Material createAveragedMaterial(const Material& layer_mat,
 
 #endif // SWIG
 
-#endif // BORNAGAIN_CORE_PARTICLE_HOMOGENEOUSREGION_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_HOMOGENEOUSREGION_H
diff --git a/Sample/Particle/IAbstractParticle.h b/Sample/Particle/IAbstractParticle.h
index 88bd93d9075dec01b688ce809f9862c11a9258eb..366ca1e47b8cabe64af61528a39298e28b0d9118 100644
--- a/Sample/Particle/IAbstractParticle.h
+++ b/Sample/Particle/IAbstractParticle.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_IABSTRACTPARTICLE_H
-#define BORNAGAIN_CORE_PARTICLE_IABSTRACTPARTICLE_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_IABSTRACTPARTICLE_H
+#define BORNAGAIN_SAMPLE_PARTICLE_IABSTRACTPARTICLE_H
 
 #include "Sample/Scattering/ISample.h"
 
@@ -53,4 +53,4 @@ protected:
     double m_abundance{1.0}; // not a Parameter
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_IABSTRACTPARTICLE_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_IABSTRACTPARTICLE_H
diff --git a/Sample/Particle/IClusteredParticles.h b/Sample/Particle/IClusteredParticles.h
index bf3da47ecbd12156da9fb8a72098e52879e13fe9..0b9ed83f9c521405235ec05c0b1fa5522315ea58 100644
--- a/Sample/Particle/IClusteredParticles.h
+++ b/Sample/Particle/IClusteredParticles.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_ICLUSTEREDPARTICLES_H
-#define BORNAGAIN_CORE_PARTICLE_ICLUSTEREDPARTICLES_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_ICLUSTEREDPARTICLES_H
+#define BORNAGAIN_SAMPLE_PARTICLE_ICLUSTEREDPARTICLES_H
 
 #include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/ISample.h"
@@ -39,4 +39,4 @@ public:
     virtual std::vector<HomogeneousRegion> homogeneousRegions() const = 0;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_ICLUSTEREDPARTICLES_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_ICLUSTEREDPARTICLES_H
diff --git a/Sample/Particle/IParticle.h b/Sample/Particle/IParticle.h
index 17d25c9865681c29bee15837f5a666f19c27aa1d..918f8e44398dd5a2ff5fad5930c828b62992de68 100644
--- a/Sample/Particle/IParticle.h
+++ b/Sample/Particle/IParticle.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_IPARTICLE_H
-#define BORNAGAIN_CORE_PARTICLE_IPARTICLE_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_IPARTICLE_H
+#define BORNAGAIN_SAMPLE_PARTICLE_IPARTICLE_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Sample/Particle/IAbstractParticle.h"
@@ -95,4 +95,4 @@ protected:
     std::unique_ptr<IRotation> m_rotation;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_IPARTICLE_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_IPARTICLE_H
diff --git a/Sample/Particle/MesoCrystal.h b/Sample/Particle/MesoCrystal.h
index f2312ad67943d263af95ae363d4b630b9ee3fab3..401e9ac4ff79661040046ccb317e99d67a46c836 100644
--- a/Sample/Particle/MesoCrystal.h
+++ b/Sample/Particle/MesoCrystal.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_MESOCRYSTAL_H
-#define BORNAGAIN_CORE_PARTICLE_MESOCRYSTAL_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_MESOCRYSTAL_H
+#define BORNAGAIN_SAMPLE_PARTICLE_MESOCRYSTAL_H
 
 #include "Sample/Particle/IParticle.h"
 
@@ -44,4 +44,4 @@ private:
     std::unique_ptr<IFormFactor> m_meso_form_factor;           //!< Outer shape of this mesocrystal
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_MESOCRYSTAL_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_MESOCRYSTAL_H
diff --git a/Sample/Particle/Particle.h b/Sample/Particle/Particle.h
index 6e3d88f9b5a35a6dc5c4c7ed69e28b39f6d1093a..de7de4fd5a792ff4b3a90d83992dd5fc28e85acf 100644
--- a/Sample/Particle/Particle.h
+++ b/Sample/Particle/Particle.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_PARTICLE_H
-#define BORNAGAIN_CORE_PARTICLE_PARTICLE_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
+#define BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
 
 #include "Sample/Particle/IParticle.h"
 #include "Sample/Scattering/FormFactorDecoratorMaterial.h"
@@ -51,4 +51,4 @@ private:
     void initialize();
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_PARTICLE_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLE_H
diff --git a/Sample/Particle/ParticleComposition.h b/Sample/Particle/ParticleComposition.h
index eb9da7db1d0807f6d54164de732484da7e380120..af46ca11514ce0722692825a817841a139f8be4f 100644
--- a/Sample/Particle/ParticleComposition.h
+++ b/Sample/Particle/ParticleComposition.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_PARTICLECOMPOSITION_H
-#define BORNAGAIN_CORE_PARTICLE_PARTICLECOMPOSITION_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_PARTICLECOMPOSITION_H
+#define BORNAGAIN_SAMPLE_PARTICLE_PARTICLECOMPOSITION_H
 
 #include "Sample/Particle/IParticle.h"
 #include <memory>
@@ -57,4 +57,4 @@ private:
     void initialize();
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_PARTICLECOMPOSITION_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLECOMPOSITION_H
diff --git a/Sample/Particle/ParticleCoreShell.h b/Sample/Particle/ParticleCoreShell.h
index 8c38402582b30537853f211b901e2c2dc2ed3e49..28dedf3e3c4e2d3434066dbdf921534a3067b619 100644
--- a/Sample/Particle/ParticleCoreShell.h
+++ b/Sample/Particle/ParticleCoreShell.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_PARTICLECORESHELL_H
-#define BORNAGAIN_CORE_PARTICLE_PARTICLECORESHELL_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_PARTICLECORESHELL_H
+#define BORNAGAIN_SAMPLE_PARTICLE_PARTICLECORESHELL_H
 
 #include "Sample/Particle/IParticle.h"
 
@@ -60,4 +60,4 @@ inline const Particle* ParticleCoreShell::shellParticle() const
     return m_shell.get();
 }
 
-#endif // BORNAGAIN_CORE_PARTICLE_PARTICLECORESHELL_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLECORESHELL_H
diff --git a/Sample/Particle/ParticleDistribution.h b/Sample/Particle/ParticleDistribution.h
index 203c2e2d831e9e673336b3a5173ff14a815dbb78..abb90cb3702040e76305354c7310eeb97e14e785 100644
--- a/Sample/Particle/ParticleDistribution.h
+++ b/Sample/Particle/ParticleDistribution.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_PARTICLEDISTRIBUTION_H
-#define BORNAGAIN_CORE_PARTICLE_PARTICLEDISTRIBUTION_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_PARTICLEDISTRIBUTION_H
+#define BORNAGAIN_SAMPLE_PARTICLE_PARTICLEDISTRIBUTION_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Param/Distrib/ParameterDistribution.h"
@@ -55,4 +55,4 @@ private:
     ParameterDistribution m_par_distribution;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_PARTICLEDISTRIBUTION_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_PARTICLEDISTRIBUTION_H
diff --git a/Sample/Particle/SlicedParticle.h b/Sample/Particle/SlicedParticle.h
index 650d913a510c2b238aebca76b299c559b57ec0a2..4b3780a70ed80bc1eaa8c4804a2061f8fc506a50 100644
--- a/Sample/Particle/SlicedParticle.h
+++ b/Sample/Particle/SlicedParticle.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_SLICEDPARTICLE_H
-#define BORNAGAIN_CORE_PARTICLE_SLICEDPARTICLE_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_SLICEDPARTICLE_H
+#define BORNAGAIN_SAMPLE_PARTICLE_SLICEDPARTICLE_H
 
 #include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/IFormFactor.h"
@@ -30,4 +30,4 @@ struct SlicedParticle {
     std::vector<HomogeneousRegion> m_regions;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_SLICEDPARTICLE_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_SLICEDPARTICLE_H
diff --git a/Sample/Particle/TRange.h b/Sample/Particle/TRange.h
index 913e2c80682b2aa7970965d62719e6e833062b68..efcc72b53458b6489567d613257c014a166d8c0e 100644
--- a/Sample/Particle/TRange.h
+++ b/Sample/Particle/TRange.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARTICLE_TRANGE_H
-#define BORNAGAIN_CORE_PARTICLE_TRANGE_H
+#ifndef BORNAGAIN_SAMPLE_PARTICLE_TRANGE_H
+#define BORNAGAIN_SAMPLE_PARTICLE_TRANGE_H
 
 #include <cstddef>
 
@@ -52,4 +52,4 @@ private:
     size_t m_n_samples;
 };
 
-#endif // BORNAGAIN_CORE_PARTICLE_TRANGE_H
+#endif // BORNAGAIN_SAMPLE_PARTICLE_TRANGE_H
diff --git a/Sample/RT/ILayerRTCoefficients.h b/Sample/RT/ILayerRTCoefficients.h
index 54fb14be01bfd9c8a760bcee6107e9af0935e234..fe05c7cda8930c9add36b3ff18fe6f4cea6a3db3 100644
--- a/Sample/RT/ILayerRTCoefficients.h
+++ b/Sample/RT/ILayerRTCoefficients.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_RT_ILAYERRTCOEFFICIENTS_H
-#define BORNAGAIN_CORE_RT_ILAYERRTCOEFFICIENTS_H
+#ifndef BORNAGAIN_SAMPLE_RT_ILAYERRTCOEFFICIENTS_H
+#define BORNAGAIN_SAMPLE_RT_ILAYERRTCOEFFICIENTS_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Types/Exceptions.h"
@@ -67,4 +67,4 @@ public:
     }
 };
 
-#endif // BORNAGAIN_CORE_RT_ILAYERRTCOEFFICIENTS_H
+#endif // BORNAGAIN_SAMPLE_RT_ILAYERRTCOEFFICIENTS_H
diff --git a/Sample/RT/MatrixRTCoefficients.h b/Sample/RT/MatrixRTCoefficients.h
index ff4a1d47e695f7dfe9b8e56d014836eef4022c82..9e16a4ff72064baf1beb81f66f499e811dc27f19 100644
--- a/Sample/RT/MatrixRTCoefficients.h
+++ b/Sample/RT/MatrixRTCoefficients.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_H
-#define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_H
+#ifndef BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_H
+#define BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_H
 
 #include "Sample/RT/ILayerRTCoefficients.h"
 
@@ -67,4 +67,4 @@ public:
                                      //!< lambda=0
 };
 
-#endif // BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_H
+#endif // BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_H
diff --git a/Sample/RT/MatrixRTCoefficients_v2.h b/Sample/RT/MatrixRTCoefficients_v2.h
index a1b6ae483868962f0ee0d0670d7c732e9b2713f6..c66ddd8373edbe4fb48df5a876313960c3c16ddc 100644
--- a/Sample/RT/MatrixRTCoefficients_v2.h
+++ b/Sample/RT/MatrixRTCoefficients_v2.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V2_H
-#define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V2_H
+#ifndef BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V2_H
+#define BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V2_H
 
 #include "Base/Vector/Vectors3D.h"
 #include "Sample/RT/ILayerRTCoefficients.h"
@@ -67,4 +67,4 @@ private:
                          //!< the second eigenmode
 };
 
-#endif // BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V2_H
+#endif // BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V2_H
diff --git a/Sample/RT/MatrixRTCoefficients_v3.h b/Sample/RT/MatrixRTCoefficients_v3.h
index 0f7c99b80e92c28521e7d403eccb25102034b72b..5c4bd869a3a6b6af34baf65dea13e7bf208756f5 100644
--- a/Sample/RT/MatrixRTCoefficients_v3.h
+++ b/Sample/RT/MatrixRTCoefficients_v3.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V3_H
-#define BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V3_H
+#ifndef BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V3_H
+#define BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V3_H
 
 #include "Base/Vector/Vectors3D.h"
 #include "Sample/RT/ILayerRTCoefficients.h"
@@ -80,4 +80,4 @@ private:
     Eigen::Matrix2cd pMatrixHelper(double sign) const;
 };
 
-#endif // BORNAGAIN_CORE_RT_MATRIXRTCOEFFICIENTS_V3_H
+#endif // BORNAGAIN_SAMPLE_RT_MATRIXRTCOEFFICIENTS_V3_H
diff --git a/Sample/RT/ScalarRTCoefficients.h b/Sample/RT/ScalarRTCoefficients.h
index 1d6536c91d9c6dbebfd7e7ef9d23f72220347aae..136dff9aa8c0a59648537b1960cf951931c6b05b 100644
--- a/Sample/RT/ScalarRTCoefficients.h
+++ b/Sample/RT/ScalarRTCoefficients.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_RT_SCALARRTCOEFFICIENTS_H
-#define BORNAGAIN_CORE_RT_SCALARRTCOEFFICIENTS_H
+#ifndef BORNAGAIN_SAMPLE_RT_SCALARRTCOEFFICIENTS_H
+#define BORNAGAIN_SAMPLE_RT_SCALARRTCOEFFICIENTS_H
 
 #include "Sample/RT/ILayerRTCoefficients.h"
 
@@ -137,4 +137,4 @@ inline complex_t ScalarRTCoefficients::getScalarT() const
     return t_r(0);
 }
 
-#endif // BORNAGAIN_CORE_RT_SCALARRTCOEFFICIENTS_H
+#endif // BORNAGAIN_SAMPLE_RT_SCALARRTCOEFFICIENTS_H
diff --git a/Sample/RT/SimulationOptions.h b/Sample/RT/SimulationOptions.h
index b8f0b681fa1bc85ac9088f1dc776210c11cf25e2..cc81e1c6f414765f1cd70093840162ebbed2d588 100644
--- a/Sample/RT/SimulationOptions.h
+++ b/Sample/RT/SimulationOptions.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_PARAMETRIZATION_SIMULATIONOPTIONS_H
-#define BORNAGAIN_CORE_PARAMETRIZATION_SIMULATIONOPTIONS_H
+#ifndef BORNAGAIN_SAMPLE_RT_SIMULATIONOPTIONS_H
+#define BORNAGAIN_SAMPLE_RT_SIMULATIONOPTIONS_H
 
 #include "Base/Utils/ThreadInfo.h"
 #include <cstddef>
@@ -71,4 +71,4 @@ private:
     ThreadInfo m_thread_info;
 };
 
-#endif // BORNAGAIN_CORE_PARAMETRIZATION_SIMULATIONOPTIONS_H
+#endif // BORNAGAIN_SAMPLE_RT_SIMULATIONOPTIONS_H
diff --git a/Sample/SampleBuilderEngine/FixedBuilder.h b/Sample/SampleBuilderEngine/FixedBuilder.h
index 919b2c75fff8cb224149e072a7cd199e18b0643d..1599cf208f956150b9f3f2117d08615473ed2c14 100644
--- a/Sample/SampleBuilderEngine/FixedBuilder.h
+++ b/Sample/SampleBuilderEngine/FixedBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 #include <memory>
@@ -33,4 +33,4 @@ private:
     std::unique_ptr<const MultiLayer> m_sample;
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_FIXEDBUILDER_H
diff --git a/Sample/SampleBuilderEngine/IRegistry.h b/Sample/SampleBuilderEngine/IRegistry.h
index cd0dfc0835b72e1a6a0fc97c545d16b8f0fa6013..8660aff3179bedba7a495ae7eb78c1341e3e5e33 100644
--- a/Sample/SampleBuilderEngine/IRegistry.h
+++ b/Sample/SampleBuilderEngine/IRegistry.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_IREGISTRY_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_IREGISTRY_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_IREGISTRY_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_IREGISTRY_H
 
 #include "Base/Types/Exceptions.h"
 #include <map>
@@ -60,4 +60,4 @@ private:
     std::map<std::string, std::unique_ptr<ValueType>> m_data;
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_IREGISTRY_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_IREGISTRY_H
diff --git a/Sample/SampleBuilderEngine/ISampleBuilder.h b/Sample/SampleBuilderEngine/ISampleBuilder.h
index 6ec4a0624143b87b66260ed310c2e939bde69fa4..a9937e3284cb4b6c0f2304330a3be113ea70a8b2 100644
--- a/Sample/SampleBuilderEngine/ISampleBuilder.h
+++ b/Sample/SampleBuilderEngine/ISampleBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
 
 #include "Param/Base/IParameterized.h"
 
@@ -34,4 +34,4 @@ public:
     virtual size_t size() { return 1; }
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_ISAMPLEBUILDER_H
diff --git a/Sample/SampleBuilderEngine/SampleBuilderNode.h b/Sample/SampleBuilderEngine/SampleBuilderNode.h
index a7fccd573de842e03f38fce6d00b3205c8e393de..5980425e38cbc12ee7f1649ca0b6d826e7c801b0 100644
--- a/Sample/SampleBuilderEngine/SampleBuilderNode.h
+++ b/Sample/SampleBuilderEngine/SampleBuilderNode.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
 
 #include "Param/Node/INode.h"
 #include <memory>
@@ -49,4 +49,4 @@ private:
     std::shared_ptr<ISampleBuilder> m_sample_builder;
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEBUILDERNODE_H
diff --git a/Sample/SampleBuilderEngine/SampleComponents.h b/Sample/SampleBuilderEngine/SampleComponents.h
index b2f994bfbe196a47f27a5af80330f9f68c0db0b5..fbbf3e4104bc83f398da8f786b1096f8732f0a20 100644
--- a/Sample/SampleBuilderEngine/SampleComponents.h
+++ b/Sample/SampleBuilderEngine/SampleComponents.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
 
 #include "Sample/Correlations/FTDistributions2D.h"
 #include "Sample/SampleBuilderEngine/IRegistry.h"
@@ -36,4 +36,4 @@ public:
     FormFactorComponents();
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLECOMPONENTS_H
diff --git a/Sample/SampleBuilderEngine/SampleProvider.h b/Sample/SampleBuilderEngine/SampleProvider.h
index 2b7f40819fef8984e72963ea890dc60789a866c6..b620cdcce650eacaefb7cb07c2b42bf5696164e5 100644
--- a/Sample/SampleBuilderEngine/SampleProvider.h
+++ b/Sample/SampleBuilderEngine/SampleProvider.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
-#define BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
+#ifndef BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
+#define BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
 
 #include "Sample/SampleBuilderEngine/SampleBuilderNode.h"
 
@@ -51,4 +51,4 @@ private:
     SampleBuilderNode m_sample_builder;
 };
 
-#endif // BORNAGAIN_CORE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
+#endif // BORNAGAIN_SAMPLE_SAMPLEBUILDERENGINE_SAMPLEPROVIDER_H
diff --git a/Sample/Scattering/FormFactorBAPol.h b/Sample/Scattering/FormFactorBAPol.h
index 08dc5a83f1b4613af21063c94c286d0494b29efe..90d5928c7ae29c96283e7f7187e2fa3790a9c88c 100644
--- a/Sample/Scattering/FormFactorBAPol.h
+++ b/Sample/Scattering/FormFactorBAPol.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORBAPOL_H
-#define BORNAGAIN_CORE_MULTILAYER_FORMFACTORBAPOL_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORBAPOL_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORBAPOL_H
 
 #include "Sample/Scattering/IFormFactor.h"
 #include <memory>
@@ -56,4 +56,4 @@ private:
     std::unique_ptr<IFormFactor> m_form_factor;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_FORMFACTORBAPOL_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORBAPOL_H
diff --git a/Sample/Scattering/FormFactorDWBA.h b/Sample/Scattering/FormFactorDWBA.h
index 6586bb0ab27bb05824532a0b08efc79be5c70494..1eb7ccb0635cd354471f3ca3ae8b8c823f945ca0 100644
--- a/Sample/Scattering/FormFactorDWBA.h
+++ b/Sample/Scattering/FormFactorDWBA.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBA_H
-#define BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBA_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBA_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBA_H
 
 #include "Sample/Scattering/IFormFactor.h"
 #include <memory>
@@ -62,4 +62,4 @@ private:
     std::unique_ptr<const ILayerRTCoefficients> m_out_coeffs;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBA_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBA_H
diff --git a/Sample/Scattering/FormFactorDWBAPol.h b/Sample/Scattering/FormFactorDWBAPol.h
index 04a15dbcb418d94b5cf00e8529c30404986dc0a7..e3ad30b31878c5a69d462e7bb23a628308551a12 100644
--- a/Sample/Scattering/FormFactorDWBAPol.h
+++ b/Sample/Scattering/FormFactorDWBAPol.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBAPOL_H
-#define BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBAPOL_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBAPOL_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBAPOL_H
 
 #include "Sample/Scattering/IFormFactor.h"
 #include <memory>
@@ -66,4 +66,4 @@ private:
     std::unique_ptr<const ILayerRTCoefficients> m_out_coeffs;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_FORMFACTORDWBAPOL_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDWBAPOL_H
diff --git a/Sample/Scattering/FormFactorDecoratorMaterial.h b/Sample/Scattering/FormFactorDecoratorMaterial.h
index 64cd9ff44628854108b042d3284f410a2bc3a69e..77f40e401f459700e150b9761ecd24ce100f9a86 100644
--- a/Sample/Scattering/FormFactorDecoratorMaterial.h
+++ b/Sample/Scattering/FormFactorDecoratorMaterial.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
-#define BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
 
 #include "Sample/Material/Material.h"
 #include "Sample/Scattering/IFormFactorDecorator.h"
@@ -53,4 +53,4 @@ private:
     Material m_ambient_material;
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORMATERIAL_H
diff --git a/Sample/Scattering/FormFactorDecoratorPositionFactor.h b/Sample/Scattering/FormFactorDecoratorPositionFactor.h
index d3d36c61b98b487f3c525a75c3c063664287896f..15bde0d5d249543f7028ca38f0185b96ed6aeec7 100644
--- a/Sample/Scattering/FormFactorDecoratorPositionFactor.h
+++ b/Sample/Scattering/FormFactorDecoratorPositionFactor.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
-#define BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
 
 #include "Sample/Scattering/IFormFactorDecorator.h"
 
@@ -47,4 +47,4 @@ private:
     kvector_t m_position;
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORPOSITIONFACTOR_H
diff --git a/Sample/Scattering/FormFactorDecoratorRotation.h b/Sample/Scattering/FormFactorDecoratorRotation.h
index 0241d2e69e0257afb2e1efee611f3115ac9bde0f..937ae9819a5773eeca8d51fb88ceee4b5b62e425 100644
--- a/Sample/Scattering/FormFactorDecoratorRotation.h
+++ b/Sample/Scattering/FormFactorDecoratorRotation.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORROTATION_H
-#define BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORROTATION_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORROTATION_H
+#define BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORROTATION_H
 
 #include "Base/Vector/Transform3D.h"
 #include "Sample/Scattering/IFormFactorDecorator.h"
@@ -47,4 +47,4 @@ private:
     FormFactorDecoratorRotation(const IFormFactor& form_factor, const Transform3D& transform);
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_FORMFACTORDECORATORROTATION_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_FORMFACTORDECORATORROTATION_H
diff --git a/Sample/Scattering/IFormFactor.h b/Sample/Scattering/IFormFactor.h
index 603b2aadae1ce0ad26cc5d2b0e46cab7145a64fc..4bb7234eeb756dca525b4f398cff118d9c751c39 100644
--- a/Sample/Scattering/IFormFactor.h
+++ b/Sample/Scattering/IFormFactor.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_IFORMFACTOR_H
-#define BORNAGAIN_CORE_SCATTERING_IFORMFACTOR_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTOR_H
+#define BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTOR_H
 
 #include "Base/Types/Complex.h"
 #include "Sample/Scattering/ISample.h"
@@ -91,4 +91,4 @@ protected:
 IFormFactor* createTransformedFormFactor(const IFormFactor& formfactor, const IRotation& rot,
                                          kvector_t translation);
 
-#endif // BORNAGAIN_CORE_SCATTERING_IFORMFACTOR_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTOR_H
diff --git a/Sample/Scattering/IFormFactorBorn.h b/Sample/Scattering/IFormFactorBorn.h
index 30f87b3a5874db31f94f246f8f7698c31e3fba97..314217c096ffa135a30c6dccbd404cc067b5c872 100644
--- a/Sample/Scattering/IFormFactorBorn.h
+++ b/Sample/Scattering/IFormFactorBorn.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_IFORMFACTORBORN_H
-#define BORNAGAIN_CORE_SCATTERING_IFORMFACTORBORN_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORBORN_H
+#define BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORBORN_H
 
 #include "Sample/Scattering/IFormFactor.h"
 
@@ -109,4 +109,4 @@ public:
 };
 #endif
 
-#endif // BORNAGAIN_CORE_SCATTERING_IFORMFACTORBORN_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORBORN_H
diff --git a/Sample/Scattering/IFormFactorDecorator.h b/Sample/Scattering/IFormFactorDecorator.h
index e2ad8fc48aa01fa310d680c3224ef8ba59fc1f2b..1c9ae6673266c87f2982c5a6a5329dd507db4274 100644
--- a/Sample/Scattering/IFormFactorDecorator.h
+++ b/Sample/Scattering/IFormFactorDecorator.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_IFORMFACTORDECORATOR_H
-#define BORNAGAIN_CORE_SCATTERING_IFORMFACTORDECORATOR_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORDECORATOR_H
+#define BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORDECORATOR_H
 
 #include "Sample/Scattering/IFormFactor.h"
 
@@ -54,4 +54,4 @@ protected:
     IFormFactor* m_form_factor;
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_IFORMFACTORDECORATOR_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_IFORMFACTORDECORATOR_H
diff --git a/Sample/Scattering/ISample.h b/Sample/Scattering/ISample.h
index fb7acbd612b77169234f7e58033cebd38d77a6c4..b3817c7fc46c8dc870ecb6429c373718e3f0bc2b 100644
--- a/Sample/Scattering/ISample.h
+++ b/Sample/Scattering/ISample.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_ISAMPLE_H
-#define BORNAGAIN_CORE_SCATTERING_ISAMPLE_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_ISAMPLE_H
+#define BORNAGAIN_SAMPLE_SCATTERING_ISAMPLE_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -40,4 +40,4 @@ public:
     std::vector<const Material*> containedMaterials() const;
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_ISAMPLE_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_ISAMPLE_H
diff --git a/Sample/Scattering/LayerFillLimits.h b/Sample/Scattering/LayerFillLimits.h
index 18712344b43ef7ef61b0b8f973332868c8339c2a..de3345e66e313b17ec23b472572aae4becedb065 100644
--- a/Sample/Scattering/LayerFillLimits.h
+++ b/Sample/Scattering/LayerFillLimits.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_LAYERFILLLIMITS_H
-#define BORNAGAIN_CORE_MULTILAYER_LAYERFILLLIMITS_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_LAYERFILLLIMITS_H
+#define BORNAGAIN_SAMPLE_SCATTERING_LAYERFILLLIMITS_H
 
 #include "Sample/Scattering/ZLimits.h"
 #include <cstddef>
@@ -46,4 +46,4 @@ private:
     std::vector<ZLimits> m_layer_fill_limits;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_LAYERFILLLIMITS_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_LAYERFILLLIMITS_H
diff --git a/Sample/Scattering/Rotations.h b/Sample/Scattering/Rotations.h
index 736ba50501f1d6f48c785dd2d4b5bbb0405811e5..1b4b94a6737a91657f61c58d78a7d1527982a5d9 100644
--- a/Sample/Scattering/Rotations.h
+++ b/Sample/Scattering/Rotations.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_ROTATIONS_H
-#define BORNAGAIN_CORE_SCATTERING_ROTATIONS_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_ROTATIONS_H
+#define BORNAGAIN_SAMPLE_SCATTERING_ROTATIONS_H
 
 #include "Base/Types/ICloneable.h"
 #include "Param/Node/INode.h"
@@ -152,4 +152,4 @@ protected:
     double m_alpha, m_beta, m_gamma;
 };
 
-#endif // BORNAGAIN_CORE_SCATTERING_ROTATIONS_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_ROTATIONS_H
diff --git a/Sample/Scattering/ZLimits.h b/Sample/Scattering/ZLimits.h
index c60a4a887ebf98ba307d21c0e6ecd0776ef5efc1..87abf697fbc6f9c1ac5abe89336c57e9af923eb1 100644
--- a/Sample/Scattering/ZLimits.h
+++ b/Sample/Scattering/ZLimits.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SCATTERING_ZLIMITS_H
-#define BORNAGAIN_CORE_SCATTERING_ZLIMITS_H
+#ifndef BORNAGAIN_SAMPLE_SCATTERING_ZLIMITS_H
+#define BORNAGAIN_SAMPLE_SCATTERING_ZLIMITS_H
 
 #include <iostream>
 
@@ -67,4 +67,4 @@ bool operator!=(const ZLimits& left, const ZLimits& right);
 
 std::ostream& operator<<(std::ostream& ostr, const ZLimits& limits);
 
-#endif // BORNAGAIN_CORE_SCATTERING_ZLIMITS_H
+#endif // BORNAGAIN_SAMPLE_SCATTERING_ZLIMITS_H
diff --git a/Sample/Shapes/Box.h b/Sample/Shapes/Box.h
index a78982548f707dc2195f2ae826d9a96f2418507c..b77d836069d0d9f02e4da024e117920bc3505f4c 100644
--- a/Sample/Shapes/Box.h
+++ b/Sample/Shapes/Box.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_BOX_H
-#define BORNAGAIN_CORE_SHAPES_BOX_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_BOX_H
+#define BORNAGAIN_SAMPLE_SHAPES_BOX_H
 
 #include "Sample/Shapes/IShape.h"
 
@@ -24,4 +24,4 @@ public:
     ~Box();
 };
 
-#endif // BORNAGAIN_CORE_SHAPES_BOX_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_BOX_H
diff --git a/Sample/Shapes/DoubleEllipse.h b/Sample/Shapes/DoubleEllipse.h
index e61575803cfd9e0f9fdf770b865a2eb0300779fa..4119c928e8b56d4818c7072a05e9f6dd21713aff 100644
--- a/Sample/Shapes/DoubleEllipse.h
+++ b/Sample/Shapes/DoubleEllipse.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_DOUBLEELLIPSE_H
-#define BORNAGAIN_CORE_SHAPES_DOUBLEELLIPSE_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_DOUBLEELLIPSE_H
+#define BORNAGAIN_SAMPLE_SHAPES_DOUBLEELLIPSE_H
 
 #include "Sample/Shapes/IShape.h"
 
@@ -24,4 +24,4 @@ public:
     ~DoubleEllipse();
 };
 
-#endif // BORNAGAIN_CORE_SHAPES_DOUBLEELLIPSE_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_DOUBLEELLIPSE_H
diff --git a/Sample/Shapes/IShape.h b/Sample/Shapes/IShape.h
index 48d18d4a3e3c7d0e726665ea8c80fac973c1b21e..f4b08c3bad2d7cd71d62b0ccf0f5f360c1febf0e 100644
--- a/Sample/Shapes/IShape.h
+++ b/Sample/Shapes/IShape.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_ISHAPE_H
-#define BORNAGAIN_CORE_SHAPES_ISHAPE_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_ISHAPE_H
+#define BORNAGAIN_SAMPLE_SHAPES_ISHAPE_H
 
 #include "Base/Vector/Vectors3D.h"
 #include <vector>
@@ -48,4 +48,4 @@ std::vector<kvector_t> RectangleVertices(double length, double width, double z);
 //! Generate vertices of centered ellipse with given semi-axes at height z
 std::vector<kvector_t> EllipseVertices(double r_x, double r_y, double z);
 
-#endif // BORNAGAIN_CORE_SHAPES_ISHAPE_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_ISHAPE_H
diff --git a/Sample/Shapes/RippleCosine.h b/Sample/Shapes/RippleCosine.h
index 9e7009d53f9726cc54d163b5baa02bbc58fd8bec..fa8bcab7eb8d094ff0863710de3b37ff149e8816 100644
--- a/Sample/Shapes/RippleCosine.h
+++ b/Sample/Shapes/RippleCosine.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_RIPPLECOSINE_H
-#define BORNAGAIN_CORE_SHAPES_RIPPLECOSINE_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_RIPPLECOSINE_H
+#define BORNAGAIN_SAMPLE_SHAPES_RIPPLECOSINE_H
 
 #include "Sample/Shapes/IShape.h"
 
@@ -24,4 +24,4 @@ public:
     ~RippleCosine();
 };
 
-#endif // BORNAGAIN_CORE_SHAPES_RIPPLECOSINE_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_RIPPLECOSINE_H
diff --git a/Sample/Shapes/RippleSawtooth.h b/Sample/Shapes/RippleSawtooth.h
index d1f1d607166fb66d8bd531b1e35713e0bccd4c99..0f790cb3c634e39fb4dc228c51dc8dd15acbaffe 100644
--- a/Sample/Shapes/RippleSawtooth.h
+++ b/Sample/Shapes/RippleSawtooth.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_RIPPLESAWTOOTH_H
-#define BORNAGAIN_CORE_SHAPES_RIPPLESAWTOOTH_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_RIPPLESAWTOOTH_H
+#define BORNAGAIN_SAMPLE_SHAPES_RIPPLESAWTOOTH_H
 
 #include "Sample/Shapes/IShape.h"
 
@@ -24,4 +24,4 @@ public:
     ~RippleSawtooth();
 };
 
-#endif // BORNAGAIN_CORE_SHAPES_RIPPLESAWTOOTH_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_RIPPLESAWTOOTH_H
diff --git a/Sample/Shapes/TruncatedEllipsoid.h b/Sample/Shapes/TruncatedEllipsoid.h
index 29726780df9aa30b8e8d32d635b8af12b2ef5ac3..a1bad4d2bfeaf756d111be6e5653fa64c37c5ac8 100644
--- a/Sample/Shapes/TruncatedEllipsoid.h
+++ b/Sample/Shapes/TruncatedEllipsoid.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SHAPES_TRUNCATEDELLIPSOID_H
-#define BORNAGAIN_CORE_SHAPES_TRUNCATEDELLIPSOID_H
+#ifndef BORNAGAIN_SAMPLE_SHAPES_TRUNCATEDELLIPSOID_H
+#define BORNAGAIN_SAMPLE_SHAPES_TRUNCATEDELLIPSOID_H
 
 #include "Sample/Shapes/IShape.h"
 
@@ -24,4 +24,4 @@ public:
     ~TruncatedEllipsoid();
 };
 
-#endif // BORNAGAIN_CORE_SHAPES_TRUNCATEDELLIPSOID_H
+#endif // BORNAGAIN_SAMPLE_SHAPES_TRUNCATEDELLIPSOID_H
diff --git a/Sample/Slice/KzComputation.h b/Sample/Slice/KzComputation.h
index 6f5eeeab26c3015ef3b184b2eeb66ae5081a331c..f4af8ae9b506572da588db8e3ab6354f3b008d49 100644
--- a/Sample/Slice/KzComputation.h
+++ b/Sample/Slice/KzComputation.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_KZCOMPUTATION_H
-#define BORNAGAIN_CORE_MULTILAYER_KZCOMPUTATION_H
+#ifndef BORNAGAIN_SAMPLE_SLICE_KZCOMPUTATION_H
+#define BORNAGAIN_SAMPLE_SLICE_KZCOMPUTATION_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/Vectors3D.h"
@@ -48,4 +48,4 @@ std::vector<complex_t> computeKzFromSLDs(const std::vector<Slice>& slices, doubl
 std::vector<complex_t> computeKzFromRefIndices(const std::vector<Slice>& slices, kvector_t k);
 } // namespace KzComputation
 
-#endif // BORNAGAIN_CORE_MULTILAYER_KZCOMPUTATION_H
+#endif // BORNAGAIN_SAMPLE_SLICE_KZCOMPUTATION_H
diff --git a/Sample/Slice/LayerInterface.h b/Sample/Slice/LayerInterface.h
index 0ad36e3f68a6bc5d82fe7edb6c62351440b2e7d1..edebd0104d71e876a6cb95b5930c0b2dfcb8e116 100644
--- a/Sample/Slice/LayerInterface.h
+++ b/Sample/Slice/LayerInterface.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_LAYERINTERFACE_H
-#define BORNAGAIN_CORE_MULTILAYER_LAYERINTERFACE_H
+#ifndef BORNAGAIN_SAMPLE_SLICE_LAYERINTERFACE_H
+#define BORNAGAIN_SAMPLE_SLICE_LAYERINTERFACE_H
 
 #include "Sample/Scattering/ISample.h"
 #include <memory>
@@ -75,4 +75,4 @@ inline const Layer* LayerInterface::bottomLayer() const
     return m_bottomLayer;
 }
 
-#endif // BORNAGAIN_CORE_MULTILAYER_LAYERINTERFACE_H
+#endif // BORNAGAIN_SAMPLE_SLICE_LAYERINTERFACE_H
diff --git a/Sample/Slice/LayerRoughness.h b/Sample/Slice/LayerRoughness.h
index 4273c963c79a90522d50b4f8858ff8f520b9a50b..9a8281206b745be682a29875ed86e16ff0d4c5e4 100644
--- a/Sample/Slice/LayerRoughness.h
+++ b/Sample/Slice/LayerRoughness.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_LAYERROUGHNESS_H
-#define BORNAGAIN_CORE_MULTILAYER_LAYERROUGHNESS_H
+#ifndef BORNAGAIN_SAMPLE_SLICE_LAYERROUGHNESS_H
+#define BORNAGAIN_SAMPLE_SLICE_LAYERROUGHNESS_H
 
 #include "Sample/Scattering/ISample.h"
 
@@ -66,4 +66,4 @@ private:
     double m_lateralCorrLength; //!< lateral correlation length of the roughness
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_LAYERROUGHNESS_H
+#endif // BORNAGAIN_SAMPLE_SLICE_LAYERROUGHNESS_H
diff --git a/Sample/Slice/Slice.h b/Sample/Slice/Slice.h
index c09a8c6013e59bef022bdeb76c388dcdbd205356..0bd9751b985adbc735c7ef4d13fc15c2dea026bf 100644
--- a/Sample/Slice/Slice.h
+++ b/Sample/Slice/Slice.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SLICE_H
-#define BORNAGAIN_CORE_MULTILAYER_SLICE_H
+#ifndef BORNAGAIN_SAMPLE_SLICE_SLICE_H
+#define BORNAGAIN_SAMPLE_SLICE_SLICE_H
 
 #include "Sample/Material/Material.h"
 #include <memory>
@@ -64,4 +64,4 @@ private:
     std::unique_ptr<LayerRoughness> m_top_roughness;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SLICE_H
+#endif // BORNAGAIN_SAMPLE_SLICE_SLICE_H
diff --git a/Sample/Slice/SlicedFormFactorList.h b/Sample/Slice/SlicedFormFactorList.h
index ee05016bac4a2e27412e08383925a808a346d6bd..84182826c9a4afd95e1562fd6c76529a71bfd5e1 100644
--- a/Sample/Slice/SlicedFormFactorList.h
+++ b/Sample/Slice/SlicedFormFactorList.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SLICEDFORMFACTORLIST_H
-#define BORNAGAIN_CORE_MULTILAYER_SLICEDFORMFACTORLIST_H
+#ifndef BORNAGAIN_SAMPLE_SLICE_SLICEDFORMFACTORLIST_H
+#define BORNAGAIN_SAMPLE_SLICE_SLICEDFORMFACTORLIST_H
 
 #include "Sample/Particle/HomogeneousRegion.h"
 #include "Sample/Scattering/IFormFactor.h"
@@ -52,4 +52,4 @@ private:
     std::map<size_t, std::vector<HomogeneousRegion>> m_region_map;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SLICEDFORMFACTORLIST_H
+#endif // BORNAGAIN_SAMPLE_SLICE_SLICEDFORMFACTORLIST_H
diff --git a/Sample/SoftParticle/FormFactorGauss.h b/Sample/SoftParticle/FormFactorGauss.h
index 8962a24924d729fd540fd16e4e64282bec0ba76c..9ad6ce5442347f3b571878cf3067ebb62c1dd685 100644
--- a/Sample/SoftParticle/FormFactorGauss.h
+++ b/Sample/SoftParticle/FormFactorGauss.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORGAUSS_H
-#define BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORGAUSS_H
+#ifndef BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORGAUSS_H
+#define BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORGAUSS_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 
@@ -46,4 +46,4 @@ private:
     void initialize();
 };
 
-#endif // BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORGAUSS_H
+#endif // BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORGAUSS_H
diff --git a/Sample/SoftParticle/FormFactorSphereGaussianRadius.h b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
index bfd89a98ec2410f40edae3bd448decbc1fa1a8a5..d4042de7b605644d803230653585202b203ce6cf 100644
--- a/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
+++ b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
-#define BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
+#ifndef BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
+#define BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
 
 #include "Sample/Scattering/IFormFactorBorn.h"
 #include <memory>
@@ -49,4 +49,4 @@ private:
     double m_mean_r3; //!< This is the radius that gives the mean volume
 };
 
-#endif // BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
+#endif // BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHEREGAUSSIANRADIUS_H
diff --git a/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
index f15a6a63728d90bb9ab449541bc79d447cf15bf6..c7b9c29da3b0021a67cd6e9c6f45d3f0fbf403be 100644
--- a/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
+++ b/Sample/SoftParticle/FormFactorSphereLogNormalRadius.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
-#define BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
+#ifndef BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
+#define BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
 
 #include "Base/Types/SafePointerVector.h"
 #include "Sample/Scattering/IFormFactorBorn.h"
@@ -48,4 +48,4 @@ private:
     std::vector<double> m_probabilities;
 };
 
-#endif // BORNAGAIN_CORE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
+#endif // BORNAGAIN_SAMPLE_SOFTPARTICLE_FORMFACTORSPHERELOGNORMALRADIUS_H
diff --git a/Sample/SoftParticle/SoftParticles.h b/Sample/SoftParticle/SoftParticles.h
index fdb65430c8d9d1d44198cc3dddb280d88447df3b..7b0d844198d98d2980760cb86542bad2e56afebb 100644
--- a/Sample/SoftParticle/SoftParticles.h
+++ b/Sample/SoftParticle/SoftParticles.h
@@ -12,11 +12,11 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
-#define BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
+#ifndef BORNAGAIN_SAMPLE_SOFTPARTICLE_SOFTPARTICLES_H
+#define BORNAGAIN_SAMPLE_SOFTPARTICLE_SOFTPARTICLES_H
 
 #include "Sample/SoftParticle/FormFactorGauss.h"
 #include "Sample/SoftParticle/FormFactorSphereGaussianRadius.h"
 #include "Sample/SoftParticle/FormFactorSphereLogNormalRadius.h"
 
-#endif // BORNAGAIN_CORE_SOFTPARTICLE_SOFTPARTICLES_H
+#endif // BORNAGAIN_SAMPLE_SOFTPARTICLE_SOFTPARTICLES_H
diff --git a/Sample/Specular/ISpecularStrategy.h b/Sample/Specular/ISpecularStrategy.h
index fef8fb11e5890ff6786e96162099d736d72be2fa..7d1e37f73ad0eeec82287e639afa159df03b5eaa 100644
--- a/Sample/Specular/ISpecularStrategy.h
+++ b/Sample/Specular/ISpecularStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_ISPECULARSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_ISPECULARSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_ISPECULARSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_ISPECULARSTRATEGY_H
 
 #include "Base/Types/Complex.h"
 #include "Base/Vector/Vectors3D.h"
@@ -45,4 +45,4 @@ public:
                              const std::vector<complex_t>& kz) const = 0;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_ISPECULARSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_ISPECULARSTRATEGY_H
diff --git a/Sample/Specular/SpecularMagneticNewNCStrategy.h b/Sample/Specular/SpecularMagneticNewNCStrategy.h
index ab6c9fd0847a7e89480440f85cdce9c813d444e4..95e8d0028d2122c02d2b7e822fb56fd17f064bd8 100644
--- a/Sample/Specular/SpecularMagneticNewNCStrategy.h
+++ b/Sample/Specular/SpecularMagneticNewNCStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWNCSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWNCSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWNCSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWNCSTRATEGY_H
 
 #include "Sample/Specular/SpecularMagneticNewStrategy.h"
 #include <memory>
@@ -39,4 +39,4 @@ private:
                                 const MatrixRTCoefficients_v3& coeff_i1, double sigma) const;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWNCSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWNCSTRATEGY_H
diff --git a/Sample/Specular/SpecularMagneticNewStrategy.h b/Sample/Specular/SpecularMagneticNewStrategy.h
index b314233671c7f996148f0a73efadbc1658b39b0c..b02ae99bcfdae61334d7e4dbe426cf4b93cb4c20 100644
--- a/Sample/Specular/SpecularMagneticNewStrategy.h
+++ b/Sample/Specular/SpecularMagneticNewStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWSTRATEGY_H
 
 #include "Sample/RT/MatrixRTCoefficients_v3.h"
 #include "Sample/Specular/ISpecularStrategy.h"
@@ -54,4 +54,4 @@ private:
                           const std::vector<Slice>& slices) const;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWSTRATEGY_H
diff --git a/Sample/Specular/SpecularMagneticNewTanhStrategy.h b/Sample/Specular/SpecularMagneticNewTanhStrategy.h
index 509871a6ad079672a1efadeed4e5b966edc12ccd..1ea39fb3d2bd62eba848e6f087359e611ac1c55a 100644
--- a/Sample/Specular/SpecularMagneticNewTanhStrategy.h
+++ b/Sample/Specular/SpecularMagneticNewTanhStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWTANHSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWTANHSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWTANHSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWTANHSTRATEGY_H
 
 #include "Sample/Specular/SpecularMagneticNewStrategy.h"
 
@@ -36,4 +36,4 @@ private:
                                             bool inverse = false) const;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICNEWTANHSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICNEWTANHSTRATEGY_H
diff --git a/Sample/Specular/SpecularMagneticOldStrategy.h b/Sample/Specular/SpecularMagneticOldStrategy.h
index 2ad65921c08b7e57671580c54639411ea0f7bf52..4283847c6c4bbd32fb581dba4847b385c4dd78be 100644
--- a/Sample/Specular/SpecularMagneticOldStrategy.h
+++ b/Sample/Specular/SpecularMagneticOldStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICOLDSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICOLDSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICOLDSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICOLDSTRATEGY_H
 
 #include "Sample/RT/MatrixRTCoefficients.h"
 #include "Sample/Specular/ISpecularStrategy.h"
@@ -37,4 +37,4 @@ public:
 
 }; // class SpecularMagneticOldStrategy
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICOLDSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICOLDSTRATEGY_H
diff --git a/Sample/Specular/SpecularMagneticStrategy.h b/Sample/Specular/SpecularMagneticStrategy.h
index 4df0c0b365c2263782563f1b3686a00faef10480..1dad6b1ade373a24e18e3fac3c304ba74a886eb4 100644
--- a/Sample/Specular/SpecularMagneticStrategy.h
+++ b/Sample/Specular/SpecularMagneticStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICSTRATEGY_H
 
 #include "Sample/RT/MatrixRTCoefficients_v2.h"
 #include "Sample/Specular/ISpecularStrategy.h"
@@ -68,4 +68,4 @@ private:
     findNormalizationCoefficients(const MatrixRTCoefficients_v2& coeff);
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARMAGNETICSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARMAGNETICSTRATEGY_H
diff --git a/Sample/Specular/SpecularScalarNCStrategy.h b/Sample/Specular/SpecularScalarNCStrategy.h
index ff99d9e22ad79a217b87ee691f7c5957b43d7727..bb6e39f54920bca4216f6006a3d13544eb9916bf 100644
--- a/Sample/Specular/SpecularScalarNCStrategy.h
+++ b/Sample/Specular/SpecularScalarNCStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARNCSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARNCSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARNCSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARNCSTRATEGY_H
 
 #include "Sample/Specular/SpecularScalarStrategy.h"
 
@@ -38,4 +38,4 @@ private:
                                                        double sigma) const override;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARNCSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARNCSTRATEGY_H
diff --git a/Sample/Specular/SpecularScalarStrategy.h b/Sample/Specular/SpecularScalarStrategy.h
index 9e4716538dfec1723787498ccb34d7e108bbc490..47348952e0035788feb0ff320841b22bc7cc0593 100644
--- a/Sample/Specular/SpecularScalarStrategy.h
+++ b/Sample/Specular/SpecularScalarStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARSTRATEGY_H
 
 #include "Sample/RT/ScalarRTCoefficients.h"
 #include "Sample/Specular/ISpecularStrategy.h"
@@ -55,4 +55,4 @@ private:
                               const std::vector<complex_t>& kz) const;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARSTRATEGY_H
diff --git a/Sample/Specular/SpecularScalarTanhStrategy.h b/Sample/Specular/SpecularScalarTanhStrategy.h
index cc1434ffcfc536cf8816100c0ffdfbe02850b07e..6c22c5a64e8b9bce65b35b5eddf1057d6da1511c 100644
--- a/Sample/Specular/SpecularScalarTanhStrategy.h
+++ b/Sample/Specular/SpecularScalarTanhStrategy.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARTANHSTRATEGY_H
-#define BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARTANHSTRATEGY_H
+#ifndef BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARTANHSTRATEGY_H
+#define BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARTANHSTRATEGY_H
 
 #include "Sample/Specular/SpecularScalarStrategy.h"
 
@@ -34,4 +34,4 @@ private:
                                                        double sigma) const override;
 };
 
-#endif // BORNAGAIN_CORE_MULTILAYER_SPECULARSCALARTANHSTRATEGY_H
+#endif // BORNAGAIN_SAMPLE_SPECULAR_SPECULARSCALARTANHSTRATEGY_H
diff --git a/Sample/StandardSamples/BoxCompositionBuilder.h b/Sample/StandardSamples/BoxCompositionBuilder.h
index 804dd86ab5518dda138673fb703a646fffc03d5d..2c287c6de44d54edd2244bb4d58c8d67aeaca3c0 100644
--- a/Sample/StandardSamples/BoxCompositionBuilder.h
+++ b/Sample/StandardSamples/BoxCompositionBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -62,4 +62,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXCOMPOSITIONBUILDER_H
diff --git a/Sample/StandardSamples/BoxesSquareLatticeBuilder.h b/Sample/StandardSamples/BoxesSquareLatticeBuilder.h
index 92851fee181dea372cf2ed3ffe5f06586292948a..c1698475bb3b6941ecec7fe048ce5a10797ac15c 100644
--- a/Sample/StandardSamples/BoxesSquareLatticeBuilder.h
+++ b/Sample/StandardSamples/BoxesSquareLatticeBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_BOXESSQUARELATTICEBUILDER_H
diff --git a/Sample/StandardSamples/CoreShellParticleBuilder.h b/Sample/StandardSamples/CoreShellParticleBuilder.h
index a4a48b87987dcbf4dec4ad23ffb9a29ae83ae5f8..557ff0adf8b64165ac10cd0f45cdb5afdeb60384 100644
--- a/Sample/StandardSamples/CoreShellParticleBuilder.h
+++ b/Sample/StandardSamples/CoreShellParticleBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -35,4 +35,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_CORESHELLPARTICLEBUILDER_H
diff --git a/Sample/StandardSamples/CustomMorphologyBuilder.h b/Sample/StandardSamples/CustomMorphologyBuilder.h
index d618b0298488b2b94fb4f5ea5f1f8b326b2b7e52..6652dd83ffd2faef681185f4ccc67ecf1f660f1a 100644
--- a/Sample/StandardSamples/CustomMorphologyBuilder.h
+++ b/Sample/StandardSamples/CustomMorphologyBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_CUSTOMMORPHOLOGYBUILDER_H
diff --git a/Sample/StandardSamples/CylindersAndPrismsBuilder.h b/Sample/StandardSamples/CylindersAndPrismsBuilder.h
index 5ff0743ed2a4c77e675ff77d7314415072a5d5f6..1714872d39872fad19e20c4b3a5330b85b965c6d 100644
--- a/Sample/StandardSamples/CylindersAndPrismsBuilder.h
+++ b/Sample/StandardSamples/CylindersAndPrismsBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSANDPRISMSBUILDER_H
diff --git a/Sample/StandardSamples/CylindersBuilder.h b/Sample/StandardSamples/CylindersBuilder.h
index fb1d5d62e1c028c5ec9c66579cdee62d525c7ee1..b6829a590da083d45f4b2177bfbb3465a539aa3e 100644
--- a/Sample/StandardSamples/CylindersBuilder.h
+++ b/Sample/StandardSamples/CylindersBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -73,4 +73,4 @@ private:
     double m_radius;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_CYLINDERSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_CYLINDERSBUILDER_H
diff --git a/Sample/StandardSamples/FeNiBilayerBuilder.h b/Sample/StandardSamples/FeNiBilayerBuilder.h
index 19c474da148483a5f8092e8f65ec53171506a071..5bafeb99053d801f47a607259741926754309f14 100644
--- a/Sample/StandardSamples/FeNiBilayerBuilder.h
+++ b/Sample/StandardSamples/FeNiBilayerBuilder.h
@@ -13,8 +13,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -54,4 +54,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_FENIBILAYERBUILDER_H
diff --git a/Sample/StandardSamples/HomogeneousMultilayerBuilder.h b/Sample/StandardSamples/HomogeneousMultilayerBuilder.h
index cf34e83f9994307b8273203c62289c67ad6d6c00..dc40568db49fceb50403cc0a2cabd6fc4d43ab27 100644
--- a/Sample/StandardSamples/HomogeneousMultilayerBuilder.h
+++ b/Sample/StandardSamples/HomogeneousMultilayerBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -28,4 +28,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_HOMOGENEOUSMULTILAYERBUILDER_H
diff --git a/Sample/StandardSamples/LatticeBuilder.h b/Sample/StandardSamples/LatticeBuilder.h
index 40927e6b3f6f9168c911117ec8887196ab2bdc56..7422110688caf0fc0675780d89e5bcf334b14336 100644
--- a/Sample/StandardSamples/LatticeBuilder.h
+++ b/Sample/StandardSamples/LatticeBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_LATTICEBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_LATTICEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_LATTICEBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_LATTICEBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_LATTICEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_LATTICEBUILDER_H
diff --git a/Sample/StandardSamples/LayersWithAbsorptionBuilder.h b/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
index 831552cc781bc1fb1c7864202385924b4a578be1..ca9fc153fe2f985088f6f859634b87438c25a37e 100644
--- a/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
+++ b/Sample/StandardSamples/LayersWithAbsorptionBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 #include <memory>
@@ -41,4 +41,4 @@ private:
     std::unique_ptr<IFormFactor> m_ff;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBUILDER_H
diff --git a/Sample/StandardSamples/LayersWithAbsorptionBySLDBuilder.h b/Sample/StandardSamples/LayersWithAbsorptionBySLDBuilder.h
index cdad81f661e6c125c022e8ee3bfd9936eebf0516..e5079a52ea04a2c5b35b4be1e4b3aaf665b591f0 100644
--- a/Sample/StandardSamples/LayersWithAbsorptionBySLDBuilder.h
+++ b/Sample/StandardSamples/LayersWithAbsorptionBySLDBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -28,4 +28,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_LAYERSWITHABSORPTIONBYSLDBUILDER_H
diff --git a/Sample/StandardSamples/MagneticLayersBuilder.h b/Sample/StandardSamples/MagneticLayersBuilder.h
index 07a1d371aea4038130f35f681ef5bd0c6b9752c0..38b78b31e933cfd0687add7208e61cddff977338 100644
--- a/Sample/StandardSamples/MagneticLayersBuilder.h
+++ b/Sample/StandardSamples/MagneticLayersBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
 
 #include "Sample/Multilayer/RoughnessModels.h"
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
@@ -66,4 +66,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICLAYERSBUILDER_H
diff --git a/Sample/StandardSamples/MagneticParticlesBuilder.h b/Sample/StandardSamples/MagneticParticlesBuilder.h
index 61dbe20df864d818acd60fe52d4f3133ad66a230..2425ed9e98a9169ea28fca4ef54eb0e0945423d3 100644
--- a/Sample/StandardSamples/MagneticParticlesBuilder.h
+++ b/Sample/StandardSamples/MagneticParticlesBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -44,4 +44,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MAGNETICPARTICLESBUILDER_H
diff --git a/Sample/StandardSamples/MesoCrystalBuilder.h b/Sample/StandardSamples/MesoCrystalBuilder.h
index 5550875a6c8e4628e858bb1d298f65a2863ae7d4..4a883f414de49cbb2d6ece6907f352a9ae85fbee 100644
--- a/Sample/StandardSamples/MesoCrystalBuilder.h
+++ b/Sample/StandardSamples/MesoCrystalBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MESOCRYSTALBUILDER_H
diff --git a/Sample/StandardSamples/MultiLayerWithNCRoughnessBuilder.h b/Sample/StandardSamples/MultiLayerWithNCRoughnessBuilder.h
index c1335734e93602b7a55d372ac0b2a865d7ec98ca..327b514b5125822461c8eda6c4d0d68abf586e91 100644
--- a/Sample/StandardSamples/MultiLayerWithNCRoughnessBuilder.h
+++ b/Sample/StandardSamples/MultiLayerWithNCRoughnessBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
 
 #include "Sample/StandardSamples/MultiLayerWithRoughnessBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const override;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHNCROUGHNESSBUILDER_H
diff --git a/Sample/StandardSamples/MultiLayerWithRoughnessBuilder.h b/Sample/StandardSamples/MultiLayerWithRoughnessBuilder.h
index 904e0d7d776cccb38fbbeebcb2739e54288a3a07..80e9e666d6d9f98893780a385e8ca41e0e587171 100644
--- a/Sample/StandardSamples/MultiLayerWithRoughnessBuilder.h
+++ b/Sample/StandardSamples/MultiLayerWithRoughnessBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTILAYERWITHROUGHNESSBUILDER_H
diff --git a/Sample/StandardSamples/MultipleLayoutBuilder.h b/Sample/StandardSamples/MultipleLayoutBuilder.h
index 461bbb4ca0125c5d4e04e79bf845b4488cacfad4..c514480ddea8501d3994476e73db02f6b8af069f 100644
--- a/Sample/StandardSamples/MultipleLayoutBuilder.h
+++ b/Sample/StandardSamples/MultipleLayoutBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -27,4 +27,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_MULTIPLELAYOUTBUILDER_H
diff --git a/Sample/StandardSamples/ParaCrystalBuilder.h b/Sample/StandardSamples/ParaCrystalBuilder.h
index b1964a8bf57e9d432fdb299097cd662d8c896fd8..443c344373011fb0d6264f34a118464c77adb76b 100644
--- a/Sample/StandardSamples/ParaCrystalBuilder.h
+++ b/Sample/StandardSamples/ParaCrystalBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 #include <memory>
@@ -66,4 +66,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARACRYSTALBUILDER_H
diff --git a/Sample/StandardSamples/ParticleCompositionBuilder.h b/Sample/StandardSamples/ParticleCompositionBuilder.h
index 4bbbb3c2afb336117aecfbde6597582d3d2fa59a..52c214641c3cd91d6d8b5d69e71daf5039a95f36 100644
--- a/Sample/StandardSamples/ParticleCompositionBuilder.h
+++ b/Sample/StandardSamples/ParticleCompositionBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLECOMPOSITIONBUILDER_H
diff --git a/Sample/StandardSamples/ParticleDistributionsBuilder.h b/Sample/StandardSamples/ParticleDistributionsBuilder.h
index 79a1ffa4c74a1807fe1a98e56d0659065ab35e06..cc37caf205c95a453bf32ba9925148c6bea04bec 100644
--- a/Sample/StandardSamples/ParticleDistributionsBuilder.h
+++ b/Sample/StandardSamples/ParticleDistributionsBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -90,4 +90,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEDISTRIBUTIONSBUILDER_H
diff --git a/Sample/StandardSamples/ParticleInVacuumBuilder.h b/Sample/StandardSamples/ParticleInVacuumBuilder.h
index a29dade7f416f134176c154edb9a3a1b65d1cc6e..6270a16dc31085b421f945bafa81a461c09bc831 100644
--- a/Sample/StandardSamples/ParticleInVacuumBuilder.h
+++ b/Sample/StandardSamples/ParticleInVacuumBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 #include <memory>
@@ -38,4 +38,4 @@ protected:
     std::unique_ptr<IFormFactor> m_ff;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PARTICLEINVACUUMBUILDER_H
diff --git a/Sample/StandardSamples/PercusYevickBuilder.h b/Sample/StandardSamples/PercusYevickBuilder.h
index 9703fa7b3da8802047151cfad52e500456d56e39..a1f0236ac11dc101fff202a754b5fb9fe01993eb 100644
--- a/Sample/StandardSamples/PercusYevickBuilder.h
+++ b/Sample/StandardSamples/PercusYevickBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PERCUSYEVICKBUILDER_H
diff --git a/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.h b/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.h
index 9b8f04f11508bd7ac69f32f5632bb557e49bc9eb..a12d5b61127546a679d70ba1f3c7655cfc4a9443 100644
--- a/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.h
+++ b/Sample/StandardSamples/PlainMultiLayerBySLDBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -40,4 +40,4 @@ protected:
     double m_thick_ni; //!< thickness of Ni layer
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_PLAINMULTILAYERBYSLDBUILDER_H
diff --git a/Sample/StandardSamples/ReferenceMaterials.h b/Sample/StandardSamples/ReferenceMaterials.h
index 8e6f93ee60f8393460532c19a689a2708355250d..a7849cc0adcc77ab316cf114b9113adc0abf7659 100644
--- a/Sample/StandardSamples/ReferenceMaterials.h
+++ b/Sample/StandardSamples/ReferenceMaterials.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_REFERENCEMATERIALS_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_REFERENCEMATERIALS_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_REFERENCEMATERIALS_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_REFERENCEMATERIALS_H
 
 #include "Sample/Material/MaterialFactoryFuncs.h"
 
@@ -34,4 +34,4 @@ static const Material Substrate2 = HomogeneousMaterial("Substrate2", 3.212e-6, 3
 
 } // namespace refMat
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_REFERENCEMATERIALS_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_REFERENCEMATERIALS_H
diff --git a/Sample/StandardSamples/ResonatorBuilder.h b/Sample/StandardSamples/ResonatorBuilder.h
index 37b60e6c74934ddc6219817f4e62dfa0bc3ca0ab..91d8b32f18fac9a0536801e5edff012d9fdc8c10 100644
--- a/Sample/StandardSamples/ResonatorBuilder.h
+++ b/Sample/StandardSamples/ResonatorBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_RESONATORBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_RESONATORBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_RESONATORBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_RESONATORBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -30,4 +30,4 @@ private:
     double m_l_ti; // titanium layer thickness
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_RESONATORBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_RESONATORBUILDER_H
diff --git a/Sample/StandardSamples/RipplesBuilder.h b/Sample/StandardSamples/RipplesBuilder.h
index 0759e41f2fdbbfeab2f602959b450536e11c2fe6..ef773141271e121378c2822e433ac1cc418bd893 100644
--- a/Sample/StandardSamples/RipplesBuilder.h
+++ b/Sample/StandardSamples/RipplesBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_RIPPLESBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_RIPPLESBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_RIPPLESBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_RIPPLESBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -45,4 +45,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_RIPPLESBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_RIPPLESBUILDER_H
diff --git a/Sample/StandardSamples/RotatedPyramidsBuilder.h b/Sample/StandardSamples/RotatedPyramidsBuilder.h
index 696e8b4f3d2f2bd4eac8d70a02226328b8fd31bb..f59375c357a0bd294cdc139f0c0a8a8b01429f34 100644
--- a/Sample/StandardSamples/RotatedPyramidsBuilder.h
+++ b/Sample/StandardSamples/RotatedPyramidsBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_ROTATEDPYRAMIDSBUILDER_H
diff --git a/Sample/StandardSamples/SampleBuilderFactory.h b/Sample/StandardSamples/SampleBuilderFactory.h
index d945aeb226f3958d2c2100b7f653141c1e164188..8c9159cf30fc67e76f21e4af0ac8de7096ab80b2 100644
--- a/Sample/StandardSamples/SampleBuilderFactory.h
+++ b/Sample/StandardSamples/SampleBuilderFactory.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
 
 #include "Fit/TestEngine/IFactory.h"
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
@@ -30,4 +30,4 @@ public:
     MultiLayer* createSampleByName(const std::string& name);
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_SAMPLEBUILDERFACTORY_H
diff --git a/Sample/StandardSamples/SizeDistributionModelsBuilder.h b/Sample/StandardSamples/SizeDistributionModelsBuilder.h
index 7b66b616c186c99c4ce2cfe05ca54db8c0ffcb5e..61a31dc94eb186aeaa877c245c7fa44d001beced 100644
--- a/Sample/StandardSamples/SizeDistributionModelsBuilder.h
+++ b/Sample/StandardSamples/SizeDistributionModelsBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -56,4 +56,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_SIZEDISTRIBUTIONMODELSBUILDER_H
diff --git a/Sample/StandardSamples/SlicedCompositionBuilder.h b/Sample/StandardSamples/SlicedCompositionBuilder.h
index ef950255f3483755916c94d24c27b22d01b4077a..a016e9f0f7b5128354d3ffdede3dabe69a984008 100644
--- a/Sample/StandardSamples/SlicedCompositionBuilder.h
+++ b/Sample/StandardSamples/SlicedCompositionBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCOMPOSITIONBUILDER_H
diff --git a/Sample/StandardSamples/SlicedCylindersBuilder.h b/Sample/StandardSamples/SlicedCylindersBuilder.h
index b21572565dff21b8d276977fc627654056c0edbd..65e5c66c1c8963ad5b45bc71b04702b9715f309a 100644
--- a/Sample/StandardSamples/SlicedCylindersBuilder.h
+++ b/Sample/StandardSamples/SlicedCylindersBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -47,4 +47,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_SLICEDCYLINDERSBUILDER_H
diff --git a/Sample/StandardSamples/ThickAbsorptiveSampleBuilder.h b/Sample/StandardSamples/ThickAbsorptiveSampleBuilder.h
index 2b4e64ed5c1df7487ca34f4a212f44837668fa87..dac7b46c609cddfce98466fc0ab4d231cd1ed97c 100644
--- a/Sample/StandardSamples/ThickAbsorptiveSampleBuilder.h
+++ b/Sample/StandardSamples/ThickAbsorptiveSampleBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -23,4 +23,4 @@ public:
     MultiLayer* buildSample() const override;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_THICKABSORPTIVESAMPLEBUILDER_H
diff --git a/Sample/StandardSamples/TransformationsBuilder.h b/Sample/StandardSamples/TransformationsBuilder.h
index f68b9463ab87e32e40255db49f9e04ce10e6361f..6609ac332e7cde51db75ef728e1ee7ca95d525b9 100644
--- a/Sample/StandardSamples/TransformationsBuilder.h
+++ b/Sample/StandardSamples/TransformationsBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_TRANSFORMATIONSBUILDER_H
diff --git a/Sample/StandardSamples/TwoDimLatticeBuilder.h b/Sample/StandardSamples/TwoDimLatticeBuilder.h
index bbc6bd53aa9b96faea5febfe8242ac91e4694672..78e08b943ce7b2547b19c50a740b3ae81eb463c7 100644
--- a/Sample/StandardSamples/TwoDimLatticeBuilder.h
+++ b/Sample/StandardSamples/TwoDimLatticeBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -73,4 +73,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWODIMLATTICEBUILDER_H
diff --git a/Sample/StandardSamples/TwoLayerRoughnessBuilder.h b/Sample/StandardSamples/TwoLayerRoughnessBuilder.h
index 75bb9d9688ba7c9b3e101f051b80fdefa80475f1..bdf47b5643783641f9aeec9171c02b073dc3d9ee 100644
--- a/Sample/StandardSamples/TwoLayerRoughnessBuilder.h
+++ b/Sample/StandardSamples/TwoLayerRoughnessBuilder.h
@@ -12,8 +12,8 @@
 //
 // ************************************************************************** //
 
-#ifndef BORNAGAIN_CORE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
-#define BORNAGAIN_CORE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
+#ifndef BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
+#define BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
 
 #include "Sample/SampleBuilderEngine/ISampleBuilder.h"
 
@@ -26,4 +26,4 @@ public:
     MultiLayer* buildSample() const;
 };
 
-#endif // BORNAGAIN_CORE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
+#endif // BORNAGAIN_SAMPLE_STANDARDSAMPLES_TWOLAYERROUGHNESSBUILDER_H
diff --git a/Tests/ReferenceData/Std/BeamDivergence.int.gz b/Tests/ReferenceData/Std/BeamDivergence.int.gz
index 4f6a62368ec5bafbc6aeaaab289528ddc1577670..3ffc15d2574e990c27179d9f664b413aa0434d69 100644
Binary files a/Tests/ReferenceData/Std/BeamDivergence.int.gz and b/Tests/ReferenceData/Std/BeamDivergence.int.gz differ
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index 45fe2b67a10ddc37dd93b9a303bb4c7aaf972aec..5cbdf2f416319422e172f50ac1dff396929e020d 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -206,10 +206,7 @@ C++ includes: ComputationStatus.h
 %feature("docstring")  ComputationStatus::setCompleted "void ComputationStatus::setCompleted()
 ";
 
-%feature("docstring")  ComputationStatus::setFailed "void ComputationStatus::setFailed()
-";
-
-%feature("docstring")  ComputationStatus::setErrorMessage "void ComputationStatus::setErrorMessage(const std::string &message)
+%feature("docstring")  ComputationStatus::setFailed "void ComputationStatus::setFailed(const std::string &message)
 ";
 
 
@@ -986,24 +983,6 @@ Returns map of fit parameter names and its current values.
 %feature("docstring") LabelMap "";
 
 
-// File: classLayoutStrategyBuilder.xml
-%feature("docstring") LayoutStrategyBuilder "
-
-Methods to generate a simulation strategy for a  ParticleLayoutComputation.
-
-C++ includes: LayoutStrategyBuilder.h
-";
-
-%feature("docstring")  LayoutStrategyBuilder::LayoutStrategyBuilder "LayoutStrategyBuilder::LayoutStrategyBuilder(const ProcessedLayout *p_layout, const SimulationOptions &sim_params, bool polarized)
-";
-
-%feature("docstring")  LayoutStrategyBuilder::~LayoutStrategyBuilder "LayoutStrategyBuilder::~LayoutStrategyBuilder()
-";
-
-%feature("docstring")  LayoutStrategyBuilder::releaseStrategy "IInterferenceFunctionStrategy * LayoutStrategyBuilder::releaseStrategy()
-";
-
-
 // File: classLogMetric.xml
 %feature("docstring") LogMetric "
 
@@ -1262,7 +1241,7 @@ Computes the scattering contribution from one particle layout. Used by  DWBAComp
 C++ includes: ParticleLayoutComputation.h
 ";
 
-%feature("docstring")  ParticleLayoutComputation::ParticleLayoutComputation "ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout *p_layout, const SimulationOptions &options, bool polarized)
+%feature("docstring")  ParticleLayoutComputation::ParticleLayoutComputation "ParticleLayoutComputation::ParticleLayoutComputation(const ProcessedLayout &layout, const SimulationOptions &options, bool polarized)
 ";
 
 %feature("docstring")  ParticleLayoutComputation::~ParticleLayoutComputation "ParticleLayoutComputation::~ParticleLayoutComputation()
@@ -2504,7 +2483,10 @@ Returns default units to convert to.
 ";
 
 
-// File: namespace_0d100.xml
+// File: namespace_0d23.xml
+
+
+// File: namespace_0d27.xml
 
 
 // File: namespace_0d29.xml
@@ -2513,43 +2495,43 @@ Returns default units to convert to.
 // File: namespace_0d31.xml
 
 
-// File: namespace_0d33.xml
+// File: namespace_0d35.xml
 
 
-// File: namespace_0d37.xml
+// File: namespace_0d39.xml
 
 
-// File: namespace_0d41.xml
+// File: namespace_0d43.xml
 
 
-// File: namespace_0d45.xml
+// File: namespace_0d51.xml
 
 
-// File: namespace_0d53.xml
+// File: namespace_0d56.xml
 
 
-// File: namespace_0d58.xml
+// File: namespace_0d65.xml
 
 
 // File: namespace_0d67.xml
 
 
-// File: namespace_0d69.xml
+// File: namespace_0d71.xml
 
 
 // File: namespace_0d73.xml
 
 
-// File: namespace_0d75.xml
+// File: namespace_0d80.xml
 
 
 // File: namespace_0d82.xml
 
 
-// File: namespace_0d84.xml
+// File: namespace_0d90.xml
 
 
-// File: namespace_0d92.xml
+// File: namespace_0d96.xml
 
 
 // File: namespace_0d98.xml
@@ -2888,12 +2870,6 @@ Helper factory function to use in  GISASSimulation. Depending on the type of det
 // File: IComputation_8h.xml
 
 
-// File: LayoutStrategyBuilder_8cpp.xml
-
-
-// File: LayoutStrategyBuilder_8h.xml
-
-
 // File: MultiLayerFuncs_8cpp.xml
 %feature("docstring")  MaterialProfile "std::vector<complex_t> MaterialProfile(const MultiLayer &multilayer, int n_points, double z_min, double z_max)
 
diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i
index 68d8e4891a8c70a869516dd4923aac2ba6774e5d..98375f0ae83d34b758304770864618c94a1b1ba8 100644
--- a/auto/Wrap/doxygenSample.i
+++ b/auto/Wrap/doxygenSample.i
@@ -437,7 +437,7 @@ Strategy class to compute the total scattering from a particle layout in the dec
 C++ includes: DecouplingApproximationStrategy.h
 ";
 
-%feature("docstring")  DecouplingApproximationStrategy::DecouplingApproximationStrategy "DecouplingApproximationStrategy::DecouplingApproximationStrategy(SimulationOptions sim_params, bool polarized)
+%feature("docstring")  DecouplingApproximationStrategy::DecouplingApproximationStrategy "DecouplingApproximationStrategy::DecouplingApproximationStrategy(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff, SimulationOptions sim_params, bool polarized)
 ";
 
 
@@ -3627,17 +3627,12 @@ Instantiation of child classes takes place in LayoutStrategyBuilder::createStrat
 C++ includes: IInterferenceFunctionStrategy.h
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(const SimulationOptions &sim_params, bool polarized)
+%feature("docstring")  IInterferenceFunctionStrategy::IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::IInterferenceFunctionStrategy(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff, const SimulationOptions &sim_params, bool polarized)
 ";
 
 %feature("docstring")  IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy "IInterferenceFunctionStrategy::~IInterferenceFunctionStrategy()
 ";
 
-%feature("docstring")  IInterferenceFunctionStrategy::init "void IInterferenceFunctionStrategy::init(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff)
-
-Initializes the object with form factors and an interference function. 
-";
-
 %feature("docstring")  IInterferenceFunctionStrategy::evaluate "double IInterferenceFunctionStrategy::evaluate(const SimulationElement &sim_element) const
 
 Calculates the intensity for scalar particles/interactions. 
@@ -7481,56 +7476,6 @@ C++ includes: SpecularScalarTanhStrategy.h
 ";
 
 
-// File: classSpecularSimulationElement.xml
-%feature("docstring") SpecularSimulationElement "
-
-Data stucture containing both input and output of a single image pixel for specular simulation.
-
-C++ includes: SpecularSimulationElement.h
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(double kz, bool computable, const Instrument &instrument)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(double wavelength, double alpha, bool computable, const Instrument &instrument)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(const SpecularSimulationElement &other)
-";
-
-%feature("docstring")  SpecularSimulationElement::SpecularSimulationElement "SpecularSimulationElement::SpecularSimulationElement(SpecularSimulationElement &&other) noexcept
-";
-
-%feature("docstring")  SpecularSimulationElement::~SpecularSimulationElement "SpecularSimulationElement::~SpecularSimulationElement()
-";
-
-%feature("docstring")  SpecularSimulationElement::setPolarizationHandler "void SpecularSimulationElement::setPolarizationHandler(const PolarizationHandler &handler)
-
-Assigns PolarizationHandler. 
-";
-
-%feature("docstring")  SpecularSimulationElement::polarizationHandler "const PolarizationHandler& SpecularSimulationElement::polarizationHandler() const
-
-Returns assigned PolarizationHandler. 
-";
-
-%feature("docstring")  SpecularSimulationElement::getIntensity "double SpecularSimulationElement::getIntensity() const
-";
-
-%feature("docstring")  SpecularSimulationElement::setIntensity "void SpecularSimulationElement::setIntensity(double intensity)
-";
-
-%feature("docstring")  SpecularSimulationElement::isCalculated "bool SpecularSimulationElement::isCalculated() const
-
-Returns calculation flag (if it's false, zero intensity is assigned to the element) 
-";
-
-%feature("docstring")  SpecularSimulationElement::produceKz "std::vector< complex_t > SpecularSimulationElement::produceKz(const std::vector< Slice > &slices)
-
-Returns kz values for Abeles computation of reflection/transition coefficients. 
-";
-
-
 // File: classSpheresWithLimitsDistributionBuilder.xml
 %feature("docstring") SpheresWithLimitsDistributionBuilder "
 
@@ -7612,7 +7557,7 @@ C++ includes: SSCAHelper.h
 %feature("docstring")  SSCAHelper::getMeanFormfactorNorm "complex_t SSCAHelper::getMeanFormfactorNorm(double qp, const std::vector< complex_t > &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
 ";
 
-%feature("docstring")  SSCAHelper::getMeanFormfactors "void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const InterferenceFunctionUtils::matrixFFVector_t &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
+%feature("docstring")  SSCAHelper::getMeanFormfactors "void SSCAHelper::getMeanFormfactors(double qp, Eigen::Matrix2cd &ff_orig, Eigen::Matrix2cd &ff_conj, const FormFactorPrecompute::matrixFFVector_t &precomputed_ff, const std::vector< FormFactorCoherentSum > &ff_wrappers) const
 ";
 
 
@@ -7624,7 +7569,7 @@ Strategy class to compute the total scattering from a particle layout in the siz
 C++ includes: SSCApproximationStrategy.h
 ";
 
-%feature("docstring")  SSCApproximationStrategy::SSCApproximationStrategy "SSCApproximationStrategy::SSCApproximationStrategy(SimulationOptions sim_params, double kappa, bool polarized)
+%feature("docstring")  SSCApproximationStrategy::SSCApproximationStrategy "SSCApproximationStrategy::SSCApproximationStrategy(const std::vector< FormFactorCoherentSum > &weighted_formfactors, const IInterferenceFunction *p_iff, SimulationOptions sim_params, bool polarized, double kappa)
 ";
 
 
@@ -7873,6 +7818,9 @@ C++ includes: ZLimits.h
 // File: namespace_0d262.xml
 
 
+// File: namespace_0d272.xml
+
+
 // File: namespace_0d274.xml
 
 
@@ -7885,7 +7833,7 @@ C++ includes: ZLimits.h
 // File: namespace_0d280.xml
 
 
-// File: namespace_0d282.xml
+// File: namespace_0d284.xml
 
 
 // File: namespace_0d286.xml
@@ -7894,25 +7842,22 @@ C++ includes: ZLimits.h
 // File: namespace_0d288.xml
 
 
-// File: namespace_0d290.xml
-
-
-// File: namespace_0d302.xml
+// File: namespace_0d300.xml
 
 
-// File: namespace_0d308.xml
+// File: namespace_0d306.xml
 
 
 // File: namespace_0d31.xml
 
 
-// File: namespace_0d312.xml
+// File: namespace_0d310.xml
 
 
-// File: namespace_0d330.xml
+// File: namespace_0d328.xml
 
 
-// File: namespace_0d349.xml
+// File: namespace_0d347.xml
 
 
 // File: namespace_0d37.xml
@@ -7924,11 +7869,11 @@ C++ includes: ZLimits.h
 // File: namespace_0d41.xml
 
 
-// File: namespaceInterferenceFunctionUtils.xml
-%feature("docstring")  InterferenceFunctionUtils::PrecomputeScalarFormFactors "std::vector< complex_t > InterferenceFunctionUtils::PrecomputeScalarFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
+// File: namespaceFormFactorPrecompute.xml
+%feature("docstring")  FormFactorPrecompute::scalar "std::vector< complex_t > FormFactorPrecompute::scalar(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
 ";
 
-%feature("docstring")  InterferenceFunctionUtils::PrecomputePolarizedFormFactors "matrixFFVector_t InterferenceFunctionUtils::PrecomputePolarizedFormFactors(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
+%feature("docstring")  FormFactorPrecompute::polarized "FormFactorPrecompute::matrixFFVector_t FormFactorPrecompute::polarized(const SimulationElement &sim_element, const std::vector< FormFactorCoherentSum > &ff_wrappers)
 ";
 
 
@@ -8460,16 +8405,16 @@ Used by the hard sphere and by several soft sphere classes.
 // File: DecouplingApproximationStrategy_8h.xml
 
 
-// File: IInterferenceFunctionStrategy_8cpp.xml
+// File: FormFactorPrecompute_8cpp.xml
 
 
-// File: IInterferenceFunctionStrategy_8h.xml
+// File: FormFactorPrecompute_8h.xml
 
 
-// File: InterferenceFunctionUtils_8cpp.xml
+// File: IInterferenceFunctionStrategy_8cpp.xml
 
 
-// File: InterferenceFunctionUtils_8h.xml
+// File: IInterferenceFunctionStrategy_8h.xml
 
 
 // File: SSCAHelper_8cpp.xml
@@ -9003,12 +8948,6 @@ Generate vertices of centered ellipse with given semi-axes at height z.
 // File: SlicedFormFactorList_8h.xml
 
 
-// File: SpecularSimulationElement_8cpp.xml
-
-
-// File: SpecularSimulationElement_8h.xml
-
-
 // File: FormFactorGauss_8cpp.xml
 
 
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 09bb76f4d1a51c12fb89fdcbd88343c24cd558d5..73e00a8ef26b5711a22e35ac5803cb36b0df0703 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -4422,7 +4422,6 @@ class IUnitConverter(libBornAgainBase.ICloneable):
 # Register IUnitConverter in _libBornAgainDevice:
 _libBornAgainDevice.IUnitConverter_swigregister(IUnitConverter)
 cvar = _libBornAgainDevice.cvar
-axisUnitName = cvar.axisUnitName
 axisUnitLabel = cvar.axisUnitLabel
 
 class DetectorMask(object):
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index e733f304733ced98b3d4966a141fe36ae71deba6..ef74f231d2158e04ef12f1b037fd360640c03b3b 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -37201,20 +37201,6 @@ SWIGINTERN PyObject *Axes_swiginit(PyObject *SWIGUNUSEDPARM(self), PyObject *arg
   return SWIG_Python_InitShadowInstance(args);
 }
 
-SWIGINTERN int Swig_var_axisUnitName_set(PyObject *) {
-  SWIG_Error(SWIG_AttributeError,"Variable axisUnitName is read-only.");
-  return 1;
-}
-
-
-SWIGINTERN PyObject *Swig_var_axisUnitName_get(void) {
-  PyObject *pyobj = 0;
-  
-  pyobj = SWIG_NewPointerObj(SWIG_as_voidptr(&axisUnitName), SWIGTYPE_p_std__mapT_Axes__Units_char_const_p_std__lessT_Axes__Units_t_std__allocatorT_std__pairT_Axes__Units_const_char_const_p_t_t_t,  0 );
-  return pyobj;
-}
-
-
 SWIGINTERN int Swig_var_axisUnitLabel_set(PyObject *) {
   SWIG_Error(SWIG_AttributeError,"Variable axisUnitLabel is read-only.");
   return 1;
@@ -50171,7 +50157,6 @@ SWIG_init(void) {
   }
   PyDict_SetItemString(md, "cvar", globals);
   Py_DECREF(globals);
-  SWIG_addvarlink(globals, "axisUnitName", Swig_var_axisUnitName_get, Swig_var_axisUnitName_set);
   SWIG_addvarlink(globals, "axisUnitLabel", Swig_var_axisUnitLabel_get, Swig_var_axisUnitLabel_set);
   SWIG_Python_SetConstant(d, "RectangularDetector_GENERIC",SWIG_From_int(static_cast< int >(RectangularDetector::GENERIC)));
   SWIG_Python_SetConstant(d, "RectangularDetector_PERPENDICULAR_TO_SAMPLE",SWIG_From_int(static_cast< int >(RectangularDetector::PERPENDICULAR_TO_SAMPLE)));