diff --git a/Base/Axis/PointwiseAxis.h b/Base/Axis/PointwiseAxis.h
index 4c5dbbb0d691501ed8ad11190f67bf8941c6239e..9a74bdc3208e5694e4c1f4bcd2abd90be0ddb359 100644
--- a/Base/Axis/PointwiseAxis.h
+++ b/Base/Axis/PointwiseAxis.h
@@ -29,7 +29,7 @@
 //! two adjacent coordinates.
 //! One should be aware, that bin centers reported
 //! by PointwiseAxis::binCenter do not coincide with the
-//! values produced by Bin1D::getMidPoint.
+//! values produced by Bin1D::center.
 //! On-axis values are bounded by minimum/maximum
 //! values passed to the constructor.
 //! @ingroup tools
diff --git a/Core/Export/SimulationToPython.cpp b/Core/Export/SimulationToPython.cpp
index 7b32d8bce389ce392a2784a35d1baa91da9dab15..57597df2fd7942fc77b5f3604e64e26104933bdb 100644
--- a/Core/Export/SimulationToPython.cpp
+++ b/Core/Export/SimulationToPython.cpp
@@ -23,9 +23,7 @@
 #include "Core/Export/SampleToPython.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Scan/QSpecScan.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Device/Beam/FootprintGauss.h"
 #include "Device/Beam/FootprintSquare.h"
 #include "Device/Detector/RectangularDetector.h"
diff --git a/Core/Fitting/SimDataPair.cpp b/Core/Fitting/SimDataPair.cpp
index c742da02ce9794ba21798b0989e2ca3e76d2e535..072445a7e585556556800806c568067bf3dc5af1 100644
--- a/Core/Fitting/SimDataPair.cpp
+++ b/Core/Fitting/SimDataPair.cpp
@@ -15,11 +15,7 @@
 #include "Core/Fitting/SimDataPair.h"
 #include "Base/Math/Numeric.h"
 #include "Core/Scan/UnitConverter1D.h"
-#include "Core/Simulation/DepthProbeSimulation.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/ISimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Core/Simulation/UnitConverterUtils.h"
 #include "Device/Data/DataUtils.h"
 
diff --git a/Core/Scan/UnitConverter1D.cpp b/Core/Scan/UnitConverter1D.cpp
index 15b0292eef0f318bd9af36c3cf185a81e3958233..ac1869fd115aa8c87ee6cdc86676991a29dc34ed 100644
--- a/Core/Scan/UnitConverter1D.cpp
+++ b/Core/Scan/UnitConverter1D.cpp
@@ -47,6 +47,10 @@ createTranslatedAxis(const IAxis& axis, std::function<double(double)> translator
 } // namespace
 
 
+//  ************************************************************************************************
+//  class UnitConverter1D
+//  ************************************************************************************************
+
 std::unique_ptr<UnitConverter1D> UnitConverter1D::createUnitConverter(const ISpecularScan& scan)
 {
     if (const auto* aScan = dynamic_cast<const AngularSpecScan*>(&scan))
@@ -65,7 +69,7 @@ size_t UnitConverter1D::dimension() const
 
 double UnitConverter1D::calculateMin(size_t i_axis, Axes::Units units_type) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis==0);
     units_type = substituteDefaultUnits(units_type);
     if (units_type == Axes::Units::NBINS)
         return 0.0;
@@ -75,7 +79,7 @@ double UnitConverter1D::calculateMin(size_t i_axis, Axes::Units units_type) cons
 
 double UnitConverter1D::calculateMax(size_t i_axis, Axes::Units units_type) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis==0);
     units_type = substituteDefaultUnits(units_type);
     auto coordinate_axis = coordinateAxis();
     if (units_type == Axes::Units::NBINS)
@@ -86,7 +90,7 @@ double UnitConverter1D::calculateMax(size_t i_axis, Axes::Units units_type) cons
 
 std::unique_ptr<IAxis> UnitConverter1D::createConvertedAxis(size_t i_axis, Axes::Units units) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis==0);
     units = substituteDefaultUnits(units);
     if (units == Axes::Units::NBINS)
         return std::make_unique<FixedBinAxis>(axisName(0, units), coordinateAxis()->size(),
@@ -113,6 +117,11 @@ UnitConverter1D::createConvertedData(const OutputData<double>& data, Axes::Units
     return result;
 }
 
+
+//  ************************************************************************************************
+//  class UnitConverterConvSpec
+//  ************************************************************************************************
+
 UnitConverterConvSpec::UnitConverterConvSpec(const Beam& beam, const IAxis& axis,
                                              Axes::Units axis_units)
     : m_wavelength(beam.wavelength())
@@ -136,7 +145,7 @@ UnitConverterConvSpec* UnitConverterConvSpec::clone() const
 
 size_t UnitConverterConvSpec::axisSize(size_t i_axis) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis==0);
     return m_axis->size();
 }
 
@@ -158,9 +167,7 @@ UnitConverterConvSpec::UnitConverterConvSpec(const UnitConverterConvSpec& other)
 
 std::vector<std::map<Axes::Units, std::string>> UnitConverterConvSpec::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitSpecAxis());
-    return result;
+    return { AxisNames::specAxis };
 }
 
 std::function<double(double)> UnitConverterConvSpec::getTraslatorFrom(Axes::Units units_type) const
@@ -194,6 +201,11 @@ std::function<double(double)> UnitConverterConvSpec::getTraslatorTo(Axes::Units
     }
 }
 
+
+//  ************************************************************************************************
+//  class UnitConverterQSpec
+//  ************************************************************************************************
+
 UnitConverterQSpec::UnitConverterQSpec(const QSpecScan& handler)
     : m_axis(handler.coordinateAxis()->clone())
 {
@@ -209,7 +221,7 @@ UnitConverterQSpec* UnitConverterQSpec::clone() const
 //! Returns the size of underlying axis.
 size_t UnitConverterQSpec::axisSize(size_t i_axis) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis==0);
     return m_axis->size();
 }
 
@@ -233,9 +245,7 @@ UnitConverterQSpec::UnitConverterQSpec(const UnitConverterQSpec& other)
 //! Creates name map for axis in various units
 std::vector<std::map<Axes::Units, std::string>> UnitConverterQSpec::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitSpecAxisQ());
-    return result;
+    return { AxisNames::specAxisQ };
 }
 
 //! Returns translating functional (inv. nm --> desired units)
diff --git a/Core/Simulation/SimulationFactory.cpp b/Core/Simulation/SimulationFactory.cpp
index 76d1fcd457fe8c6c0d317907cc0026ff125fc8d0..38b75eccf9a6ea901ae937daf16c0a3e83825a1f 100644
--- a/Core/Simulation/SimulationFactory.cpp
+++ b/Core/Simulation/SimulationFactory.cpp
@@ -13,9 +13,7 @@
 //  ************************************************************************************************
 
 #include "Core/Simulation/SimulationFactory.h"
-#include "Core/Simulation/DepthProbeSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Core/Simulation/StandardSimulations.h"
 #include "Param/Base/RealParameter.h"
 
diff --git a/Core/Simulation/StandardSimulations.cpp b/Core/Simulation/StandardSimulations.cpp
index a25677f75a0db9a872eecced4276f13e4b4308df..394e8a5683a4c42a9fccfda35a60796b3e7f9592 100644
--- a/Core/Simulation/StandardSimulations.cpp
+++ b/Core/Simulation/StandardSimulations.cpp
@@ -17,10 +17,7 @@
 #include "Core/Computation/ConstantBackground.h"
 #include "Core/Scan/AngularSpecScan.h"
 #include "Core/Scan/QSpecScan.h"
-#include "Core/Simulation/DepthProbeSimulation.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Device/Beam/FootprintGauss.h"
 #include "Device/Beam/FootprintSquare.h"
 #include "Device/Detector/IsGISAXSDetector.h"
diff --git a/Core/Simulation/includeSimulations.h b/Core/Simulation/includeSimulations.h
new file mode 100644
index 0000000000000000000000000000000000000000..c388d1d5ffe1a257e751e366a8538f95e055a8ce
--- /dev/null
+++ b/Core/Simulation/includeSimulations.h
@@ -0,0 +1,23 @@
+//  ************************************************************************************************
+//
+//  BornAgain: simulate and fit reflection and scattering
+//
+//! @file      Core/Simulation/includeSimulations.h
+//! @brief     Includes all leave classes below ISimulation
+//!
+//! @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_SIMULATION_INCLUDESIMULATIONS_H
+#define BORNAGAIN_CORE_SIMULATION_INCLUDESIMULATIONS_H
+
+#include "Core/Simulation/DepthProbeSimulation.h"
+#include "Core/Simulation/GISASSimulation.h"
+#include "Core/Simulation/OffSpecularSimulation.h"
+#include "Core/Simulation/SpecularSimulation.h"
+
+#endif // BORNAGAIN_CORE_SIMULATION_INCLUDESIMULATIONS_H
diff --git a/Device/CMakeLists.txt b/Device/CMakeLists.txt
index 8a4f0b8931a7a4c13fa4ca0bff061fd028e3f2b4..40a89034bfb97940e3023e2537429cbbf5bdb1d6 100644
--- a/Device/CMakeLists.txt
+++ b/Device/CMakeLists.txt
@@ -34,6 +34,9 @@ target_link_libraries(${lib}
     ${tspectrum_LIBRARY}
     )
 
+if(WIN32)
+    target_compile_definitions(${lib} PRIVATE -DBA_DEVICE_BUILD_DLL)
+endif()
 if(BORNAGAIN_TIFF_SUPPORT)
     target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_TIFF_SUPPORT)
     target_include_directories(${lib} PUBLIC ${TIFF_INCLUDE_DIR})
diff --git a/Device/Detector/SimpleUnitConverters.cpp b/Device/Detector/SimpleUnitConverters.cpp
index 2dd7e529f93b0a3fe5b6e2ea94f8c48d37233746..0b97329b03b15c20dfabfcf35a0b21bf14fe097a 100644
--- a/Device/Detector/SimpleUnitConverters.cpp
+++ b/Device/Detector/SimpleUnitConverters.cpp
@@ -51,13 +51,12 @@ size_t UnitConverterSimple::dimension() const
 void UnitConverterSimple::addAxisData(std::string name, double min, double max,
                                       Axes::Units default_units, size_t nbins)
 {
-    AxisData axis_data{name, min, max, default_units, nbins};
-    m_axis_data_table.push_back(axis_data);
+    m_axis_data_table.emplace_back(AxisData{name, min, max, default_units, nbins});
 }
 
 double UnitConverterSimple::calculateMin(size_t i_axis, Axes::Units units_type) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis < dimension());
     units_type = substituteDefaultUnits(units_type);
     const auto& axis_data = m_axis_data_table[i_axis];
     if (units_type == Axes::Units::NBINS)
@@ -67,7 +66,7 @@ double UnitConverterSimple::calculateMin(size_t i_axis, Axes::Units units_type)
 
 double UnitConverterSimple::calculateMax(size_t i_axis, Axes::Units units_type) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis < dimension());
     units_type = substituteDefaultUnits(units_type);
     const auto& axis_data = m_axis_data_table[i_axis];
     if (units_type == Axes::Units::NBINS)
@@ -77,7 +76,7 @@ double UnitConverterSimple::calculateMax(size_t i_axis, Axes::Units units_type)
 
 size_t UnitConverterSimple::axisSize(size_t i_axis) const
 {
-    checkIndex(i_axis);
+    ASSERT(i_axis < dimension());
     return m_axis_data_table[i_axis].nbins;
 }
 
@@ -193,10 +192,7 @@ double SphericalConverter::calculateValue(size_t i_axis, Axes::Units units_type,
 
 std::vector<std::map<Axes::Units, std::string>> SphericalConverter::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitSphericalAxis0());
-    result.push_back(AxisNames::InitSphericalAxis1());
-    return result;
+    return { AxisNames::sphericalAxis0, AxisNames::sphericalAxis1 };
 }
 
 //  ************************************************************************************************
@@ -280,10 +276,7 @@ double RectangularConverter::calculateValue(size_t i_axis, Axes::Units units_typ
 
 std::vector<std::map<Axes::Units, std::string>> RectangularConverter::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitRectangularAxis0());
-    result.push_back(AxisNames::InitRectangularAxis1());
-    return result;
+    return { AxisNames::rectangularAxis0, AxisNames::rectangularAxis1 };
 }
 
 kvector_t RectangularConverter::normalizeToWavelength(kvector_t vector) const
@@ -349,10 +342,7 @@ double OffSpecularConverter::calculateValue(size_t, Axes::Units units_type, doub
 
 std::vector<std::map<Axes::Units, std::string>> OffSpecularConverter::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitOffSpecularAxis0());
-    result.push_back(AxisNames::InitOffSpecularAxis1());
-    return result;
+    return { AxisNames::offSpecularAxis0, AxisNames::offSpecularAxis1 };
 }
 
 void OffSpecularConverter::addDetectorYAxis(const IDetector2D& detector)
@@ -439,10 +429,7 @@ double DepthProbeConverter::calculateValue(size_t i_axis, Axes::Units units_type
 
 std::vector<std::map<Axes::Units, std::string>> DepthProbeConverter::createNameMaps() const
 {
-    std::vector<std::map<Axes::Units, std::string>> result;
-    result.push_back(AxisNames::InitSpecAxis());
-    result.push_back(AxisNames::InitSampleDepthAxis());
-    return result;
+    return { AxisNames::specAxis, AxisNames::sampleDepthAxis };
 }
 
 void DepthProbeConverter::checkUnits(Axes::Units units_type) const
diff --git a/Device/ProDetector/RegionOfInterest.cpp b/Device/ProDetector/RegionOfInterest.cpp
index ccc21a5d6b449f2a94ebc4f492e2ce511c74a098..b8956d0ed1d6f67df50720082ce3feb2db74682c 100644
--- a/Device/ProDetector/RegionOfInterest.cpp
+++ b/Device/ProDetector/RegionOfInterest.cpp
@@ -26,17 +26,6 @@ RegionOfInterest::RegionOfInterest(const CloneableVector<IAxis>& axes, double xl
     initFrom(*axes[0], *axes[1]);
 }
 
-RegionOfInterest::RegionOfInterest(const OutputData<double>& data, double xlow, double ylow,
-                                   double xup, double yup)
-    : RegionOfInterest(xlow, ylow, xup, yup)
-{
-    if (data.rank() != 2)
-        throw std::runtime_error("RegionOfInterest::RegionOfInterest() -> Error. "
-                                 "Data is not two-dimensional.");
-
-    initFrom(data.axis(0), data.axis(1));
-}
-
 RegionOfInterest::RegionOfInterest(double xlow, double ylow, double xup, double yup)
     : m_rectangle(new Rectangle(xlow, ylow, xup, yup))
     , m_ax1(0)
diff --git a/Device/ProDetector/RegionOfInterest.h b/Device/ProDetector/RegionOfInterest.h
index a810cf3550675e142e055d352b76a62a68552c8e..19b269392ec1ffab8b7078c8ebf4d123149a30bc 100644
--- a/Device/ProDetector/RegionOfInterest.h
+++ b/Device/ProDetector/RegionOfInterest.h
@@ -36,8 +36,6 @@ class RegionOfInterest : public ICloneable {
 public:
     RegionOfInterest(const CloneableVector<IAxis>& axes,
                      double xlow, double ylow, double xup, double yup);
-    RegionOfInterest(const OutputData<double>& data, double xlow, double ylow, double xup,
-                     double yup);
 
     RegionOfInterest& operator=(const RegionOfInterest& other) = delete;
     RegionOfInterest* clone() const;
diff --git a/Device/Unit/AxisNames.cpp b/Device/Unit/AxisNames.cpp
index 62aa869c3a7c3606bb65b3e1bc463698437f9430..d687f67b087638d0ba7e5d8db0b890d7b0efe687 100644
--- a/Device/Unit/AxisNames.cpp
+++ b/Device/Unit/AxisNames.cpp
@@ -16,88 +16,59 @@
 #include <map>
 
 namespace AxisNames {
+
 // For spherical detectors in GISAS simulations
-std::map<Axes::Units, std::string> InitSphericalAxis0()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "X [nbins]";
-    result[Axes::Units::RADIANS] = "phi_f [rad]";
-    result[Axes::Units::DEGREES] = "phi_f [deg]";
-    result[Axes::Units::QSPACE] = "Qy [1/nm]";
-    result[Axes::Units::QXQY] = "Qx [1/nm]";
-    return result;
-}
-std::map<Axes::Units, std::string> InitSphericalAxis1()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "Y [nbins]";
-    result[Axes::Units::RADIANS] = "alpha_f [rad]";
-    result[Axes::Units::DEGREES] = "alpha_f [deg]";
-    result[Axes::Units::QSPACE] = "Qz [1/nm]";
-    result[Axes::Units::QXQY] = "Qy [1/nm]";
-    return result;
-}
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> sphericalAxis0 = {
+        { Axes::Units::NBINS, "X [nbins]" },
+        { Axes::Units::RADIANS, "phi_f [rad]" },
+        { Axes::Units::DEGREES, "phi_f [deg]" },
+        { Axes::Units::QSPACE, "Qy [1/nm]" },
+        { Axes::Units::QXQY, "Qx [1/nm]" } };
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> sphericalAxis1 = {
+        { Axes::Units::NBINS, "Y [nbins]" },
+        { Axes::Units::RADIANS, "alpha_f [rad]" },
+        { Axes::Units::DEGREES, "alpha_f [deg]" },
+        { Axes::Units::QSPACE, "Qz [1/nm]" },
+        { Axes::Units::QXQY, "Qy [1/nm]" } };
+
 // For rectangular detectors in GISAS simulations
-std::map<Axes::Units, std::string> InitRectangularAxis0()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "X [nbins]";
-    result[Axes::Units::RADIANS] = "phi_f [rad]";
-    result[Axes::Units::DEGREES] = "phi_f [deg]";
-    result[Axes::Units::MM] = "X [mm]";
-    result[Axes::Units::QSPACE] = "Qy [1/nm]";
-    result[Axes::Units::QXQY] = "Qx [1/nm]";
-    return result;
-}
-std::map<Axes::Units, std::string> InitRectangularAxis1()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "Y [nbins]";
-    result[Axes::Units::RADIANS] = "alpha_f [rad]";
-    result[Axes::Units::DEGREES] = "alpha_f [deg]";
-    result[Axes::Units::MM] = "Y [mm]";
-    result[Axes::Units::QSPACE] = "Qz [1/nm]";
-    result[Axes::Units::QXQY] = "Qy [1/nm]";
-    return result;
-}
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> rectangularAxis0 = {
+        { Axes::Units::NBINS, "X [nbins]" },
+        { Axes::Units::RADIANS, "phi_f [rad]" },
+        { Axes::Units::DEGREES, "phi_f [deg]" },
+        { Axes::Units::MM, "X [mm]" },
+        { Axes::Units::QSPACE, "Qy [1/nm]" },
+        { Axes::Units::QXQY, "Qx [1/nm]" } };
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> rectangularAxis1 = {
+        { Axes::Units::NBINS, "Y [nbins]" },
+        { Axes::Units::RADIANS, "alpha_f [rad]" },
+        { Axes::Units::DEGREES, "alpha_f [deg]" },
+        { Axes::Units::MM, "Y [mm]" },
+        { Axes::Units::QSPACE, "Qz [1/nm]" },
+        { Axes::Units::QXQY, "Qy [1/nm]" } };
+
 // For off-specular simulations (both spherical and rectangular detectors)
 // Currently 'mm' is not supported for the y-axis
-std::map<Axes::Units, std::string> InitOffSpecularAxis0()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "X [nbins]";
-    result[Axes::Units::RADIANS] = "alpha_i [rad]";
-    result[Axes::Units::DEGREES] = "alpha_i [deg]";
-    return result;
-}
-std::map<Axes::Units, std::string> InitOffSpecularAxis1()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "Y [nbins]";
-    result[Axes::Units::RADIANS] = "alpha_f [rad]";
-    result[Axes::Units::DEGREES] = "alpha_f [deg]";
-    return result;
-}
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> offSpecularAxis0 = {
+    { Axes::Units::NBINS, "X [nbins]" },
+    { Axes::Units::RADIANS, "alpha_i [rad]" },
+    { Axes::Units::DEGREES, "alpha_i [deg]" }};
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> offSpecularAxis1 = {
+    { Axes::Units::NBINS, "Y [nbins]" },
+    { Axes::Units::RADIANS, "alpha_f [rad]" },
+    { Axes::Units::DEGREES, "alpha_f [deg]" }};
 
-std::map<Axes::Units, std::string> InitSpecAxis()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "X [nbins]";
-    result[Axes::Units::RADIANS] = "alpha_i [rad]";
-    result[Axes::Units::DEGREES] = "alpha_i [deg]";
-    result[Axes::Units::QSPACE] = "Q [1/nm]";
-    result[Axes::Units::RQ4] = "Q [1/nm]";
-    return result;
-}
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> specAxis = {
+    { Axes::Units::NBINS, "X [nbins]" },
+    { Axes::Units::RADIANS, "alpha_i [rad]" },
+    { Axes::Units::DEGREES, "alpha_i [deg]" },
+    { Axes::Units::QSPACE, "Q [1/nm]" },
+    { Axes::Units::RQ4, "Q [1/nm]" } };
 
-std::map<Axes::Units, std::string> InitSpecAxisQ()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "X [nbins]";
-    result[Axes::Units::QSPACE] = "Q [1/nm]";
-    result[Axes::Units::RQ4] = "Q [1/nm]";
-    return result;
-}
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> specAxisQ = {
+    { Axes::Units::NBINS, "X [nbins]" },
+    { Axes::Units::QSPACE, "Q [1/nm]" },
+    { Axes::Units::RQ4, "Q [1/nm]" } };
 
 // corner case: axis corresponding to the position
 // across sample is accepts only bins and nanometers,
@@ -105,14 +76,11 @@ std::map<Axes::Units, std::string> InitSpecAxisQ()
 // converter correspond to inclination angular axis.
 // For this reason depth axis map returns always
 // nanometers except for bins.
-std::map<Axes::Units, std::string> InitSampleDepthAxis()
-{
-    std::map<Axes::Units, std::string> result;
-    result[Axes::Units::NBINS] = "Y [nbins]";
-    result[Axes::Units::RADIANS] = "Position [nm]";
-    result[Axes::Units::DEGREES] = "Position [nm]";
-    result[Axes::Units::QSPACE] = "Position [nm]";
-    return result;
-}
+
+BA_DEVICE_API_ const std::map<Axes::Units, std::string> sampleDepthAxis = {
+    { Axes::Units::NBINS, "Y [nbins]" },
+    { Axes::Units::RADIANS, "Position [nm]" },
+    { Axes::Units::DEGREES, "Position [nm]" },
+    { Axes::Units::QSPACE, "Position [nm]" } };
 
 } // namespace AxisNames
diff --git a/Device/Unit/AxisNames.h b/Device/Unit/AxisNames.h
index 31fee6d91ad1970270981f0578ace985c21ef9cb..005053269c39f19db7aae852e228baa4291f151d 100644
--- a/Device/Unit/AxisNames.h
+++ b/Device/Unit/AxisNames.h
@@ -21,6 +21,7 @@
 #define BORNAGAIN_DEVICE_UNIT_AXISNAMES_H
 
 #include "Device/Unit/Axes.h"
+#include "Wrap/WinDllMacros.h"
 #include <map>
 #include <string>
 
@@ -34,15 +35,15 @@ const std::map<Axes::Units, const char*> axisUnitLabel = {
 //! @ingroup detector
 
 namespace AxisNames {
-std::map<Axes::Units, std::string> InitSphericalAxis0();
-std::map<Axes::Units, std::string> InitSphericalAxis1();
-std::map<Axes::Units, std::string> InitRectangularAxis0();
-std::map<Axes::Units, std::string> InitRectangularAxis1();
-std::map<Axes::Units, std::string> InitOffSpecularAxis0();
-std::map<Axes::Units, std::string> InitOffSpecularAxis1();
-std::map<Axes::Units, std::string> InitSpecAxis();
-std::map<Axes::Units, std::string> InitSpecAxisQ();
-std::map<Axes::Units, std::string> InitSampleDepthAxis();
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> sphericalAxis0;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> sphericalAxis1;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> rectangularAxis0;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> rectangularAxis1;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> offSpecularAxis0;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> offSpecularAxis1;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> specAxis;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> specAxisQ;
+extern BA_DEVICE_API_ const std::map<Axes::Units, std::string> sampleDepthAxis;
 } // namespace AxisNames
 
 #endif // BORNAGAIN_DEVICE_UNIT_AXISNAMES_H
diff --git a/Device/Unit/IUnitConverter.cpp b/Device/Unit/IUnitConverter.cpp
index a634ce41804db90763f7c599db0f4dd0513fbc46..416cf875b85f0c8c9e62b81d6bfdbea10904c85b 100644
--- a/Device/Unit/IUnitConverter.cpp
+++ b/Device/Unit/IUnitConverter.cpp
@@ -42,14 +42,6 @@ IUnitConverter::createConvertedData(const OutputData<double>& data, Axes::Units
     return result;
 }
 
-void IUnitConverter::checkIndex(size_t i_axis) const
-{
-    if (i_axis < dimension())
-        return;
-    throw std::runtime_error("Error in IUnitConverter::checkIndex: passed axis index too big: "
-                             + std::to_string(static_cast<int>(i_axis)));
-}
-
 void IUnitConverter::throwUnitsError(std::string method, std::vector<Axes::Units> available) const
 {
     std::stringstream ss;
diff --git a/Device/Unit/IUnitConverter.h b/Device/Unit/IUnitConverter.h
index fb5a5f270844302921222a0f1d1eaacc8aaff458..226c0c8ef3248436c7062a38c4b931ee4de9cb37 100644
--- a/Device/Unit/IUnitConverter.h
+++ b/Device/Unit/IUnitConverter.h
@@ -66,7 +66,6 @@ public:
 #endif // SWIG
 
 protected:
-    void checkIndex(size_t i_axis) const;
 #ifndef SWIG
     [[noreturn]] void throwUnitsError(std::string method, std::vector<Axes::Units> available) const;
 #endif // SWIG
diff --git a/GUI/coregui/DataLoaders/QREDataLoader.cpp b/GUI/coregui/DataLoaders/QREDataLoader.cpp
index 15a218831eeb498b68443f4575f060eabf626746..c8738653f7179585799cad3ddbe11758b850d115 100644
--- a/GUI/coregui/DataLoaders/QREDataLoader.cpp
+++ b/GUI/coregui/DataLoaders/QREDataLoader.cpp
@@ -561,7 +561,7 @@ void QREDataLoader::createOutputDataFromParsingResult(RealDataItem* item) const
     specularItem->setItemValue(SpecularDataItem::P_AXES_UNITS, combo.variant());
     specularItem->getItem(SpecularDataItem::P_AXES_UNITS)->setVisible(true);
 
-    auto label_map = AxisNames::InitSpecAxis();
+    auto label_map = AxisNames::specAxis;
     const auto xAxisTitle = QString::fromStdString(label_map[Axes::Units::QSPACE]);
     const auto yAxisTitle = "Signal [a.u.]"; // taken from ImportDataInfo::axisLabel
 
diff --git a/GUI/coregui/Models/DataViewUtils.cpp b/GUI/coregui/Models/DataViewUtils.cpp
index a3663c60c09118df1148334b796da03e453ec063..bed8a964442621797599d88c4d85b3363f8f328a 100644
--- a/GUI/coregui/Models/DataViewUtils.cpp
+++ b/GUI/coregui/Models/DataViewUtils.cpp
@@ -22,6 +22,7 @@
 #include "GUI/coregui/Models/JobItemUtils.h"
 
 namespace {
+
 std::unique_ptr<IUnitConverter> getConverter(Data1DViewItem* view_item)
 {
     auto job_item = view_item->jobItem();
@@ -36,8 +37,10 @@ Axes::Units selectedUnits(Data1DViewItem* view_item)
         view_item->getItemValue(Data1DViewItem::P_AXES_UNITS).value<ComboProperty>().getValue();
     return JobItemUtils::axesUnitsFromName(current_unit_name);
 }
+
 } // namespace
 
+
 void DataViewUtils::updateAxesTitle(Data1DViewItem* view_item)
 {
     auto converter = getConverter(view_item);
diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp
index 4bc118c70b1d3cf86edd4b8b5945ed10ae3607a9..6d63782be560d98aeaf06253526608367b8c571e 100644
--- a/GUI/coregui/Models/DomainSimulationBuilder.cpp
+++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp
@@ -16,10 +16,7 @@
 #include "Base/Const/Units.h"
 #include "Core/Computation/IBackground.h"
 #include "Core/Scan/AngularSpecScan.h"
-#include "Core/Simulation/DepthProbeSimulation.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Device/Beam/IFootprintFactor.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/BackgroundItems.h"
diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp
index 8128190814e7dd9e3564f5971dd52849c5385afa..c4d3653bb7c56f0e3514937d3d0f76d67bf15818 100644
--- a/GUI/coregui/Models/GUIObjectBuilder.cpp
+++ b/GUI/coregui/Models/GUIObjectBuilder.cpp
@@ -14,9 +14,7 @@
 
 #include "GUI/coregui/Models/GUIObjectBuilder.h"
 #include "Base/Const/Units.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "GUI/coregui/Models/DocumentModel.h"
 #include "GUI/coregui/Models/GUIDomainSampleVisitor.h"
 #include "GUI/coregui/Models/InstrumentItems.h"
diff --git a/GUI/coregui/Models/TransformFromDomain.cpp b/GUI/coregui/Models/TransformFromDomain.cpp
index 9619d7f048bc765c919b6d9f6a6aea9728374031..ac6fb583e852cc4594bf36466fc84319462f76f8 100644
--- a/GUI/coregui/Models/TransformFromDomain.cpp
+++ b/GUI/coregui/Models/TransformFromDomain.cpp
@@ -18,9 +18,7 @@
 #include "Core/Computation/PoissonNoiseBackground.h"
 #include "Core/Export/NodeProgeny.h"
 #include "Core/Scan/AngularSpecScan.h"
-#include "Core/Simulation/GISASSimulation.h"
-#include "Core/Simulation/OffSpecularSimulation.h"
-#include "Core/Simulation/SpecularSimulation.h"
+#include "Core/Simulation/includeSimulations.h"
 #include "Device/Beam/FootprintGauss.h"
 #include "Device/Beam/FootprintSquare.h"
 #include "Device/Detector/RectangularDetector.h"
diff --git a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/CsvDataColumn.cpp b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/CsvDataColumn.cpp
index 217c16fd558315179a132ad3f33fbaaafb7689bc..78e11f84b94a111a5d12b66627e4aae3c6564938 100644
--- a/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/CsvDataColumn.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/CsvDataColumn.cpp
@@ -13,7 +13,6 @@
 //  ************************************************************************************************
 
 #include "GUI/coregui/Views/ImportDataWidgets/CsvImportAssistant/CsvDataColumn.h"
-#include "Device/Unit/AxisNames.h"
 
 /*Csv Intensity Column*/
 
diff --git a/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp b/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
index 4c2c6feefcebe749ec45be9bcae06e7f3425c909..a3f62c9e815d00a4c423a8b1b346a867bf7c16e5 100644
--- a/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
+++ b/GUI/coregui/Views/MaskWidgets/MaskResultsPresenter.cpp
@@ -99,8 +99,8 @@ OutputData<double>* MaskResultsPresenter::createMaskPresentation() const
                 double ylow = maskItem->getItemValue(RectangleItem::P_YLOW).toDouble();
                 double xup = maskItem->getItemValue(RectangleItem::P_XUP).toDouble();
                 double yup = maskItem->getItemValue(RectangleItem::P_YUP).toDouble();
-                roi.reset(new RegionOfInterest(*m_intensityDataItem->getOutputData(), xlow, ylow,
-                                               xup, yup));
+                roi.reset(new RegionOfInterest(m_intensityDataItem->getOutputData()->axes(),
+                                               xlow, ylow, xup, yup));
             } else {
                 std::unique_ptr<IShape2D> shape(maskItem->createShape());
                 bool mask_value = maskItem->getItemValue(MaskItem::P_MASK_VALUE).toBool();
diff --git a/GUI/coregui/utils/ImportDataInfo.cpp b/GUI/coregui/utils/ImportDataInfo.cpp
index 773914d25d67edc40bf21f24652cadaa78fbd60f..beb67363b1f67a3d1426fd0c708b69a971974f2a 100644
--- a/GUI/coregui/utils/ImportDataInfo.cpp
+++ b/GUI/coregui/utils/ImportDataInfo.cpp
@@ -22,7 +22,7 @@ namespace {
 std::vector<Axes::Units> specularUnits()
 {
     std::vector<Axes::Units> result;
-    const auto units_map = AxisNames::InitSpecAxis();
+    const auto units_map = AxisNames::specAxis;
     for (auto& pair : units_map)
         result.push_back(pair.first);
     return result;
@@ -104,7 +104,7 @@ QString ImportDataInfo::axisLabel(size_t axis_index) const
         if (axis_index > 0)
             return "Signal [a.u.]";
 
-        auto label_map = AxisNames::InitSpecAxis();
+        auto label_map = AxisNames::specAxis;
         return QString::fromStdString(label_map[m_units]);
     }
     throw GUIHelpers::Error("Error in ImportDataInfo::axisLabel: unsupported data type");
diff --git a/Tests/UnitTests/GUI/TestCsvImportAssistant.cpp b/Tests/UnitTests/GUI/TestCsvImportAssistant.cpp
index 7ee4034ef42c753dd095725147ada325d4e49132..df737e845bff150c5a5f5397c97d1f126c4506de 100644
--- a/Tests/UnitTests/GUI/TestCsvImportAssistant.cpp
+++ b/Tests/UnitTests/GUI/TestCsvImportAssistant.cpp
@@ -91,6 +91,6 @@ TEST_F(TestCsvImportAssistant, test_readFile)
     EXPECT_EQ(AllocSize, 3u);
     EXPECT_EQ(RawDataVec, expected);
     EXPECT_EQ(UnitsLabel, JobItemUtils::nameFromAxesUnits(Axes::Units::DEGREES));
-    EXPECT_EQ(AxisLabel0, QString::fromStdString(AxisNames::InitSpecAxis()[Axes::Units::DEGREES]));
+    EXPECT_EQ(AxisLabel0, QString::fromStdString(AxisNames::specAxis.at(Axes::Units::DEGREES)));
     EXPECT_EQ(AxisLabel1, SpecularDataAxesNames::y_axis_default_name);
 }
diff --git a/Wrap/WinDllMacros.h b/Wrap/WinDllMacros.h
index 28e2a90ae96efa66bd78a6db61c8690f199d09af..dbe12541915fe0cb280a64066acd4e67f8adfa27 100644
--- a/Wrap/WinDllMacros.h
+++ b/Wrap/WinDllMacros.h
@@ -18,8 +18,13 @@
 
 #ifdef _WIN32
 
-#ifdef BA_CORE_BUILD_DLL
+#ifdef BA_DEVICE_BUILD_DLL
+#define BA_DEVICE_API_ __declspec(dllexport)
+#else
+#define BA_DEVICE_API_ __declspec(dllimport)
+#endif // BA_DEVICE_BUILD_DLL
 
+#ifdef BA_CORE_BUILD_DLL
 #define BA_CORE_API_ __declspec(dllexport)
 #else
 #define BA_CORE_API_ __declspec(dllimport)
@@ -28,6 +33,7 @@
 #endif // _WIN32
 
 #ifndef BA_CORE_API_
+#define BA_DEVICE_API_
 #define BA_CORE_API_
 #endif
 
diff --git a/auto/Wrap/doxygenBase.i b/auto/Wrap/doxygenBase.i
index 8488f294075cdd34c26ffc1938f388f397cc9e9d..d6d04bf493ffd83300b05db5862f57d712c65f2c 100644
--- a/auto/Wrap/doxygenBase.i
+++ b/auto/Wrap/doxygenBase.i
@@ -729,7 +729,7 @@ C++ includes: IPixel.h
 // File: classPointwiseAxis.xml
 %feature("docstring") PointwiseAxis "
 
-Axis containing arbitrary (non-equidistant) coordinate values. Lower boundary of the first bin and upper boundary of the last bin correspond to first and last passed coordinates. Other bin boundaries are computed as arithmetical mean of two adjacent coordinates. One should be aware, that bin centers reported by  PointwiseAxis::binCenter do not coincide with the values produced by Bin1D::getMidPoint. On-axis values are bounded by minimum/maximum values passed to the constructor.
+Axis containing arbitrary (non-equidistant) coordinate values. Lower boundary of the first bin and upper boundary of the last bin correspond to first and last passed coordinates. Other bin boundaries are computed as arithmetical mean of two adjacent coordinates. One should be aware, that bin centers reported by  PointwiseAxis::binCenter do not coincide with the values produced by Bin1D::center. On-axis values are bounded by minimum/maximum values passed to the constructor.
 
 C++ includes: PointwiseAxis.h
 ";
diff --git a/auto/Wrap/doxygenCore.i b/auto/Wrap/doxygenCore.i
index 92f0d612a6f62cc731105531b078674c4319fe5a..a2dd8151f191c28328b09f113f5f0f58fc89250a 100644
--- a/auto/Wrap/doxygenCore.i
+++ b/auto/Wrap/doxygenCore.i
@@ -2290,6 +2290,9 @@ C++ includes: VarianceFunctions.h
 ";
 
 
+// File: namespace_0d100.xml
+
+
 // File: namespace_0d15.xml
 
 
@@ -2323,16 +2326,13 @@ C++ includes: VarianceFunctions.h
 // File: namespace_0d77.xml
 
 
-// File: namespace_0d81.xml
-
+// File: namespace_0d82.xml
 
-// File: namespace_0d91.xml
 
+// File: namespace_0d92.xml
 
-// File: namespace_0d93.xml
 
-
-// File: namespace_0d99.xml
+// File: namespace_0d94.xml
 
 
 // File: namespaceExportToPython.xml
@@ -2937,6 +2937,9 @@ Helper factory function to use in  GISASSimulation. Depending on the type of det
 // File: GISASSimulation_8h.xml
 
 
+// File: includeSimulations_8h.xml
+
+
 // File: ISimulation_8cpp.xml
 
 
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index b42cb66fbcab5a92dc345e2e81a172da7f532934..e9458edc8a19e90d582de446ba34f70e8ce3b5c4 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -2322,56 +2322,6 @@ Number of detector bins.
 %feature("docstring")  RegionOfInterest::clipAxisToRoi "std::unique_ptr< IAxis > RegionOfInterest::clipAxisToRoi(size_t axis_index, const IAxis &axis) const
 ";
 
-%feature("docstring")  RegionOfInterest::RegionOfInterest "RegionOfInterest::RegionOfInterest(const CloneableVector< IAxis > &axes, double xlow, double ylow, double xup, double yup)
-";
-
-%feature("docstring")  RegionOfInterest::RegionOfInterest "RegionOfInterest::RegionOfInterest(const OutputData< double > &data, double xlow, double ylow, double xup, double yup)
-";
-
-%feature("docstring")  RegionOfInterest::clone "RegionOfInterest* RegionOfInterest::clone() const
-";
-
-%feature("docstring")  RegionOfInterest::~RegionOfInterest "RegionOfInterest::~RegionOfInterest()
-";
-
-%feature("docstring")  RegionOfInterest::getXlow "double RegionOfInterest::getXlow() const
-";
-
-%feature("docstring")  RegionOfInterest::getYlow "double RegionOfInterest::getYlow() const
-";
-
-%feature("docstring")  RegionOfInterest::getXup "double RegionOfInterest::getXup() const
-";
-
-%feature("docstring")  RegionOfInterest::getYup "double RegionOfInterest::getYup() const
-";
-
-%feature("docstring")  RegionOfInterest::detectorIndex "size_t RegionOfInterest::detectorIndex(size_t roiIndex) const
-
-Converts roi index to the detector index. 
-";
-
-%feature("docstring")  RegionOfInterest::roiIndex "size_t RegionOfInterest::roiIndex(size_t detectorIndex) const
-
-Converts global detector index to ROI index. 
-";
-
-%feature("docstring")  RegionOfInterest::roiSize "size_t RegionOfInterest::roiSize() const
-
-Number of detector bins in ROI area. 
-";
-
-%feature("docstring")  RegionOfInterest::detectorSize "size_t RegionOfInterest::detectorSize() const
-
-Number of detector bins. 
-";
-
-%feature("docstring")  RegionOfInterest::isInROI "bool RegionOfInterest::isInROI(size_t detectorIndex) const
-";
-
-%feature("docstring")  RegionOfInterest::clipAxisToRoi "std::unique_ptr<IAxis> RegionOfInterest::clipAxisToRoi(size_t axis_index, const IAxis &axis) const
-";
-
 
 // File: classResolutionFunction2DGaussian.xml
 %feature("docstring") ResolutionFunction2DGaussian "
@@ -2804,16 +2754,16 @@ Returns true if area defined by two bins is inside or on border of polygon (more
 // File: namespace_0d11.xml
 
 
-// File: namespace_0d30.xml
+// File: namespace_0d28.xml
 
 
-// File: namespace_0d53.xml
+// File: namespace_0d51.xml
 
 
-// File: namespace_0d61.xml
+// File: namespace_0d59.xml
 
 
-// File: namespace_0d92.xml
+// File: namespace_0d90.xml
 
 
 // File: namespaceArrayUtils.xml
@@ -2839,32 +2789,6 @@ Creates 2D vector from  OutputData.
 
 
 // File: namespaceAxisNames.xml
-%feature("docstring")  AxisNames::InitSphericalAxis0 "std::map< Axes::Units, std::string > AxisNames::InitSphericalAxis0()
-";
-
-%feature("docstring")  AxisNames::InitSphericalAxis1 "std::map< Axes::Units, std::string > AxisNames::InitSphericalAxis1()
-";
-
-%feature("docstring")  AxisNames::InitRectangularAxis0 "std::map< Axes::Units, std::string > AxisNames::InitRectangularAxis0()
-";
-
-%feature("docstring")  AxisNames::InitRectangularAxis1 "std::map< Axes::Units, std::string > AxisNames::InitRectangularAxis1()
-";
-
-%feature("docstring")  AxisNames::InitOffSpecularAxis0 "std::map< Axes::Units, std::string > AxisNames::InitOffSpecularAxis0()
-";
-
-%feature("docstring")  AxisNames::InitOffSpecularAxis1 "std::map< Axes::Units, std::string > AxisNames::InitOffSpecularAxis1()
-";
-
-%feature("docstring")  AxisNames::InitSpecAxis "std::map< Axes::Units, std::string > AxisNames::InitSpecAxis()
-";
-
-%feature("docstring")  AxisNames::InitSpecAxisQ "std::map< Axes::Units, std::string > AxisNames::InitSpecAxisQ()
-";
-
-%feature("docstring")  AxisNames::InitSampleDepthAxis "std::map< Axes::Units, std::string > AxisNames::InitSampleDepthAxis()
-";
 
 
 // File: namespaceboost_1_1geometry.xml
@@ -3111,18 +3035,6 @@ make Swappable
 // File: RectangularDetector_8h.xml
 
 
-// File: Detector_2RegionOfInterest_8cpp.xml
-
-
-// File: ProDetector_2RegionOfInterest_8cpp.xml
-
-
-// File: Detector_2RegionOfInterest_8h.xml
-
-
-// File: ProDetector_2RegionOfInterest_8h.xml
-
-
 // File: SimpleUnitConverters_8cpp.xml
 
 
@@ -3276,6 +3188,12 @@ make Swappable
 // File: DetectorMask_8h.xml
 
 
+// File: RegionOfInterest_8cpp.xml
+
+
+// File: RegionOfInterest_8h.xml
+
+
 // File: ConvolutionDetectorResolution_8cpp.xml