diff --git a/Core/Instrument/Instrument.h b/Core/Instrument/Instrument.h
index 86d79c1510b4d75f2284305dbecfc4778a1f3448..efcb5a58e807f48dd39d6d41a9d5695d9843bb38 100644
--- a/Core/Instrument/Instrument.h
+++ b/Core/Instrument/Instrument.h
@@ -31,7 +31,7 @@ class SimulationElement;
 //! Assembles beam, detector and their relative positions with respect to the sample.
 //! @ingroup simulation_internal
 
-class BA_CORE_API_ Instrument final : public INode
+class BA_CORE_API_ Instrument : public INode
 {
 public:
     Instrument();
diff --git a/Tests/Functional/Core/Std/macros.cpp b/Tests/Functional/Core/Std/macros.cpp
index 9c3fa1e86ff74d7fd03e83dd18ea9fa4c310664f..165b8a89bcfcdecd6b2fb663125c45c828dc8716 100644
--- a/Tests/Functional/Core/Std/macros.cpp
+++ b/Tests/Functional/Core/Std/macros.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Tests/Functional/Core/Std/main.cpp
+//! @file      Tests/Functional/Core/Std/macros.cpp
 //! @brief     Implements Core standard tests through gtest macros.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Tests/Functional/GUI/Std/Check.cpp b/Tests/Functional/GUI/Std/Check.cpp
index e3a36d0eeae0d69e5bd8e72540ce1cc87453ba6b..2a913d42a4ba67cc5b0445e4c5922d4b3c6fe042 100644
--- a/Tests/Functional/GUI/Std/Check.cpp
+++ b/Tests/Functional/GUI/Std/Check.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Tests/Functional/Python/Std/Check.cpp
+//! @file      Tests/Functional/GUI/Std/Check.cpp
 //! @brief     Implements function checkSimulation for Python standard test
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Tests/Functional/GUI/Std/macros.cpp b/Tests/Functional/GUI/Std/macros.cpp
index 71f3b6c8bfa38e11faaa013608ac7281ba13dbbd..1b91fe78245f4107ccad64dc6f4bc1ffddcd9edf 100644
--- a/Tests/Functional/GUI/Std/macros.cpp
+++ b/Tests/Functional/GUI/Std/macros.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Tests/Functional/Python/Std/main.cpp
+//! @file      Tests/Functional/GUI/Std/macros.cpp
 //! @brief     Implements Core standard tests through gtest macros.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/Tests/Functional/Python/Std/macros.cpp b/Tests/Functional/Python/Std/macros.cpp
index 067e3414752395be4de16f6d38f000627a93bd3e..af16aa0960c6d92a43300b0151c6890e3b2ebf8f 100644
--- a/Tests/Functional/Python/Std/macros.cpp
+++ b/Tests/Functional/Python/Std/macros.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit scattering at grazing incidence
 //
-//! @file      Tests/Functional/Python/Std/main.cpp
+//! @file      Tests/Functional/Python/Std/macros.cpp
 //! @brief     Implements Core standard tests through gtest macros.
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index d29c25b19badccf9883d894ccd99b2326fbe5c39..eaab6dc9a1c05646cf318128b736372ae6c2d150 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -1421,18 +1421,18 @@ C++ includes: SimpleUnitConverters.h
 %feature("docstring")  DepthProbeConverter::DepthProbeConverter "DepthProbeConverter::DepthProbeConverter(const Beam &beam, const IAxis &alpha_axis, const IAxis &z_axis)
 ";
 
-%feature("docstring")  DepthProbeConverter::~DepthProbeConverter "DepthProbeConverter::~DepthProbeConverter() override
+%feature("docstring")  DepthProbeConverter::~DepthProbeConverter "DepthProbeConverter::~DepthProbeConverter() final
 ";
 
-%feature("docstring")  DepthProbeConverter::clone "DepthProbeConverter * DepthProbeConverter::clone() const override
+%feature("docstring")  DepthProbeConverter::clone "DepthProbeConverter * DepthProbeConverter::clone() const final
 ";
 
-%feature("docstring")  DepthProbeConverter::availableUnits "std::vector< AxesUnits > DepthProbeConverter::availableUnits() const override
+%feature("docstring")  DepthProbeConverter::availableUnits "std::vector< AxesUnits > DepthProbeConverter::availableUnits() const final
 
 Returns the list of all available units. 
 ";
 
-%feature("docstring")  DepthProbeConverter::defaultUnits "AxesUnits DepthProbeConverter::defaultUnits() const override
+%feature("docstring")  DepthProbeConverter::defaultUnits "AxesUnits DepthProbeConverter::defaultUnits() const final
 ";
 
 
@@ -6308,6 +6308,11 @@ C++ includes: ICloneable.h
 %feature("docstring")  ICloneable::clone "virtual ICloneable* ICloneable::clone() const =0
 ";
 
+%feature("docstring")  ICloneable::transferToCPP "virtual void ICloneable::transferToCPP()
+
+Used for Python overriding of clone (see swig/tweaks.py) 
+";
+
 
 // File: classIClusteredParticles.xml
 %feature("docstring") IClusteredParticles "
@@ -7811,10 +7816,10 @@ Returns a vector of children (const).
 %feature("docstring")  INode::setParent "void INode::setParent(const INode *newParent)
 ";
 
-%feature("docstring")  INode::parent "INode * INode::parent() const
+%feature("docstring")  INode::parent "const INode * INode::parent() const
 ";
 
-%feature("docstring")  INode::parent "INode* INode::parent()
+%feature("docstring")  INode::parent "INode * INode::parent()
 ";
 
 %feature("docstring")  INode::copyNumber "int INode::copyNumber(const INode *node) const
@@ -8289,12 +8294,12 @@ Sets the beam's polarization according to the given Bloch vector.
 Returns the beam's intensity. 
 ";
 
-%feature("docstring")  Instrument::getDetector "IDetector * Instrument::getDetector() const
+%feature("docstring")  Instrument::getDetector "const IDetector * Instrument::getDetector() const
 
 Returns the detector data. 
 ";
 
-%feature("docstring")  Instrument::getDetector "IDetector* Instrument::getDetector()
+%feature("docstring")  Instrument::getDetector "IDetector * Instrument::getDetector()
 ";
 
 %feature("docstring")  Instrument::getDetectorMask "const DetectorMask * Instrument::getDetectorMask() const
@@ -11551,13 +11556,13 @@ C++ includes: SimpleUnitConverters.h
 %feature("docstring")  OffSpecularConverter::OffSpecularConverter "OffSpecularConverter::OffSpecularConverter(const IDetector2D &detector, const Beam &beam, const IAxis &alpha_axis)
 ";
 
-%feature("docstring")  OffSpecularConverter::~OffSpecularConverter "OffSpecularConverter::~OffSpecularConverter() override
+%feature("docstring")  OffSpecularConverter::~OffSpecularConverter "OffSpecularConverter::~OffSpecularConverter() final
 ";
 
-%feature("docstring")  OffSpecularConverter::clone "OffSpecularConverter * OffSpecularConverter::clone() const override
+%feature("docstring")  OffSpecularConverter::clone "OffSpecularConverter * OffSpecularConverter::clone() const final
 ";
 
-%feature("docstring")  OffSpecularConverter::defaultUnits "AxesUnits OffSpecularConverter::defaultUnits() const override
+%feature("docstring")  OffSpecularConverter::defaultUnits "AxesUnits OffSpecularConverter::defaultUnits() const final
 ";
 
 
@@ -11695,12 +11700,12 @@ Returns copy of raw data vector.
 Returns sum of all values in the data structure. 
 ";
 
-%feature("docstring")  OutputData::begin "OutputData< T >::const_iterator OutputData< T >::begin()
+%feature("docstring")  OutputData::begin "OutputData< T >::iterator OutputData< T >::begin()
 
 Returns read/write iterator that points to the first element. 
 ";
 
-%feature("docstring")  OutputData::begin "const_iterator OutputData< T >::begin() const
+%feature("docstring")  OutputData::begin "OutputData< T >::const_iterator OutputData< T >::begin() const
 
 Returns read-only iterator that points to the first element. 
 ";
@@ -12135,10 +12140,10 @@ get number of samples for this distribution
 get the sigma factor 
 ";
 
-%feature("docstring")  ParameterDistribution::getDistribution "IDistribution1D * ParameterDistribution::getDistribution() const
+%feature("docstring")  ParameterDistribution::getDistribution "const IDistribution1D * ParameterDistribution::getDistribution() const
 ";
 
-%feature("docstring")  ParameterDistribution::getDistribution "IDistribution1D* ParameterDistribution::getDistribution()
+%feature("docstring")  ParameterDistribution::getDistribution "IDistribution1D * ParameterDistribution::getDistribution()
 ";
 
 %feature("docstring")  ParameterDistribution::generateSamples "std::vector< ParameterSample > ParameterDistribution::generateSamples() const
@@ -13854,18 +13859,18 @@ C++ includes: SimpleUnitConverters.h
 %feature("docstring")  RectangularConverter::RectangularConverter "RectangularConverter::RectangularConverter(const RectangularDetector &detector, const Beam &beam)
 ";
 
-%feature("docstring")  RectangularConverter::~RectangularConverter "RectangularConverter::~RectangularConverter() override
+%feature("docstring")  RectangularConverter::~RectangularConverter "RectangularConverter::~RectangularConverter() final
 ";
 
-%feature("docstring")  RectangularConverter::clone "RectangularConverter * RectangularConverter::clone() const override
+%feature("docstring")  RectangularConverter::clone "RectangularConverter * RectangularConverter::clone() const final
 ";
 
-%feature("docstring")  RectangularConverter::availableUnits "std::vector< AxesUnits > RectangularConverter::availableUnits() const override
+%feature("docstring")  RectangularConverter::availableUnits "std::vector< AxesUnits > RectangularConverter::availableUnits() const final
 
 Returns the list of all available units. 
 ";
 
-%feature("docstring")  RectangularConverter::defaultUnits "AxesUnits RectangularConverter::defaultUnits() const override
+%feature("docstring")  RectangularConverter::defaultUnits "AxesUnits RectangularConverter::defaultUnits() const final
 ";
 
 
@@ -16229,18 +16234,18 @@ C++ includes: SimpleUnitConverters.h
 %feature("docstring")  SphericalConverter::SphericalConverter "SphericalConverter::SphericalConverter(const SphericalDetector &detector, const Beam &beam)
 ";
 
-%feature("docstring")  SphericalConverter::~SphericalConverter "SphericalConverter::~SphericalConverter() override
+%feature("docstring")  SphericalConverter::~SphericalConverter "SphericalConverter::~SphericalConverter() final
 ";
 
-%feature("docstring")  SphericalConverter::clone "SphericalConverter * SphericalConverter::clone() const override
+%feature("docstring")  SphericalConverter::clone "SphericalConverter * SphericalConverter::clone() const final
 ";
 
-%feature("docstring")  SphericalConverter::availableUnits "std::vector< AxesUnits > SphericalConverter::availableUnits() const override
+%feature("docstring")  SphericalConverter::availableUnits "std::vector< AxesUnits > SphericalConverter::availableUnits() const final
 
 Returns the list of all available units. 
 ";
 
-%feature("docstring")  SphericalConverter::defaultUnits "AxesUnits SphericalConverter::defaultUnits() const override
+%feature("docstring")  SphericalConverter::defaultUnits "AxesUnits SphericalConverter::defaultUnits() const final
 ";
 
 
@@ -16790,16 +16795,16 @@ C++ includes: SimpleUnitConverters.h
 %feature("docstring")  UnitConverterSimple::~UnitConverterSimple "UnitConverterSimple::~UnitConverterSimple() override=default
 ";
 
-%feature("docstring")  UnitConverterSimple::dimension "size_t UnitConverterSimple::dimension() const override
+%feature("docstring")  UnitConverterSimple::dimension "size_t UnitConverterSimple::dimension() const final
 ";
 
-%feature("docstring")  UnitConverterSimple::calculateMin "double UnitConverterSimple::calculateMin(size_t i_axis, AxesUnits units_type) const override
+%feature("docstring")  UnitConverterSimple::calculateMin "double UnitConverterSimple::calculateMin(size_t i_axis, AxesUnits units_type) const final
 ";
 
-%feature("docstring")  UnitConverterSimple::calculateMax "double UnitConverterSimple::calculateMax(size_t i_axis, AxesUnits units_type) const override
+%feature("docstring")  UnitConverterSimple::calculateMax "double UnitConverterSimple::calculateMax(size_t i_axis, AxesUnits units_type) const final
 ";
 
-%feature("docstring")  UnitConverterSimple::axisSize "size_t UnitConverterSimple::axisSize(size_t i_axis) const override
+%feature("docstring")  UnitConverterSimple::axisSize "size_t UnitConverterSimple::axisSize(size_t i_axis) const final
 ";
 
 %feature("docstring")  UnitConverterSimple::availableUnits "std::vector< AxesUnits > UnitConverterSimple::availableUnits() const override
@@ -16807,7 +16812,7 @@ C++ includes: SimpleUnitConverters.h
 Returns the list of all available units. 
 ";
 
-%feature("docstring")  UnitConverterSimple::createConvertedAxis "std::unique_ptr< IAxis > UnitConverterSimple::createConvertedAxis(size_t i_axis, AxesUnits units) const override
+%feature("docstring")  UnitConverterSimple::createConvertedAxis "std::unique_ptr< IAxis > UnitConverterSimple::createConvertedAxis(size_t i_axis, AxesUnits units) const final
 ";
 
 
diff --git a/auto/Wrap/doxygen_fit.i b/auto/Wrap/doxygen_fit.i
index 46a473e6e4e398291ecc67e3f672d11f471cb7b1..26ba7ec8e32252fa92dd7b41f59d33c3304e7617 100644
--- a/auto/Wrap/doxygen_fit.i
+++ b/auto/Wrap/doxygen_fit.i
@@ -891,16 +891,16 @@ C++ includes: Parameters.h
 %feature("docstring")  Fit::Parameters::add "void Parameters::add(const Parameter &par)
 ";
 
-%feature("docstring")  Fit::Parameters::begin "Parameters::iterator Parameters::begin() const
+%feature("docstring")  Fit::Parameters::begin "Parameters::const_iterator Parameters::begin() const
 ";
 
-%feature("docstring")  Fit::Parameters::end "Parameters::iterator Parameters::end() const
+%feature("docstring")  Fit::Parameters::end "Parameters::const_iterator Parameters::end() const
 ";
 
-%feature("docstring")  Fit::Parameters::begin "iterator Fit::Parameters::begin()
+%feature("docstring")  Fit::Parameters::begin "Parameters::iterator Parameters::begin()
 ";
 
-%feature("docstring")  Fit::Parameters::end "iterator Fit::Parameters::end()
+%feature("docstring")  Fit::Parameters::end "Parameters::iterator Parameters::end()
 ";
 
 %feature("docstring")  Fit::Parameters::size "size_t Parameters::size() const
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 46f71ad489a4bd8699ee7543e9de0ea0c3b5be6f..20371e742a34f42a5027295ded1e4fa4f4f4d46e 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -1791,7 +1791,13 @@ class ICloneable(object):
         return _libBornAgainCore.ICloneable_clone(self)
 
     def transferToCPP(self):
-        r"""transferToCPP(ICloneable self)"""
+        r"""
+        transferToCPP(ICloneable self)
+        virtual void ICloneable::transferToCPP()
+
+        Used for Python overriding of clone (see swig/tweaks.py) 
+
+        """
         return self.__disown__()
 
 # Register ICloneable in _libBornAgainCore:
@@ -2052,7 +2058,7 @@ class INode(IParameterized):
         r"""
         parent(INode self) -> INode
         parent(INode self) -> INode
-        INode* INode::parent()
+        INode * INode::parent()
 
         """
         return _libBornAgainCore.INode_parent(self, *args)
@@ -16782,7 +16788,7 @@ class Instrument(INode):
         r"""
         getDetector(Instrument self) -> IDetector
         getDetector(Instrument self) -> IDetector
-        IDetector* Instrument::getDetector()
+        IDetector * Instrument::getDetector()
 
         """
         return _libBornAgainCore.Instrument_getDetector(self, *args)
@@ -20416,7 +20422,7 @@ class IntensityData(object):
         r"""
         begin(IntensityData self) -> OutputData< double >::iterator
         begin(IntensityData self) -> OutputData< double >::const_iterator
-        const_iterator OutputData< T >::begin() const
+        OutputData< T >::const_iterator OutputData< T >::begin() const
 
         Returns read-only iterator that points to the first element. 
 
@@ -20767,7 +20773,7 @@ class ParameterDistribution(IParameterized):
         r"""
         getDistribution(ParameterDistribution self) -> IDistribution1D
         getDistribution(ParameterDistribution self) -> IDistribution1D
-        IDistribution1D* ParameterDistribution::getDistribution()
+        IDistribution1D * ParameterDistribution::getDistribution()
 
         """
         return _libBornAgainCore.ParameterDistribution_getDistribution(self, *args)
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index e03504984b446dfb2b827499474791980a29a071..b275fa50b70d48e04103a89f0cd0a9eb76b618f3 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -122252,7 +122252,13 @@ static PyMethodDef SwigMethods[] = {
 		"virtual ICloneable* ICloneable::clone() const =0\n"
 		"\n"
 		""},
-	 { "ICloneable_transferToCPP", _wrap_ICloneable_transferToCPP, METH_O, "ICloneable_transferToCPP(ICloneable self)"},
+	 { "ICloneable_transferToCPP", _wrap_ICloneable_transferToCPP, METH_O, "\n"
+		"ICloneable_transferToCPP(ICloneable self)\n"
+		"virtual void ICloneable::transferToCPP()\n"
+		"\n"
+		"Used for Python overriding of clone (see swig/tweaks.py) \n"
+		"\n"
+		""},
 	 { "ICloneable_swigregister", ICloneable_swigregister, METH_O, NULL},
 	 { "new_IParameterized", _wrap_new_IParameterized, METH_VARARGS, "\n"
 		"IParameterized(std::string const & name=\"\")\n"
@@ -122390,7 +122396,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "INode_parent", _wrap_INode_parent, METH_VARARGS, "\n"
 		"INode_parent(INode self) -> INode\n"
 		"INode_parent(INode self) -> INode\n"
-		"INode* INode::parent()\n"
+		"INode * INode::parent()\n"
 		"\n"
 		""},
 	 { "INode_copyNumber", _wrap_INode_copyNumber, METH_VARARGS, "\n"
@@ -130932,7 +130938,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Instrument_getDetector", _wrap_Instrument_getDetector, METH_VARARGS, "\n"
 		"Instrument_getDetector(Instrument self) -> IDetector\n"
 		"Instrument_getDetector(Instrument self) -> IDetector\n"
-		"IDetector* Instrument::getDetector()\n"
+		"IDetector * Instrument::getDetector()\n"
 		"\n"
 		""},
 	 { "Instrument_getDetectorMask", _wrap_Instrument_getDetectorMask, METH_O, "\n"
@@ -133141,7 +133147,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "IntensityData_begin", _wrap_IntensityData_begin, METH_VARARGS, "\n"
 		"IntensityData_begin(IntensityData self) -> OutputData< double >::iterator\n"
 		"IntensityData_begin(IntensityData self) -> OutputData< double >::const_iterator\n"
-		"const_iterator OutputData< T >::begin() const\n"
+		"OutputData< T >::const_iterator OutputData< T >::begin() const\n"
 		"\n"
 		"Returns read-only iterator that points to the first element. \n"
 		"\n"
@@ -133390,7 +133396,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "ParameterDistribution_getDistribution", _wrap_ParameterDistribution_getDistribution, METH_VARARGS, "\n"
 		"ParameterDistribution_getDistribution(ParameterDistribution self) -> IDistribution1D\n"
 		"ParameterDistribution_getDistribution(ParameterDistribution self) -> IDistribution1D\n"
-		"IDistribution1D* ParameterDistribution::getDistribution()\n"
+		"IDistribution1D * ParameterDistribution::getDistribution()\n"
 		"\n"
 		""},
 	 { "ParameterDistribution_generateSamples", _wrap_ParameterDistribution_generateSamples, METH_O, "\n"
diff --git a/auto/Wrap/libBornAgainFit.py b/auto/Wrap/libBornAgainFit.py
index 10a838417acd0671d1bab87af610efbd385977f8..33f3addf37fc596386ec20c6e5fce354be5ca7e0 100644
--- a/auto/Wrap/libBornAgainFit.py
+++ b/auto/Wrap/libBornAgainFit.py
@@ -1722,7 +1722,7 @@ class Parameters(object):
         r"""
         begin(Parameters self) -> Fit::Parameters::const_iterator
         begin(Parameters self) -> Fit::Parameters::iterator
-        iterator Fit::Parameters::begin()
+        Parameters::iterator Parameters::begin()
 
         """
         return _libBornAgainFit.Parameters_begin(self, *args)
@@ -1731,7 +1731,7 @@ class Parameters(object):
         r"""
         end(Parameters self) -> Fit::Parameters::const_iterator
         end(Parameters self) -> Fit::Parameters::iterator
-        iterator Fit::Parameters::end()
+        Parameters::iterator Parameters::end()
 
         """
         return _libBornAgainFit.Parameters_end(self, *args)
diff --git a/auto/Wrap/libBornAgainFit_wrap.cpp b/auto/Wrap/libBornAgainFit_wrap.cpp
index 2ba957261a8620ffe61f6f4a0e66188972de05b8..0c5a892161c9316b6c91c87c4822e677143e25ae 100644
--- a/auto/Wrap/libBornAgainFit_wrap.cpp
+++ b/auto/Wrap/libBornAgainFit_wrap.cpp
@@ -22417,13 +22417,13 @@ static PyMethodDef SwigMethods[] = {
 	 { "Parameters_begin", _wrap_Parameters_begin, METH_VARARGS, "\n"
 		"Parameters_begin(Parameters self) -> Fit::Parameters::const_iterator\n"
 		"Parameters_begin(Parameters self) -> Fit::Parameters::iterator\n"
-		"iterator Fit::Parameters::begin()\n"
+		"Parameters::iterator Parameters::begin()\n"
 		"\n"
 		""},
 	 { "Parameters_end", _wrap_Parameters_end, METH_VARARGS, "\n"
 		"Parameters_end(Parameters self) -> Fit::Parameters::const_iterator\n"
 		"Parameters_end(Parameters self) -> Fit::Parameters::iterator\n"
-		"iterator Fit::Parameters::end()\n"
+		"Parameters::iterator Parameters::end()\n"
 		"\n"
 		""},
 	 { "Parameters_size", _wrap_Parameters_size, METH_O, "\n"