diff --git a/Device/Instrument/Instrument.h b/Device/Instrument/Instrument.h
index 5e53de265e4c1e6b449fb432ae15e670e7f94a42..3ee6f560badb44810ba67e89e5e875b9e315f10d 100644
--- a/Device/Instrument/Instrument.h
+++ b/Device/Instrument/Instrument.h
@@ -58,7 +58,7 @@ public:
     //! init detector with beam settings
     void initDetector();
 
-    std::vector<const INode*> getChildren() const;
+    std::vector<const INode*> getChildren() const override;
 
 protected:
     Beam m_beam;
diff --git a/Device/Resolution/ConvolutionDetectorResolution.h b/Device/Resolution/ConvolutionDetectorResolution.h
index 1cbc74895f45c50b4263a4c0b20677614e63a53e..20d7404644327aba14ca9a03ae17b6b9ced808ac 100644
--- a/Device/Resolution/ConvolutionDetectorResolution.h
+++ b/Device/Resolution/ConvolutionDetectorResolution.h
@@ -40,16 +40,17 @@ public:
 
     virtual ~ConvolutionDetectorResolution();
 
+    ConvolutionDetectorResolution* clone() const override;
+
     //! Convolve given intensities with the encapsulated resolution.
-    virtual void applyDetectorResolution(OutputData<double>* p_intensity_map) const;
+    void applyDetectorResolution(OutputData<double>* p_intensity_map) const override;
 
-    virtual ConvolutionDetectorResolution* clone() const;
 
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     const IResolutionFunction2D* getResolutionFunction2D() const;
 
-    std::vector<const INode*> getChildren() const;
+    std::vector<const INode*> getChildren() const override;
 
 protected:
     ConvolutionDetectorResolution(const ConvolutionDetectorResolution& other);
diff --git a/Device/Resolution/IDetectorResolution.h b/Device/Resolution/IDetectorResolution.h
index 9226d4bbe4804c5c2c17b19cce9ac2658378e962..b57da5bad759394a12ee1418aba62c6276f9ef85 100644
--- a/Device/Resolution/IDetectorResolution.h
+++ b/Device/Resolution/IDetectorResolution.h
@@ -26,13 +26,14 @@
 class IDetectorResolution : public ICloneable, public INode {
 public:
     virtual ~IDetectorResolution() {}
+    IDetectorResolution* clone() const override = 0;
+
     //! Apply the resolution function to the intensity data
     virtual void applyDetectorResolution(OutputData<double>* p_intensity_map) const = 0;
 #ifndef SWIG
     //! Applies the detector resolution to the matrix-valued intensity data
     void applyDetectorResolutionPol(OutputData<Eigen::Matrix2d>* p_matrix_intensity) const;
 #endif
-    virtual IDetectorResolution* clone() const = 0;
 };
 
 #endif // BORNAGAIN_DEVICE_RESOLUTION_IDETECTORRESOLUTION_H
diff --git a/Device/Resolution/ResolutionFunction2DGaussian.h b/Device/Resolution/ResolutionFunction2DGaussian.h
index 2ce7bdc1f269484c77ec1688edb4317054e0775c..a835c904023049a7c32a09ffe18fecc8137c3494 100644
--- a/Device/Resolution/ResolutionFunction2DGaussian.h
+++ b/Device/Resolution/ResolutionFunction2DGaussian.h
@@ -24,15 +24,15 @@ class ResolutionFunction2DGaussian : public IResolutionFunction2D {
 public:
     ResolutionFunction2DGaussian(double sigma_x, double sigma_y);
 
-    virtual double evaluateCDF(double x, double y) const;
-
-    ResolutionFunction2DGaussian* clone() const
+    ResolutionFunction2DGaussian* clone() const override
     {
         return new ResolutionFunction2DGaussian(m_sigma_x, m_sigma_y);
     }
 
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
+    double evaluateCDF(double x, double y) const override;
+
     double getSigmaX() const { return m_sigma_x; }
     double getSigmaY() const { return m_sigma_y; }
 
diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp
index de7c3e3671b58b712061c43a6b4017d92dc1dc29..f253359b7b6a5b347e56edfef55604b86956b853 100644
--- a/GUI/coregui/Models/DomainObjectBuilder.cpp
+++ b/GUI/coregui/Models/DomainObjectBuilder.cpp
@@ -19,8 +19,8 @@
 #include "Device/Detector/UnitConverter2D.h"
 #include "GUI/coregui/Models/AxesItems.h"
 #include "GUI/coregui/Models/ComboProperty.h"
-#include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/InstrumentItems.h"
+#include "GUI/coregui/Models/InterferenceFunctionItems.h"
 #include "GUI/coregui/Models/LayerItem.h"
 #include "GUI/coregui/Models/ParticleDistributionItem.h"
 #include "GUI/coregui/Models/ParticleLayoutItem.h"
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index b12bf5eedc3bc38a3ef0e9e8da0061458452ccd5..2c6d99ed8f26f03d7a0de877f82168fad6eef6e0 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -363,7 +363,7 @@ std::unique_ptr<IUnitConverter> OffSpecularInstrumentItem::createUnitConverter()
     auto axis_item = item<BasicAxisItem>(OffSpecularInstrumentItem::P_ALPHA_AXIS);
     const auto detector2d = dynamic_cast<const IDetector2D*>(instrument->getDetector());
     return std::make_unique<OffSpecularConverter>(*detector2d, instrument->beam(),
-                                                      *axis_item->createAxis(Units::deg));
+                                                  *axis_item->createAxis(Units::deg));
 }
 
 //  ************************************************************************************************
diff --git a/Param/Distrib/Distributions.h b/Param/Distrib/Distributions.h
index b38d62bdd2a19b7b5608aae04bbaf8cead75c0a3..feda0bba0cde4f8ea90b61d1e8ccfb00bb9b7731 100644
--- a/Param/Distrib/Distributions.h
+++ b/Param/Distrib/Distributions.h
@@ -34,8 +34,7 @@ class ParameterSample;
 class IDistribution1D : public ICloneable, public INode {
 public:
     IDistribution1D(const NodeMeta& meta, const std::vector<double>& PValues);
-
-    virtual IDistribution1D* clone() const = 0;
+    IDistribution1D* clone() const override = 0;
 
     //! Returns the distribution-specific probability density for value x.
     virtual double probabilityDensity(double x) const = 0;
diff --git a/Sample/Aggregate/IInterferenceFunction.h b/Sample/Aggregate/IInterferenceFunction.h
index ff50ef578ed3f77b35b69595ae225e2f06100059..cc94d506815132103ff3a65a58fa4d231fc87421 100644
--- a/Sample/Aggregate/IInterferenceFunction.h
+++ b/Sample/Aggregate/IInterferenceFunction.h
@@ -26,7 +26,7 @@ public:
     IInterferenceFunction(const NodeMeta& meta, const std::vector<double>& PValues);
     IInterferenceFunction(double position_var);
 
-    virtual IInterferenceFunction* clone() const = 0;
+    IInterferenceFunction* clone() const override = 0;
 
     //! Evaluates the interference function for a given wavevector transfer
     virtual double evaluate(const kvector_t q, double outer_iff = 1.0) const;
diff --git a/Sample/Correlations/FTDecay1D.h b/Sample/Correlations/FTDecay1D.h
index 18a2deab0f397cc388bf808a55307a53acc95804..c2c9ce8e3f9684aee09c92752a58db18991fca8f 100644
--- a/Sample/Correlations/FTDecay1D.h
+++ b/Sample/Correlations/FTDecay1D.h
@@ -29,8 +29,8 @@
 class IFTDecayFunction1D : public ICloneable, public INode {
 public:
     IFTDecayFunction1D(const NodeMeta& meta, const std::vector<double>& PValues);
+    IFTDecayFunction1D* clone() const override = 0;
 
-    virtual IFTDecayFunction1D* clone() const = 0;
     virtual double evaluate(double q) const = 0;
     double decayLength() const { return m_decay_length; }
 
@@ -48,7 +48,7 @@ public:
     FTDecayFunction1DCauchy(const std::vector<double> P);
     FTDecayFunction1DCauchy(double decay_length);
 
-    FTDecayFunction1DCauchy* clone() const;
+    FTDecayFunction1DCauchy* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double q) const override;
 };
@@ -61,7 +61,7 @@ public:
     FTDecayFunction1DGauss(const std::vector<double> P);
     FTDecayFunction1DGauss(double decay_length);
 
-    FTDecayFunction1DGauss* clone() const;
+    FTDecayFunction1DGauss* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double q) const override;
 };
@@ -74,7 +74,7 @@ public:
     FTDecayFunction1DTriangle(const std::vector<double> P);
     FTDecayFunction1DTriangle(double decay_length);
 
-    FTDecayFunction1DTriangle* clone() const;
+    FTDecayFunction1DTriangle* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double q) const override;
 };
@@ -87,7 +87,7 @@ public:
     FTDecayFunction1DVoigt(const std::vector<double> P);
     FTDecayFunction1DVoigt(double decay_length, double eta);
 
-    FTDecayFunction1DVoigt* clone() const;
+    FTDecayFunction1DVoigt* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double q) const override;
     double eEta() const { return m_eta; }
diff --git a/Sample/Correlations/FTDecay2D.h b/Sample/Correlations/FTDecay2D.h
index 7a3aa16bcd6307d5a05fac5f87b0c83b31cb2543..723417287331b6d7d73a3803dd969579510d1a71 100644
--- a/Sample/Correlations/FTDecay2D.h
+++ b/Sample/Correlations/FTDecay2D.h
@@ -27,8 +27,7 @@
 class IFTDecayFunction2D : public ICloneable, public INode {
 public:
     IFTDecayFunction2D(const NodeMeta& meta, const std::vector<double>& PValues);
-
-    virtual IFTDecayFunction2D* clone() const = 0;
+    IFTDecayFunction2D* clone() const override = 0;
 
     //! get decay length in distribution's X-direction
     double decayLengthX() const { return m_decay_length_x; }
@@ -67,7 +66,7 @@ public:
     FTDecayFunction2DCauchy(const std::vector<double> P);
     FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma);
 
-    FTDecayFunction2DCauchy* clone() const;
+    FTDecayFunction2DCauchy* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double qx, double qy) const override;
 };
@@ -81,7 +80,7 @@ public:
     FTDecayFunction2DGauss(const std::vector<double> P);
     FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma);
 
-    FTDecayFunction2DGauss* clone() const;
+    FTDecayFunction2DGauss* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double qx, double qy) const override;
 };
@@ -94,7 +93,7 @@ public:
     FTDecayFunction2DVoigt(const std::vector<double> P);
     FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta);
 
-    FTDecayFunction2DVoigt* clone() const;
+    FTDecayFunction2DVoigt* clone() const override;
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
     double evaluate(double qx, double qy) const override;
     double eta() const { return m_eta; }
diff --git a/Sample/HardParticle/FormFactorAnisoPyramid.h b/Sample/HardParticle/FormFactorAnisoPyramid.h
index 5979dfc196bd66f3a2925e071b31ad41a555a159..eee0b77109aaeec61329d4c2cf896b26c859facf 100644
--- a/Sample/HardParticle/FormFactorAnisoPyramid.h
+++ b/Sample/HardParticle/FormFactorAnisoPyramid.h
@@ -25,7 +25,7 @@ public:
     FormFactorAnisoPyramid(const std::vector<double> P);
     FormFactorAnisoPyramid(double length, double width, double height, double alpha);
 
-    FormFactorAnisoPyramid* clone() const final
+    FormFactorAnisoPyramid* clone() const override
     {
         return new FormFactorAnisoPyramid(m_length, m_width, m_height, m_alpha);
     }
diff --git a/Sample/HardParticle/FormFactorCantellatedCube.h b/Sample/HardParticle/FormFactorCantellatedCube.h
index 7fec2e8f18b41fd7baefef37a17ba62a7cd12c6f..efe80b2c62e42c1c00776503b25724e405d94840 100644
--- a/Sample/HardParticle/FormFactorCantellatedCube.h
+++ b/Sample/HardParticle/FormFactorCantellatedCube.h
@@ -25,7 +25,7 @@ public:
     FormFactorCantellatedCube(const std::vector<double> P);
     FormFactorCantellatedCube(double length, double removed_length);
 
-    FormFactorCantellatedCube* clone() const final
+    FormFactorCantellatedCube* clone() const override
     {
         return new FormFactorCantellatedCube(m_length, m_removed_length);
     }
diff --git a/Sample/HardParticle/FormFactorCone.h b/Sample/HardParticle/FormFactorCone.h
index c1a7effec99a93239fc4c5a1b3c619578951d6c0..afff880f847810d89f9f3082a32fe4d8a7f3ddff 100644
--- a/Sample/HardParticle/FormFactorCone.h
+++ b/Sample/HardParticle/FormFactorCone.h
@@ -25,7 +25,10 @@ public:
     FormFactorCone(const std::vector<double> P);
     FormFactorCone(double radius, double height, double alpha);
 
-    FormFactorCone* clone() const override { return new FormFactorCone(m_radius, m_height, m_alpha); }
+    FormFactorCone* clone() const override
+    {
+        return new FormFactorCone(m_radius, m_height, m_alpha);
+    }
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     double getHeight() const { return m_height; }
diff --git a/Sample/HardParticle/FormFactorCone6.h b/Sample/HardParticle/FormFactorCone6.h
index dc0acb4ffd7a9d92db70383f03b1a1a0921df672..92d20fb045716230a79fec4776a96ee432517204 100644
--- a/Sample/HardParticle/FormFactorCone6.h
+++ b/Sample/HardParticle/FormFactorCone6.h
@@ -25,7 +25,7 @@ public:
     FormFactorCone6(const std::vector<double> P);
     FormFactorCone6(double base_edge, double height, double alpha);
 
-    FormFactorCone6* clone() const final
+    FormFactorCone6* clone() const override
     {
         return new FormFactorCone6(m_base_edge, m_height, m_alpha);
     }
diff --git a/Sample/HardParticle/FormFactorCuboctahedron.h b/Sample/HardParticle/FormFactorCuboctahedron.h
index 690ebf170470fa5ee29ac9562119613e6c2e77ce..783a0f4795d774c4776c1284be3b7149d0abfaf8 100644
--- a/Sample/HardParticle/FormFactorCuboctahedron.h
+++ b/Sample/HardParticle/FormFactorCuboctahedron.h
@@ -25,7 +25,7 @@ public:
     FormFactorCuboctahedron(const std::vector<double> P);
     FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha);
 
-    FormFactorCuboctahedron* clone() const final
+    FormFactorCuboctahedron* clone() const override
     {
         return new FormFactorCuboctahedron(m_length, m_height, m_height_ratio, m_alpha);
     }
diff --git a/Sample/HardParticle/FormFactorCylinder.h b/Sample/HardParticle/FormFactorCylinder.h
index 2ce0d5de923676508874ca318a7a6ebf907f7d62..60940ce52ded72192bcd7b67b582d279619739d1 100644
--- a/Sample/HardParticle/FormFactorCylinder.h
+++ b/Sample/HardParticle/FormFactorCylinder.h
@@ -25,7 +25,10 @@ public:
     FormFactorCylinder(const std::vector<double> P);
     FormFactorCylinder(double radius, double height);
 
-    FormFactorCylinder* clone() const override { return new FormFactorCylinder(m_radius, m_height); }
+    FormFactorCylinder* clone() const override
+    {
+        return new FormFactorCylinder(m_radius, m_height);
+    }
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     double getHeight() const { return m_height; }
diff --git a/Sample/HardParticle/FormFactorEllipsoidalCylinder.h b/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
index cfc89d022201df32b5ff4257f6e9e2dbc5dde286..bb893a982150c891313a1b64af941f0bfbf306ac 100644
--- a/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
+++ b/Sample/HardParticle/FormFactorEllipsoidalCylinder.h
@@ -25,7 +25,7 @@ public:
     FormFactorEllipsoidalCylinder(const std::vector<double> P);
     FormFactorEllipsoidalCylinder(double radius_x, double radius_y, double height);
 
-    FormFactorEllipsoidalCylinder* clone() const final
+    FormFactorEllipsoidalCylinder* clone() const override
     {
         return new FormFactorEllipsoidalCylinder(m_radius_x, m_radius_y, m_height);
     }
diff --git a/Sample/HardParticle/FormFactorFullSphere.h b/Sample/HardParticle/FormFactorFullSphere.h
index 068b2faaa2c30d678c8943d449f9ed4c268cb72e..8186e89b31334494301098c931c5e687f4b201d1 100644
--- a/Sample/HardParticle/FormFactorFullSphere.h
+++ b/Sample/HardParticle/FormFactorFullSphere.h
@@ -25,7 +25,7 @@ public:
     FormFactorFullSphere(const std::vector<double> P, bool position_at_center = false);
     FormFactorFullSphere(double radius, bool position_at_center = false);
 
-    FormFactorFullSphere* clone() const final
+    FormFactorFullSphere* clone() const override
     {
         return new FormFactorFullSphere(m_radius, m_position_at_center);
     }
diff --git a/Sample/HardParticle/FormFactorFullSpheroid.h b/Sample/HardParticle/FormFactorFullSpheroid.h
index 93d0f140da08e33d1e300d5eb2d07e8afd5a8548..0491f23c3cc41242d2d84993c8d9cfce355920b2 100644
--- a/Sample/HardParticle/FormFactorFullSpheroid.h
+++ b/Sample/HardParticle/FormFactorFullSpheroid.h
@@ -25,7 +25,7 @@ public:
     FormFactorFullSpheroid(const std::vector<double> P);
     FormFactorFullSpheroid(double radius, double height);
 
-    FormFactorFullSpheroid* clone() const final
+    FormFactorFullSpheroid* clone() const override
     {
         return new FormFactorFullSpheroid(m_radius, m_height);
     }
diff --git a/Sample/HardParticle/FormFactorHemiEllipsoid.h b/Sample/HardParticle/FormFactorHemiEllipsoid.h
index a37ce1a7be13118daa0e8b06f6c0b08e2fbbb738..6a44010021e75f6b333b6b47560c67b9132c172d 100644
--- a/Sample/HardParticle/FormFactorHemiEllipsoid.h
+++ b/Sample/HardParticle/FormFactorHemiEllipsoid.h
@@ -27,7 +27,7 @@ public:
     FormFactorHemiEllipsoid(double radius_x, double radius_y, double height);
     virtual ~FormFactorHemiEllipsoid() {}
 
-    FormFactorHemiEllipsoid* clone() const final
+    FormFactorHemiEllipsoid* clone() const override
     {
         return new FormFactorHemiEllipsoid(m_radius_x, m_radius_y, m_height);
     }
diff --git a/Sample/HardParticle/FormFactorHollowSphere.h b/Sample/HardParticle/FormFactorHollowSphere.h
index d04fee540c7c1216781d45ef717bff99058d3e32..7c410eb545628d9415b28cd12e6d96d17927482f 100644
--- a/Sample/HardParticle/FormFactorHollowSphere.h
+++ b/Sample/HardParticle/FormFactorHollowSphere.h
@@ -25,7 +25,7 @@ public:
     FormFactorHollowSphere(const std::vector<double> P);
     FormFactorHollowSphere(double mean, double full_width);
 
-    FormFactorHollowSphere* clone() const final
+    FormFactorHollowSphere* clone() const override
     {
         return new FormFactorHollowSphere(m_mean, m_full_width);
     }
diff --git a/Sample/HardParticle/FormFactorLongBoxGauss.h b/Sample/HardParticle/FormFactorLongBoxGauss.h
index c303c41962ba6ae33238e42cb5088eed94bce391..cc6f69ebbed1d6a11694accb3b31bc44ae7dd664 100644
--- a/Sample/HardParticle/FormFactorLongBoxGauss.h
+++ b/Sample/HardParticle/FormFactorLongBoxGauss.h
@@ -25,7 +25,7 @@ public:
     FormFactorLongBoxGauss(const std::vector<double> P);
     FormFactorLongBoxGauss(double length, double width, double height);
 
-    FormFactorLongBoxGauss* clone() const final
+    FormFactorLongBoxGauss* clone() const override
     {
         return new FormFactorLongBoxGauss(m_length, m_width, m_height);
     }
diff --git a/Sample/HardParticle/FormFactorLongBoxLorentz.h b/Sample/HardParticle/FormFactorLongBoxLorentz.h
index ca83b73220a200fda2771ab5718f353a843dde11..a4189928349c8876976fb75b9d9427ad80f895dc 100644
--- a/Sample/HardParticle/FormFactorLongBoxLorentz.h
+++ b/Sample/HardParticle/FormFactorLongBoxLorentz.h
@@ -25,7 +25,7 @@ public:
     FormFactorLongBoxLorentz(const std::vector<double> P);
     FormFactorLongBoxLorentz(double length, double width, double height);
 
-    FormFactorLongBoxLorentz* clone() const final
+    FormFactorLongBoxLorentz* clone() const override
     {
         return new FormFactorLongBoxLorentz(m_length, m_width, m_height);
     }
diff --git a/Sample/HardParticle/FormFactorPyramid.h b/Sample/HardParticle/FormFactorPyramid.h
index 6962d633cc0551aa4c70c467827d3a6689b51d9b..24a4be2b18657a7ab86b3ea8a54889d47f2ee886 100644
--- a/Sample/HardParticle/FormFactorPyramid.h
+++ b/Sample/HardParticle/FormFactorPyramid.h
@@ -25,7 +25,7 @@ public:
     FormFactorPyramid(const std::vector<double> P);
     FormFactorPyramid(double base_edge, double height, double alpha);
 
-    FormFactorPyramid* clone() const final
+    FormFactorPyramid* clone() const override
     {
         return new FormFactorPyramid(m_base_edge, m_height, m_alpha);
     }
diff --git a/Sample/HardParticle/FormFactorTetrahedron.h b/Sample/HardParticle/FormFactorTetrahedron.h
index 967b13e60bb94a27af17f282544c74cb2e065372..d74d0dcd2d55edee473fc02fce4dd9cfdbd9942b 100644
--- a/Sample/HardParticle/FormFactorTetrahedron.h
+++ b/Sample/HardParticle/FormFactorTetrahedron.h
@@ -25,7 +25,7 @@ public:
     FormFactorTetrahedron(const std::vector<double> P);
     FormFactorTetrahedron(double base_edge, double height, double alpha);
 
-    FormFactorTetrahedron* clone() const final
+    FormFactorTetrahedron* clone() const override
     {
         return new FormFactorTetrahedron(m_base_edge, m_height, m_alpha);
     }
diff --git a/Sample/HardParticle/FormFactorTruncatedCube.h b/Sample/HardParticle/FormFactorTruncatedCube.h
index dc32159ba9801e55240d4e13daa5b0605a9c8b75..dcef16e6d23ef0814719fc31499d68ce99f4784b 100644
--- a/Sample/HardParticle/FormFactorTruncatedCube.h
+++ b/Sample/HardParticle/FormFactorTruncatedCube.h
@@ -25,7 +25,7 @@ public:
     FormFactorTruncatedCube(const std::vector<double> P);
     FormFactorTruncatedCube(double length, double removed_length);
 
-    FormFactorTruncatedCube* clone() const final
+    FormFactorTruncatedCube* clone() const override
     {
         return new FormFactorTruncatedCube(m_length, m_removed_length);
     }
diff --git a/Sample/HardParticle/FormFactorTruncatedSphere.h b/Sample/HardParticle/FormFactorTruncatedSphere.h
index cd5570e75b63b3f18af720074f87df635369c481..92c6b5b5b6f36621cd70308874964ee5db9a8219 100644
--- a/Sample/HardParticle/FormFactorTruncatedSphere.h
+++ b/Sample/HardParticle/FormFactorTruncatedSphere.h
@@ -25,7 +25,7 @@ public:
     FormFactorTruncatedSphere(const std::vector<double> P);
     FormFactorTruncatedSphere(double radius, double height, double dh);
 
-    FormFactorTruncatedSphere* clone() const final
+    FormFactorTruncatedSphere* clone() const override
     {
         return new FormFactorTruncatedSphere(m_radius, m_height, m_dh);
     }
diff --git a/Sample/HardParticle/FormFactorTruncatedSpheroid.h b/Sample/HardParticle/FormFactorTruncatedSpheroid.h
index b31818a96068c118c978da27c898cbc418122d33..e6d339561e9280d82ad05be489727c5da5b33c53 100644
--- a/Sample/HardParticle/FormFactorTruncatedSpheroid.h
+++ b/Sample/HardParticle/FormFactorTruncatedSpheroid.h
@@ -26,7 +26,7 @@ public:
     FormFactorTruncatedSpheroid(const std::vector<double> P);
     FormFactorTruncatedSpheroid(double radius, double height, double height_flattening, double dh);
 
-    FormFactorTruncatedSpheroid* clone() const final
+    FormFactorTruncatedSpheroid* clone() const override
     {
         return new FormFactorTruncatedSpheroid(m_radius, m_height, m_height_flattening, m_dh);
     }
diff --git a/Sample/Lattice/Lattice2D.h b/Sample/Lattice/Lattice2D.h
index 7ef30a3d310804ebe29e3c11e83c4e5219874e6c..6024c3206cb9dfb5997451da40e9a81e41759990 100644
--- a/Sample/Lattice/Lattice2D.h
+++ b/Sample/Lattice/Lattice2D.h
@@ -24,8 +24,7 @@ class Lattice2D : public ICloneable, public INode {
 public:
     Lattice2D(const NodeMeta& meta, const std::vector<double>& PValues);
     explicit Lattice2D(double xi);
-
-    virtual Lattice2D* clone() const = 0;
+    Lattice2D* clone() const override = 0;
 
     struct ReciprocalBases {
         double m_asx, m_asy; //!< x,y coordinates of a*
@@ -54,7 +53,7 @@ class BasicLattice2D : public Lattice2D {
 public:
     BasicLattice2D(double length1, double length2, double angle, double xi);
 
-    BasicLattice2D* clone() const;
+    BasicLattice2D* clone() const override;
 
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
@@ -74,14 +73,14 @@ class SquareLattice2D : public Lattice2D {
 public:
     SquareLattice2D(double length, double xi = 0.0);
 
-    SquareLattice2D* clone() const;
+    SquareLattice2D* clone() const override;
 
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     double length1() const override { return m_length; }
     double length2() const override { return m_length; }
-    double latticeAngle() const override ;
-    double unitCellArea() const override ;
+    double latticeAngle() const override;
+    double unitCellArea() const override;
 
 private:
     double m_length;
@@ -93,7 +92,7 @@ class HexagonalLattice2D : public Lattice2D {
 public:
     HexagonalLattice2D(double length, double xi);
 
-    HexagonalLattice2D* clone() const;
+    HexagonalLattice2D* clone() const override;
 
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
diff --git a/Sample/Scattering/FormFactorDecoratorPositionFactor.h b/Sample/Scattering/FormFactorDecoratorPositionFactor.h
index 268e73f0d8cb03b4a71e82b5f6a4fdd2dde10fcc..0f86f33ad5a73b5b0fe8411ebe4c2ad53a7c801e 100644
--- a/Sample/Scattering/FormFactorDecoratorPositionFactor.h
+++ b/Sample/Scattering/FormFactorDecoratorPositionFactor.h
@@ -29,7 +29,7 @@ class FormFactorDecoratorPositionFactor : public IFormFactorDecorator {
 public:
     FormFactorDecoratorPositionFactor(const IFormFactor& ff, const kvector_t& position);
 
-    FormFactorDecoratorPositionFactor* clone() const final
+    FormFactorDecoratorPositionFactor* clone() const override
     {
         return new FormFactorDecoratorPositionFactor(*m_ff, m_position);
     }
diff --git a/Sample/Slice/LayerInterface.h b/Sample/Slice/LayerInterface.h
index e0474b420bb9230224007be5c49af61e937b29a0..c4d5962ba81ba1afc139a457e9aee4b54c91a16c 100644
--- a/Sample/Slice/LayerInterface.h
+++ b/Sample/Slice/LayerInterface.h
@@ -32,9 +32,9 @@ class LayerInterface : public ISampleNode {
 public:
     virtual ~LayerInterface();
 
-    LayerInterface* clone() const;
+    LayerInterface* clone() const override;
 
-    virtual void accept(INodeVisitor* visitor) const { visitor->visit(this); }
+    void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     //! Creates smooth interface between two layers
     static LayerInterface* createSmoothInterface(const Layer* top_layer, const Layer* bottom_layer);
@@ -53,7 +53,7 @@ public:
 
     const Layer* bottomLayer() const;
 
-    std::vector<const INode*> getChildren() const;
+    std::vector<const INode*> getChildren() const override;
 
 private:
     void setLayersTopBottom(const Layer* top_layer, const Layer* bottom_layer);
diff --git a/Sample/SoftParticle/FormFactorGauss.h b/Sample/SoftParticle/FormFactorGauss.h
index b05215c23fb3d6eed8122135def33077d7c108ca..50cc313a536311aedf2739b36ab15b5d477945f4 100644
--- a/Sample/SoftParticle/FormFactorGauss.h
+++ b/Sample/SoftParticle/FormFactorGauss.h
@@ -25,7 +25,10 @@ public:
     FormFactorGaussSphere(const std::vector<double> P);
     FormFactorGaussSphere(double mean_radius);
 
-    FormFactorGaussSphere* clone() const override { return new FormFactorGaussSphere(m_mean_radius); }
+    FormFactorGaussSphere* clone() const override
+    {
+        return new FormFactorGaussSphere(m_mean_radius);
+    }
     void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
     double getMeanRadius() const { return m_mean_radius; }
@@ -35,7 +38,7 @@ public:
     complex_t evaluate_for_q(cvector_t q) const override;
 
 protected:
-    void onChange() final{};
+    void onChange() override{};
 
 private:
     const double& m_mean_radius;
diff --git a/Sample/SoftParticle/FormFactorSphereGaussianRadius.h b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
index d7430d31b98405c4f7ec632a4f2cb81765161dbc..d9aa09bb283ab87b646ace92f9a910bb88b33374 100644
--- a/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
+++ b/Sample/SoftParticle/FormFactorSphereGaussianRadius.h
@@ -26,7 +26,7 @@ public:
     FormFactorSphereGaussianRadius(const std::vector<double> P);
     FormFactorSphereGaussianRadius(double mean, double sigma);
 
-    FormFactorSphereGaussianRadius* clone() const final
+    FormFactorSphereGaussianRadius* clone() const override
     {
         return new FormFactorSphereGaussianRadius(m_mean, m_sigma);
     }
diff --git a/Tests/UnitTests/Core/Sample/INodeTest.cpp b/Tests/UnitTests/Core/Sample/INodeTest.cpp
index 75444167977f33f1737bf5d16adfd336ac044ae2..31d65d8355bf224e3755dfdb981b667c7b91cd43 100644
--- a/Tests/UnitTests/Core/Sample/INodeTest.cpp
+++ b/Tests/UnitTests/Core/Sample/INodeTest.cpp
@@ -35,7 +35,7 @@ public:
             registerChild(node);
         }
 
-        virtual std::vector<const INode*> getChildren() const
+        std::vector<const INode*> getChildren() const override
         {
             return {m_nodes.begin(), m_nodes.end()};
         }
diff --git a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
index d5099d6968a97d6b1b2c5657bc04da9dabb40c31..0eff5c03e171f1e5e81fa6b17ca50bc8d78272c3 100644
--- a/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
+++ b/Tests/UnitTests/Core/Sample/Lattice2DTest.cpp
@@ -83,7 +83,7 @@ TEST_F(Lattice2DTest, onChange)
     public:
         Parent() : m_changed(false) {}
         void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
-        virtual void onChange() { m_changed = true; }
+        void onChange() override { m_changed = true; }
         bool m_changed;
     };
 
diff --git a/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp b/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp
index 5bb76eaeb77ce04da8297de5fe7127846771b53f..7c4f6035684f6eb01ea0c8ae8e9972fa9d9b9ed1 100644
--- a/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp
+++ b/Tests/UnitTests/Core/Sample/SampleProviderTest.cpp
@@ -33,7 +33,7 @@ public:
 
         void accept(INodeVisitor* visitor) const override { visitor->visit(this); }
 
-        std::vector<const INode*> getChildren() const { return m_provider.getChildren(); }
+        std::vector<const INode*> getChildren() const override { return m_provider.getChildren(); }
 
         void setContainer(const SampleProvider& provider) { m_provider = provider; }
         SampleProvider m_provider;
diff --git a/auto/Wrap/doxygenDevice.i b/auto/Wrap/doxygenDevice.i
index ff54d9ec6137f332f8f1cf7a0ad7c0f3acc958f1..32a13e22ea2edb6ba29ca34145322c8281b69c40 100644
--- a/auto/Wrap/doxygenDevice.i
+++ b/auto/Wrap/doxygenDevice.i
@@ -128,12 +128,12 @@ Constructor taking a 2 dimensional resolution function as argument.
 %feature("docstring")  ConvolutionDetectorResolution::~ConvolutionDetectorResolution "ConvolutionDetectorResolution::~ConvolutionDetectorResolution()
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::applyDetectorResolution "void ConvolutionDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const
-
-Convolve given intensities with the encapsulated resolution. 
+%feature("docstring")  ConvolutionDetectorResolution::clone "ConvolutionDetectorResolution * ConvolutionDetectorResolution::clone() const override
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::clone "ConvolutionDetectorResolution * ConvolutionDetectorResolution::clone() const
+%feature("docstring")  ConvolutionDetectorResolution::applyDetectorResolution "void ConvolutionDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const override
+
+Convolve given intensities with the encapsulated resolution. 
 ";
 
 %feature("docstring")  ConvolutionDetectorResolution::accept "void ConvolutionDetectorResolution::accept(INodeVisitor *visitor) const override
@@ -142,7 +142,7 @@ Convolve given intensities with the encapsulated resolution.
 %feature("docstring")  ConvolutionDetectorResolution::getResolutionFunction2D "const IResolutionFunction2D * ConvolutionDetectorResolution::getResolutionFunction2D() const
 ";
 
-%feature("docstring")  ConvolutionDetectorResolution::getChildren "std::vector< const INode * > ConvolutionDetectorResolution::getChildren() const
+%feature("docstring")  ConvolutionDetectorResolution::getChildren "std::vector< const INode * > ConvolutionDetectorResolution::getChildren() const override
 ";
 
 
@@ -988,6 +988,9 @@ C++ includes: IDetectorResolution.h
 %feature("docstring")  IDetectorResolution::~IDetectorResolution "virtual IDetectorResolution::~IDetectorResolution()
 ";
 
+%feature("docstring")  IDetectorResolution::clone "IDetectorResolution* IDetectorResolution::clone() const override=0
+";
+
 %feature("docstring")  IDetectorResolution::applyDetectorResolution "virtual void IDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const =0
 
 Apply the resolution function to the intensity data. 
@@ -998,9 +1001,6 @@ Apply the resolution function to the intensity data.
 Applies the detector resolution to the matrix-valued intensity data. 
 ";
 
-%feature("docstring")  IDetectorResolution::clone "virtual IDetectorResolution* IDetectorResolution::clone() const =0
-";
-
 
 // File: classIFootprintFactor.xml
 %feature("docstring") IFootprintFactor "
@@ -1362,7 +1362,7 @@ Sets the detector (axes can be overwritten later)
 init detector with beam settings 
 ";
 
-%feature("docstring")  Instrument::getChildren "std::vector< const INode * > Instrument::getChildren() const
+%feature("docstring")  Instrument::getChildren "std::vector< const INode * > Instrument::getChildren() const override
 ";
 
 
@@ -2336,13 +2336,13 @@ C++ includes: ResolutionFunction2DGaussian.h
 %feature("docstring")  ResolutionFunction2DGaussian::ResolutionFunction2DGaussian "ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(double sigma_x, double sigma_y)
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::evaluateCDF "double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
+%feature("docstring")  ResolutionFunction2DGaussian::clone "ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const override
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::clone "ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const
+%feature("docstring")  ResolutionFunction2DGaussian::accept "void ResolutionFunction2DGaussian::accept(INodeVisitor *visitor) const override
 ";
 
-%feature("docstring")  ResolutionFunction2DGaussian::accept "void ResolutionFunction2DGaussian::accept(INodeVisitor *visitor) const override
+%feature("docstring")  ResolutionFunction2DGaussian::evaluateCDF "double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
 ";
 
 %feature("docstring")  ResolutionFunction2DGaussian::getSigmaX "double ResolutionFunction2DGaussian::getSigmaX() const
diff --git a/auto/Wrap/doxygenParam.i b/auto/Wrap/doxygenParam.i
index f5afff15150eb5ed4fc7e640d6a3baabccb6a4af..cae7dff55ab1bee5cf770ad325999b134d903075 100644
--- a/auto/Wrap/doxygenParam.i
+++ b/auto/Wrap/doxygenParam.i
@@ -119,7 +119,7 @@ C++ includes: Distributions.h
 %feature("docstring")  DistributionGaussian::DistributionGaussian "DistributionGaussian::DistributionGaussian()
 ";
 
-%feature("docstring")  DistributionGaussian::clone "DistributionGaussian* DistributionGaussian::clone() const final
+%feature("docstring")  DistributionGaussian::clone "DistributionGaussian* DistributionGaussian::clone() const override
 ";
 
 %feature("docstring")  DistributionGaussian::probabilityDensity "double DistributionGaussian::probabilityDensity(double x) const override
@@ -209,7 +209,7 @@ C++ includes: Distributions.h
 %feature("docstring")  DistributionLogNormal::DistributionLogNormal "DistributionLogNormal::DistributionLogNormal()=delete
 ";
 
-%feature("docstring")  DistributionLogNormal::clone "DistributionLogNormal* DistributionLogNormal::clone() const final
+%feature("docstring")  DistributionLogNormal::clone "DistributionLogNormal* DistributionLogNormal::clone() const override
 ";
 
 %feature("docstring")  DistributionLogNormal::probabilityDensity "double DistributionLogNormal::probabilityDensity(double x) const override
@@ -315,7 +315,7 @@ C++ includes: Distributions.h
 %feature("docstring")  DistributionTrapezoid::DistributionTrapezoid "DistributionTrapezoid::DistributionTrapezoid()
 ";
 
-%feature("docstring")  DistributionTrapezoid::clone "DistributionTrapezoid* DistributionTrapezoid::clone() const final
+%feature("docstring")  DistributionTrapezoid::clone "DistributionTrapezoid* DistributionTrapezoid::clone() const override
 ";
 
 %feature("docstring")  DistributionTrapezoid::probabilityDensity "double DistributionTrapezoid::probabilityDensity(double x) const override
@@ -376,7 +376,7 @@ C++ includes: Distributions.h
 %feature("docstring")  IDistribution1D::IDistribution1D "IDistribution1D::IDistribution1D(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-%feature("docstring")  IDistribution1D::clone "virtual IDistribution1D* IDistribution1D::clone() const =0
+%feature("docstring")  IDistribution1D::clone "IDistribution1D* IDistribution1D::clone() const override=0
 ";
 
 %feature("docstring")  IDistribution1D::probabilityDensity "virtual double IDistribution1D::probabilityDensity(double x) const =0
diff --git a/auto/Wrap/doxygenSample.i b/auto/Wrap/doxygenSample.i
index 04633f6fd54b4a4f21a34baa770569944b646e45..5d7dd8d4edd8ff801f8cc8c529166b7f74513248 100644
--- a/auto/Wrap/doxygenSample.i
+++ b/auto/Wrap/doxygenSample.i
@@ -150,7 +150,7 @@ C++ includes: Lattice2D.h
 %feature("docstring")  BasicLattice2D::BasicLattice2D "BasicLattice2D::BasicLattice2D(double length1, double length2, double angle, double xi)
 ";
 
-%feature("docstring")  BasicLattice2D::clone "BasicLattice2D * BasicLattice2D::clone() const
+%feature("docstring")  BasicLattice2D::clone "BasicLattice2D * BasicLattice2D::clone() const override
 ";
 
 %feature("docstring")  BasicLattice2D::accept "void BasicLattice2D::accept(INodeVisitor *visitor) const override
@@ -743,7 +743,7 @@ C++ includes: FormFactorAnisoPyramid.h
 %feature("docstring")  FormFactorAnisoPyramid::FormFactorAnisoPyramid "FormFactorAnisoPyramid::FormFactorAnisoPyramid(double length, double width, double height, double alpha)
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final
+%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -868,7 +868,7 @@ C++ includes: FormFactorCantellatedCube.h
 %feature("docstring")  FormFactorCantellatedCube::FormFactorCantellatedCube "FormFactorCantellatedCube::FormFactorCantellatedCube(double length, double removed_length)
 ";
 
-%feature("docstring")  FormFactorCantellatedCube::clone "FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const final
+%feature("docstring")  FormFactorCantellatedCube::clone "FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1014,7 +1014,7 @@ C++ includes: FormFactorCone6.h
 %feature("docstring")  FormFactorCone6::FormFactorCone6 "FormFactorCone6::FormFactorCone6(double base_edge, double height, double alpha)
 ";
 
-%feature("docstring")  FormFactorCone6::clone "FormFactorCone6* FormFactorCone6::clone() const final
+%feature("docstring")  FormFactorCone6::clone "FormFactorCone6* FormFactorCone6::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1228,7 +1228,7 @@ C++ includes: FormFactorCuboctahedron.h
 %feature("docstring")  FormFactorCuboctahedron::FormFactorCuboctahedron "FormFactorCuboctahedron::FormFactorCuboctahedron(double length, double height, double height_ratio, double alpha)
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final
+%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1342,7 +1342,7 @@ C++ includes: FormFactorDecoratorPositionFactor.h
 %feature("docstring")  FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor "FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(const IFormFactor &ff, const kvector_t &position)
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const final
+%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1499,7 +1499,7 @@ C++ includes: FormFactorEllipsoidalCylinder.h
 %feature("docstring")  FormFactorEllipsoidalCylinder::FormFactorEllipsoidalCylinder "FormFactorEllipsoidalCylinder::FormFactorEllipsoidalCylinder(double radius_x, double radius_y, double height)
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const final
+%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1541,7 +1541,7 @@ C++ includes: FormFactorFullSphere.h
 %feature("docstring")  FormFactorFullSphere::FormFactorFullSphere "FormFactorFullSphere::FormFactorFullSphere(double radius, bool position_at_center=false)
 ";
 
-%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const final
+%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1587,7 +1587,7 @@ C++ includes: FormFactorFullSpheroid.h
 %feature("docstring")  FormFactorFullSpheroid::FormFactorFullSpheroid "FormFactorFullSpheroid::FormFactorFullSpheroid(double radius, double height)
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const final
+%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1665,7 +1665,7 @@ C++ includes: FormFactorHemiEllipsoid.h
 %feature("docstring")  FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid "virtual FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid()
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const final
+%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1707,7 +1707,7 @@ C++ includes: FormFactorHollowSphere.h
 %feature("docstring")  FormFactorHollowSphere::FormFactorHollowSphere "FormFactorHollowSphere::FormFactorHollowSphere(double mean, double full_width)
 ";
 
-%feature("docstring")  FormFactorHollowSphere::clone "FormFactorHollowSphere* FormFactorHollowSphere::clone() const final
+%feature("docstring")  FormFactorHollowSphere::clone "FormFactorHollowSphere* FormFactorHollowSphere::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1766,7 +1766,7 @@ C++ includes: FormFactorLongBoxGauss.h
 %feature("docstring")  FormFactorLongBoxGauss::FormFactorLongBoxGauss "FormFactorLongBoxGauss::FormFactorLongBoxGauss(double length, double width, double height)
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const final
+%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1808,7 +1808,7 @@ C++ includes: FormFactorLongBoxLorentz.h
 %feature("docstring")  FormFactorLongBoxLorentz::FormFactorLongBoxLorentz "FormFactorLongBoxLorentz::FormFactorLongBoxLorentz(double length, double width, double height)
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const final
+%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -1902,7 +1902,7 @@ C++ includes: FormFactorPyramid.h
 %feature("docstring")  FormFactorPyramid::FormFactorPyramid "FormFactorPyramid::FormFactorPyramid(double base_edge, double height, double alpha)
 ";
 
-%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const final
+%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2003,7 +2003,7 @@ C++ includes: FormFactorSphereGaussianRadius.h
 %feature("docstring")  FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final
+%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2069,7 +2069,7 @@ C++ includes: FormFactorTetrahedron.h
 %feature("docstring")  FormFactorTetrahedron::FormFactorTetrahedron "FormFactorTetrahedron::FormFactorTetrahedron(double base_edge, double height, double alpha)
 ";
 
-%feature("docstring")  FormFactorTetrahedron::clone "FormFactorTetrahedron* FormFactorTetrahedron::clone() const final
+%feature("docstring")  FormFactorTetrahedron::clone "FormFactorTetrahedron* FormFactorTetrahedron::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2101,7 +2101,7 @@ C++ includes: FormFactorTruncatedCube.h
 %feature("docstring")  FormFactorTruncatedCube::FormFactorTruncatedCube "FormFactorTruncatedCube::FormFactorTruncatedCube(double length, double removed_length)
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final
+%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2130,7 +2130,7 @@ C++ includes: FormFactorTruncatedSphere.h
 %feature("docstring")  FormFactorTruncatedSphere::FormFactorTruncatedSphere "FormFactorTruncatedSphere::FormFactorTruncatedSphere(double radius, double height, double dh)
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const final
+%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2172,7 +2172,7 @@ C++ includes: FormFactorTruncatedSpheroid.h
 %feature("docstring")  FormFactorTruncatedSpheroid::FormFactorTruncatedSpheroid "FormFactorTruncatedSpheroid::FormFactorTruncatedSpheroid(double radius, double height, double height_flattening, double dh)
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const final
+%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -2275,7 +2275,7 @@ C++ includes: FTDecay1D.h
 %feature("docstring")  FTDecayFunction1DCauchy::FTDecayFunction1DCauchy "FTDecayFunction1DCauchy::FTDecayFunction1DCauchy(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DCauchy::clone "FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
+%feature("docstring")  FTDecayFunction1DCauchy::clone "FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction1DCauchy::accept "void FTDecayFunction1DCauchy::accept(INodeVisitor *visitor) const override
@@ -2299,7 +2299,7 @@ C++ includes: FTDecay1D.h
 %feature("docstring")  FTDecayFunction1DGauss::FTDecayFunction1DGauss "FTDecayFunction1DGauss::FTDecayFunction1DGauss(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DGauss::clone "FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
+%feature("docstring")  FTDecayFunction1DGauss::clone "FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction1DGauss::accept "void FTDecayFunction1DGauss::accept(INodeVisitor *visitor) const override
@@ -2323,7 +2323,7 @@ C++ includes: FTDecay1D.h
 %feature("docstring")  FTDecayFunction1DTriangle::FTDecayFunction1DTriangle "FTDecayFunction1DTriangle::FTDecayFunction1DTriangle(double decay_length)
 ";
 
-%feature("docstring")  FTDecayFunction1DTriangle::clone "FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
+%feature("docstring")  FTDecayFunction1DTriangle::clone "FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction1DTriangle::accept "void FTDecayFunction1DTriangle::accept(INodeVisitor *visitor) const override
@@ -2347,7 +2347,7 @@ C++ includes: FTDecay1D.h
 %feature("docstring")  FTDecayFunction1DVoigt::FTDecayFunction1DVoigt "FTDecayFunction1DVoigt::FTDecayFunction1DVoigt(double decay_length, double eta)
 ";
 
-%feature("docstring")  FTDecayFunction1DVoigt::clone "FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
+%feature("docstring")  FTDecayFunction1DVoigt::clone "FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction1DVoigt::accept "void FTDecayFunction1DVoigt::accept(INodeVisitor *visitor) const override
@@ -2374,7 +2374,7 @@ C++ includes: FTDecay2D.h
 %feature("docstring")  FTDecayFunction2DCauchy::FTDecayFunction2DCauchy "FTDecayFunction2DCauchy::FTDecayFunction2DCauchy(double decay_length_x, double decay_length_y, double gamma)
 ";
 
-%feature("docstring")  FTDecayFunction2DCauchy::clone "FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
+%feature("docstring")  FTDecayFunction2DCauchy::clone "FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction2DCauchy::accept "void FTDecayFunction2DCauchy::accept(INodeVisitor *visitor) const override
@@ -2400,7 +2400,7 @@ C++ includes: FTDecay2D.h
 %feature("docstring")  FTDecayFunction2DGauss::FTDecayFunction2DGauss "FTDecayFunction2DGauss::FTDecayFunction2DGauss(double decay_length_x, double decay_length_y, double gamma)
 ";
 
-%feature("docstring")  FTDecayFunction2DGauss::clone "FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
+%feature("docstring")  FTDecayFunction2DGauss::clone "FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction2DGauss::accept "void FTDecayFunction2DGauss::accept(INodeVisitor *visitor) const override
@@ -2426,7 +2426,7 @@ C++ includes: FTDecay2D.h
 %feature("docstring")  FTDecayFunction2DVoigt::FTDecayFunction2DVoigt "FTDecayFunction2DVoigt::FTDecayFunction2DVoigt(double decay_length_x, double decay_length_y, double gamma, double eta)
 ";
 
-%feature("docstring")  FTDecayFunction2DVoigt::clone "FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
+%feature("docstring")  FTDecayFunction2DVoigt::clone "FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const override
 ";
 
 %feature("docstring")  FTDecayFunction2DVoigt::accept "void FTDecayFunction2DVoigt::accept(INodeVisitor *visitor) const override
@@ -2870,7 +2870,7 @@ C++ includes: Lattice2D.h
 %feature("docstring")  HexagonalLattice2D::HexagonalLattice2D "HexagonalLattice2D::HexagonalLattice2D(double length, double xi)
 ";
 
-%feature("docstring")  HexagonalLattice2D::clone "HexagonalLattice2D * HexagonalLattice2D::clone() const
+%feature("docstring")  HexagonalLattice2D::clone "HexagonalLattice2D * HexagonalLattice2D::clone() const override
 ";
 
 %feature("docstring")  HexagonalLattice2D::accept "void HexagonalLattice2D::accept(INodeVisitor *visitor) const override
@@ -3411,7 +3411,7 @@ C++ includes: FTDecay1D.h
 %feature("docstring")  IFTDecayFunction1D::IFTDecayFunction1D "IFTDecayFunction1D::IFTDecayFunction1D(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-%feature("docstring")  IFTDecayFunction1D::clone "virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0
+%feature("docstring")  IFTDecayFunction1D::clone "IFTDecayFunction1D* IFTDecayFunction1D::clone() const override=0
 ";
 
 %feature("docstring")  IFTDecayFunction1D::evaluate "virtual double IFTDecayFunction1D::evaluate(double q) const =0
@@ -3432,7 +3432,7 @@ C++ includes: FTDecay2D.h
 %feature("docstring")  IFTDecayFunction2D::IFTDecayFunction2D "IFTDecayFunction2D::IFTDecayFunction2D(const NodeMeta &meta, const std::vector< double > &PValues)
 ";
 
-%feature("docstring")  IFTDecayFunction2D::clone "virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0
+%feature("docstring")  IFTDecayFunction2D::clone "IFTDecayFunction2D* IFTDecayFunction2D::clone() const override=0
 ";
 
 %feature("docstring")  IFTDecayFunction2D::decayLengthX "double IFTDecayFunction2D::decayLengthX() const
@@ -3545,7 +3545,7 @@ C++ includes: IInterferenceFunction.h
 %feature("docstring")  IInterferenceFunction::IInterferenceFunction "IInterferenceFunction::IInterferenceFunction(double position_var)
 ";
 
-%feature("docstring")  IInterferenceFunction::clone "virtual IInterferenceFunction* IInterferenceFunction::clone() const =0
+%feature("docstring")  IInterferenceFunction::clone "IInterferenceFunction* IInterferenceFunction::clone() const override=0
 
 Returns a clone of this  ISampleNode object. 
 ";
@@ -4730,7 +4730,7 @@ C++ includes: Lattice2D.h
 %feature("docstring")  Lattice2D::Lattice2D "Lattice2D::Lattice2D(double xi)
 ";
 
-%feature("docstring")  Lattice2D::clone "virtual Lattice2D* Lattice2D::clone() const =0
+%feature("docstring")  Lattice2D::clone "Lattice2D* Lattice2D::clone() const override=0
 ";
 
 %feature("docstring")  Lattice2D::length1 "virtual double Lattice2D::length1() const =0
@@ -4939,12 +4939,12 @@ C++ includes: LayerInterface.h
 %feature("docstring")  LayerInterface::~LayerInterface "LayerInterface::~LayerInterface()
 ";
 
-%feature("docstring")  LayerInterface::clone "LayerInterface * LayerInterface::clone() const
+%feature("docstring")  LayerInterface::clone "LayerInterface * LayerInterface::clone() const override
 
 Returns a clone of this  ISampleNode object. 
 ";
 
-%feature("docstring")  LayerInterface::accept "virtual void LayerInterface::accept(INodeVisitor *visitor) const
+%feature("docstring")  LayerInterface::accept "void LayerInterface::accept(INodeVisitor *visitor) const override
 ";
 
 %feature("docstring")  LayerInterface::setRoughness "void LayerInterface::setRoughness(const LayerRoughness &roughness)
@@ -4963,7 +4963,7 @@ Returns roughness of the interface.
 %feature("docstring")  LayerInterface::bottomLayer "const Layer * LayerInterface::bottomLayer() const
 ";
 
-%feature("docstring")  LayerInterface::getChildren "std::vector< const INode * > LayerInterface::getChildren() const
+%feature("docstring")  LayerInterface::getChildren "std::vector< const INode * > LayerInterface::getChildren() const override
 ";
 
 
@@ -7277,7 +7277,7 @@ C++ includes: Lattice2D.h
 %feature("docstring")  SquareLattice2D::SquareLattice2D "SquareLattice2D::SquareLattice2D(double length, double xi=0.0)
 ";
 
-%feature("docstring")  SquareLattice2D::clone "SquareLattice2D * SquareLattice2D::clone() const
+%feature("docstring")  SquareLattice2D::clone "SquareLattice2D * SquareLattice2D::clone() const override
 ";
 
 %feature("docstring")  SquareLattice2D::accept "void SquareLattice2D::accept(INodeVisitor *visitor) const override
diff --git a/auto/Wrap/libBornAgainDevice.py b/auto/Wrap/libBornAgainDevice.py
index 2005f6590884b18210fb2976776e99148cb5c85a..714de2af31e4d9edab45e6a510ddbffb0b278161 100644
--- a/auto/Wrap/libBornAgainDevice.py
+++ b/auto/Wrap/libBornAgainDevice.py
@@ -3511,6 +3511,14 @@ class IDetectorResolution(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     __repr__ = _swig_repr
     __swig_destroy__ = _libBornAgainDevice.delete_IDetectorResolution
 
+    def clone(self):
+        r"""
+        clone(IDetectorResolution self) -> IDetectorResolution
+        IDetectorResolution* IDetectorResolution::clone() const override=0
+
+        """
+        return _libBornAgainDevice.IDetectorResolution_clone(self)
+
     def applyDetectorResolution(self, p_intensity_map):
         r"""
         applyDetectorResolution(IDetectorResolution self, IntensityData p_intensity_map)
@@ -3521,14 +3529,6 @@ class IDetectorResolution(libBornAgainBase.ICloneable, libBornAgainParam.INode):
         """
         return _libBornAgainDevice.IDetectorResolution_applyDetectorResolution(self, p_intensity_map)
 
-    def clone(self):
-        r"""
-        clone(IDetectorResolution self) -> IDetectorResolution
-        virtual IDetectorResolution* IDetectorResolution::clone() const =0
-
-        """
-        return _libBornAgainDevice.IDetectorResolution_clone(self)
-
 # Register IDetectorResolution in _libBornAgainDevice:
 _libBornAgainDevice.IDetectorResolution_swigregister(IDetectorResolution)
 
@@ -3589,18 +3589,10 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         """
         _libBornAgainDevice.ResolutionFunction2DGaussian_swiginit(self, _libBornAgainDevice.new_ResolutionFunction2DGaussian(sigma_x, sigma_y))
 
-    def evaluateCDF(self, x, y):
-        r"""
-        evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double
-        double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
-
-        """
-        return _libBornAgainDevice.ResolutionFunction2DGaussian_evaluateCDF(self, x, y)
-
     def clone(self):
         r"""
         clone(ResolutionFunction2DGaussian self) -> ResolutionFunction2DGaussian
-        ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const
+        ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const override
 
         """
         return _libBornAgainDevice.ResolutionFunction2DGaussian_clone(self)
@@ -3613,6 +3605,14 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         """
         return _libBornAgainDevice.ResolutionFunction2DGaussian_accept(self, visitor)
 
+    def evaluateCDF(self, x, y):
+        r"""
+        evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double
+        double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const
+
+        """
+        return _libBornAgainDevice.ResolutionFunction2DGaussian_evaluateCDF(self, x, y)
+
     def getSigmaX(self):
         r"""
         getSigmaX(ResolutionFunction2DGaussian self) -> double
diff --git a/auto/Wrap/libBornAgainDevice_wrap.cpp b/auto/Wrap/libBornAgainDevice_wrap.cpp
index f875c08430b5bc5f0bae4c82d78510457223e790..4196be6600830b17ef9196af655a0a3da7af93bb 100644
--- a/auto/Wrap/libBornAgainDevice_wrap.cpp
+++ b/auto/Wrap/libBornAgainDevice_wrap.cpp
@@ -34267,52 +34267,52 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IDetectorResolution_applyDetectorResolution(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IDetectorResolution_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IDetectorResolution *arg1 = (IDetectorResolution *) 0 ;
-  OutputData< double > *arg2 = (OutputData< double > *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject *swig_obj[2] ;
+  PyObject *swig_obj[1] ;
+  IDetectorResolution *result = 0 ;
   
-  if (!SWIG_Python_UnpackTuple(args, "IDetectorResolution_applyDetectorResolution", 2, 2, swig_obj)) SWIG_fail;
+  if (!args) SWIG_fail;
+  swig_obj[0] = args;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IDetectorResolution, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetectorResolution_applyDetectorResolution" "', argument " "1"" of type '" "IDetectorResolution const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetectorResolution_clone" "', argument " "1"" of type '" "IDetectorResolution const *""'"); 
   }
   arg1 = reinterpret_cast< IDetectorResolution * >(argp1);
-  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_OutputDataT_double_t, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetectorResolution_applyDetectorResolution" "', argument " "2"" of type '" "OutputData< double > *""'"); 
-  }
-  arg2 = reinterpret_cast< OutputData< double > * >(argp2);
-  ((IDetectorResolution const *)arg1)->applyDetectorResolution(arg2);
-  resultobj = SWIG_Py_Void();
+  result = (IDetectorResolution *)((IDetectorResolution const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IDetectorResolution, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_IDetectorResolution_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IDetectorResolution_applyDetectorResolution(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IDetectorResolution *arg1 = (IDetectorResolution *) 0 ;
+  OutputData< double > *arg2 = (OutputData< double > *) 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  PyObject *swig_obj[1] ;
-  IDetectorResolution *result = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject *swig_obj[2] ;
   
-  if (!args) SWIG_fail;
-  swig_obj[0] = args;
+  if (!SWIG_Python_UnpackTuple(args, "IDetectorResolution_applyDetectorResolution", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_IDetectorResolution, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetectorResolution_clone" "', argument " "1"" of type '" "IDetectorResolution const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IDetectorResolution_applyDetectorResolution" "', argument " "1"" of type '" "IDetectorResolution const *""'"); 
   }
   arg1 = reinterpret_cast< IDetectorResolution * >(argp1);
-  result = (IDetectorResolution *)((IDetectorResolution const *)arg1)->clone();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_IDetectorResolution, 0 |  0 );
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2,SWIGTYPE_p_OutputDataT_double_t, 0 |  0 );
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IDetectorResolution_applyDetectorResolution" "', argument " "2"" of type '" "OutputData< double > *""'"); 
+  }
+  arg2 = reinterpret_cast< OutputData< double > * >(argp2);
+  ((IDetectorResolution const *)arg1)->applyDetectorResolution(arg2);
+  resultobj = SWIG_Py_Void();
   return resultobj;
 fail:
   return NULL;
@@ -34446,44 +34446,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ResolutionFunction2DGaussian_evaluateCDF(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  ResolutionFunction2DGaussian *arg1 = (ResolutionFunction2DGaussian *) 0 ;
-  double arg2 ;
-  double arg3 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  double val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
-  PyObject *swig_obj[3] ;
-  double result;
-  
-  if (!SWIG_Python_UnpackTuple(args, "ResolutionFunction2DGaussian_evaluateCDF", 3, 3, swig_obj)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ResolutionFunction2DGaussian, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "1"" of type '" "ResolutionFunction2DGaussian const *""'"); 
-  }
-  arg1 = reinterpret_cast< ResolutionFunction2DGaussian * >(argp1);
-  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "2"" of type '" "double""'");
-  } 
-  arg2 = static_cast< double >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  result = (double)((ResolutionFunction2DGaussian const *)arg1)->evaluateCDF(arg2,arg3);
-  resultobj = SWIG_From_double(static_cast< double >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_ResolutionFunction2DGaussian_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ResolutionFunction2DGaussian *arg1 = (ResolutionFunction2DGaussian *) 0 ;
@@ -34536,6 +34498,44 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_ResolutionFunction2DGaussian_evaluateCDF(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  ResolutionFunction2DGaussian *arg1 = (ResolutionFunction2DGaussian *) 0 ;
+  double arg2 ;
+  double arg3 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  double val3 ;
+  int ecode3 = 0 ;
+  PyObject *swig_obj[3] ;
+  double result;
+  
+  if (!SWIG_Python_UnpackTuple(args, "ResolutionFunction2DGaussian_evaluateCDF", 3, 3, swig_obj)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_ResolutionFunction2DGaussian, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "1"" of type '" "ResolutionFunction2DGaussian const *""'"); 
+  }
+  arg1 = reinterpret_cast< ResolutionFunction2DGaussian * >(argp1);
+  ecode2 = SWIG_AsVal_double(swig_obj[1], &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
+  if (!SWIG_IsOK(ecode3)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "ResolutionFunction2DGaussian_evaluateCDF" "', argument " "3"" of type '" "double""'");
+  } 
+  arg3 = static_cast< double >(val3);
+  result = (double)((ResolutionFunction2DGaussian const *)arg1)->evaluateCDF(arg2,arg3);
+  resultobj = SWIG_From_double(static_cast< double >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_ResolutionFunction2DGaussian_getSigmaX(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   ResolutionFunction2DGaussian *arg1 = (ResolutionFunction2DGaussian *) 0 ;
@@ -44923,6 +44923,11 @@ static PyMethodDef SwigMethods[] = {
 		"virtual IDetectorResolution::~IDetectorResolution()\n"
 		"\n"
 		""},
+	 { "IDetectorResolution_clone", _wrap_IDetectorResolution_clone, METH_O, "\n"
+		"IDetectorResolution_clone(IDetectorResolution self) -> IDetectorResolution\n"
+		"IDetectorResolution* IDetectorResolution::clone() const override=0\n"
+		"\n"
+		""},
 	 { "IDetectorResolution_applyDetectorResolution", _wrap_IDetectorResolution_applyDetectorResolution, METH_VARARGS, "\n"
 		"IDetectorResolution_applyDetectorResolution(IDetectorResolution self, IntensityData p_intensity_map)\n"
 		"virtual void IDetectorResolution::applyDetectorResolution(OutputData< double > *p_intensity_map) const =0\n"
@@ -44930,11 +44935,6 @@ static PyMethodDef SwigMethods[] = {
 		"Apply the resolution function to the intensity data. \n"
 		"\n"
 		""},
-	 { "IDetectorResolution_clone", _wrap_IDetectorResolution_clone, METH_O, "\n"
-		"IDetectorResolution_clone(IDetectorResolution self) -> IDetectorResolution\n"
-		"virtual IDetectorResolution* IDetectorResolution::clone() const =0\n"
-		"\n"
-		""},
 	 { "IDetectorResolution_swigregister", IDetectorResolution_swigregister, METH_O, NULL},
 	 { "delete_IResolutionFunction2D", _wrap_delete_IResolutionFunction2D, METH_O, "\n"
 		"delete_IResolutionFunction2D(IResolutionFunction2D self)\n"
@@ -44957,14 +44957,9 @@ static PyMethodDef SwigMethods[] = {
 		"ResolutionFunction2DGaussian::ResolutionFunction2DGaussian(double sigma_x, double sigma_y)\n"
 		"\n"
 		""},
-	 { "ResolutionFunction2DGaussian_evaluateCDF", _wrap_ResolutionFunction2DGaussian_evaluateCDF, METH_VARARGS, "\n"
-		"ResolutionFunction2DGaussian_evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double\n"
-		"double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const\n"
-		"\n"
-		""},
 	 { "ResolutionFunction2DGaussian_clone", _wrap_ResolutionFunction2DGaussian_clone, METH_O, "\n"
 		"ResolutionFunction2DGaussian_clone(ResolutionFunction2DGaussian self) -> ResolutionFunction2DGaussian\n"
-		"ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const\n"
+		"ResolutionFunction2DGaussian* ResolutionFunction2DGaussian::clone() const override\n"
 		"\n"
 		""},
 	 { "ResolutionFunction2DGaussian_accept", _wrap_ResolutionFunction2DGaussian_accept, METH_VARARGS, "\n"
@@ -44972,6 +44967,11 @@ static PyMethodDef SwigMethods[] = {
 		"void ResolutionFunction2DGaussian::accept(INodeVisitor *visitor) const override\n"
 		"\n"
 		""},
+	 { "ResolutionFunction2DGaussian_evaluateCDF", _wrap_ResolutionFunction2DGaussian_evaluateCDF, METH_VARARGS, "\n"
+		"ResolutionFunction2DGaussian_evaluateCDF(ResolutionFunction2DGaussian self, double x, double y) -> double\n"
+		"double ResolutionFunction2DGaussian::evaluateCDF(double x, double y) const\n"
+		"\n"
+		""},
 	 { "ResolutionFunction2DGaussian_getSigmaX", _wrap_ResolutionFunction2DGaussian_getSigmaX, METH_O, "\n"
 		"ResolutionFunction2DGaussian_getSigmaX(ResolutionFunction2DGaussian self) -> double\n"
 		"double ResolutionFunction2DGaussian::getSigmaX() const\n"
diff --git a/auto/Wrap/libBornAgainParam.py b/auto/Wrap/libBornAgainParam.py
index 9980f8cff19ed2361370127adffa3a85003012fb..cbc4f56b4b3cca05737d5e8f855522c6aa293ecf 100644
--- a/auto/Wrap/libBornAgainParam.py
+++ b/auto/Wrap/libBornAgainParam.py
@@ -3510,7 +3510,7 @@ class IDistribution1D(libBornAgainBase.ICloneable, INode):
     def clone(self):
         r"""
         clone(IDistribution1D self) -> IDistribution1D
-        virtual IDistribution1D* IDistribution1D::clone() const =0
+        IDistribution1D* IDistribution1D::clone() const override=0
 
         """
         return _libBornAgainParam.IDistribution1D_clone(self)
@@ -3819,7 +3819,7 @@ class DistributionGaussian(IDistribution1D):
     def clone(self):
         r"""
         clone(DistributionGaussian self) -> DistributionGaussian
-        DistributionGaussian* DistributionGaussian::clone() const final
+        DistributionGaussian* DistributionGaussian::clone() const override
 
         """
         return _libBornAgainParam.DistributionGaussian_clone(self)
@@ -3911,7 +3911,7 @@ class DistributionLogNormal(IDistribution1D):
     def clone(self):
         r"""
         clone(DistributionLogNormal self) -> DistributionLogNormal
-        DistributionLogNormal* DistributionLogNormal::clone() const final
+        DistributionLogNormal* DistributionLogNormal::clone() const override
 
         """
         return _libBornAgainParam.DistributionLogNormal_clone(self)
@@ -4115,7 +4115,7 @@ class DistributionTrapezoid(IDistribution1D):
     def clone(self):
         r"""
         clone(DistributionTrapezoid self) -> DistributionTrapezoid
-        DistributionTrapezoid* DistributionTrapezoid::clone() const final
+        DistributionTrapezoid* DistributionTrapezoid::clone() const override
 
         """
         return _libBornAgainParam.DistributionTrapezoid_clone(self)
diff --git a/auto/Wrap/libBornAgainParam_wrap.cpp b/auto/Wrap/libBornAgainParam_wrap.cpp
index d7f39b09f2ea92f42c16897f6623f8573ad9322f..125f5e7d28fdd622ce816099dce760057e67784a 100644
--- a/auto/Wrap/libBornAgainParam_wrap.cpp
+++ b/auto/Wrap/libBornAgainParam_wrap.cpp
@@ -51415,7 +51415,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "INodeVisitor_swiginit", INodeVisitor_swiginit, METH_VARARGS, NULL},
 	 { "IDistribution1D_clone", _wrap_IDistribution1D_clone, METH_O, "\n"
 		"IDistribution1D_clone(IDistribution1D self) -> IDistribution1D\n"
-		"virtual IDistribution1D* IDistribution1D::clone() const =0\n"
+		"IDistribution1D* IDistribution1D::clone() const override=0\n"
 		"\n"
 		""},
 	 { "IDistribution1D_probabilityDensity", _wrap_IDistribution1D_probabilityDensity, METH_VARARGS, "\n"
@@ -51600,7 +51600,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "DistributionGaussian_clone", _wrap_DistributionGaussian_clone, METH_O, "\n"
 		"DistributionGaussian_clone(DistributionGaussian self) -> DistributionGaussian\n"
-		"DistributionGaussian* DistributionGaussian::clone() const final\n"
+		"DistributionGaussian* DistributionGaussian::clone() const override\n"
 		"\n"
 		""},
 	 { "DistributionGaussian_probabilityDensity", _wrap_DistributionGaussian_probabilityDensity, METH_VARARGS, "\n"
@@ -51654,7 +51654,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "DistributionLogNormal_clone", _wrap_DistributionLogNormal_clone, METH_O, "\n"
 		"DistributionLogNormal_clone(DistributionLogNormal self) -> DistributionLogNormal\n"
-		"DistributionLogNormal* DistributionLogNormal::clone() const final\n"
+		"DistributionLogNormal* DistributionLogNormal::clone() const override\n"
 		"\n"
 		""},
 	 { "DistributionLogNormal_probabilityDensity", _wrap_DistributionLogNormal_probabilityDensity, METH_VARARGS, "\n"
@@ -51776,7 +51776,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "DistributionTrapezoid_clone", _wrap_DistributionTrapezoid_clone, METH_O, "\n"
 		"DistributionTrapezoid_clone(DistributionTrapezoid self) -> DistributionTrapezoid\n"
-		"DistributionTrapezoid* DistributionTrapezoid::clone() const final\n"
+		"DistributionTrapezoid* DistributionTrapezoid::clone() const override\n"
 		"\n"
 		""},
 	 { "DistributionTrapezoid_probabilityDensity", _wrap_DistributionTrapezoid_probabilityDensity, METH_VARARGS, "\n"
diff --git a/auto/Wrap/libBornAgainSample.py b/auto/Wrap/libBornAgainSample.py
index fc008f750c806f1f00550f0d550bfce8dfda7a16..3cd6c673226600e80498b17ee7c8f6b305f7fbed 100644
--- a/auto/Wrap/libBornAgainSample.py
+++ b/auto/Wrap/libBornAgainSample.py
@@ -5153,7 +5153,7 @@ class IFTDecayFunction1D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     def clone(self):
         r"""
         clone(IFTDecayFunction1D self) -> IFTDecayFunction1D
-        virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0
+        IFTDecayFunction1D* IFTDecayFunction1D::clone() const override=0
 
         """
         return _libBornAgainSample.IFTDecayFunction1D_clone(self)
@@ -5203,7 +5203,7 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
     def clone(self):
         r"""
         clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy
-        FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const
+        FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction1DCauchy_clone(self)
@@ -5253,7 +5253,7 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
     def clone(self):
         r"""
         clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss
-        FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const
+        FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction1DGauss_clone(self)
@@ -5303,7 +5303,7 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
     def clone(self):
         r"""
         clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle
-        FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const
+        FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction1DTriangle_clone(self)
@@ -5353,7 +5353,7 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
     def clone(self):
         r"""
         clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt
-        FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const
+        FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction1DVoigt_clone(self)
@@ -5405,7 +5405,7 @@ class IFTDecayFunction2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     def clone(self):
         r"""
         clone(IFTDecayFunction2D self) -> IFTDecayFunction2D
-        virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0
+        IFTDecayFunction2D* IFTDecayFunction2D::clone() const override=0
 
         """
         return _libBornAgainSample.IFTDecayFunction2D_clone(self)
@@ -5491,7 +5491,7 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
     def clone(self):
         r"""
         clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy
-        FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const
+        FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction2DCauchy_clone(self)
@@ -5543,7 +5543,7 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
     def clone(self):
         r"""
         clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss
-        FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const
+        FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction2DGauss_clone(self)
@@ -5595,7 +5595,7 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
     def clone(self):
         r"""
         clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt
-        FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const
+        FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const override
 
         """
         return _libBornAgainSample.FTDecayFunction2DVoigt_clone(self)
@@ -6833,7 +6833,7 @@ class IInterferenceFunction(ISampleNode):
     def clone(self):
         r"""
         clone(IInterferenceFunction self) -> IInterferenceFunction
-        virtual IInterferenceFunction* IInterferenceFunction::clone() const =0
+        IInterferenceFunction* IInterferenceFunction::clone() const override=0
 
         Returns a clone of this  ISampleNode object. 
 
@@ -8995,7 +8995,7 @@ class FormFactorAnisoPyramid(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid
-        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final
+        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9161,7 +9161,7 @@ class FormFactorCantellatedCube(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorCantellatedCube self) -> FormFactorCantellatedCube
-        FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const final
+        FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9309,7 +9309,7 @@ class FormFactorCone6(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorCone6 self) -> FormFactorCone6
-        FormFactorCone6* FormFactorCone6::clone() const final
+        FormFactorCone6* FormFactorCone6::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9509,7 +9509,7 @@ class FormFactorCuboctahedron(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron
-        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final
+        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9809,7 +9809,7 @@ class FormFactorEllipsoidalCylinder(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder
-        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const final
+        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9897,7 +9897,7 @@ class FormFactorFullSphere(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorFullSphere self) -> FormFactorFullSphere
-        FormFactorFullSphere* FormFactorFullSphere::clone() const final
+        FormFactorFullSphere* FormFactorFullSphere::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -9989,7 +9989,7 @@ class FormFactorFullSpheroid(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid
-        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const final
+        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10070,7 +10070,7 @@ class FormFactorHemiEllipsoid(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid
-        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const final
+        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10157,7 +10157,7 @@ class FormFactorHollowSphere(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorHollowSphere self) -> FormFactorHollowSphere
-        FormFactorHollowSphere* FormFactorHollowSphere::clone() const final
+        FormFactorHollowSphere* FormFactorHollowSphere::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10273,7 +10273,7 @@ class FormFactorLongBoxGauss(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss
-        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const final
+        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10361,7 +10361,7 @@ class FormFactorLongBoxLorentz(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz
-        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const final
+        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10553,7 +10553,7 @@ class FormFactorPyramid(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorPyramid self) -> FormFactorPyramid
-        FormFactorPyramid* FormFactorPyramid::clone() const final
+        FormFactorPyramid* FormFactorPyramid::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10753,7 +10753,7 @@ class FormFactorTetrahedron(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorTetrahedron self) -> FormFactorTetrahedron
-        FormFactorTetrahedron* FormFactorTetrahedron::clone() const final
+        FormFactorTetrahedron* FormFactorTetrahedron::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10821,7 +10821,7 @@ class FormFactorTruncatedCube(IFormFactorPolyhedron):
     def clone(self):
         r"""
         clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube
-        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final
+        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10881,7 +10881,7 @@ class FormFactorTruncatedSphere(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere
-        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const final
+        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -10969,7 +10969,7 @@ class FormFactorTruncatedSpheroid(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid
-        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const final
+        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -11137,7 +11137,7 @@ class FormFactorSphereGaussianRadius(IBornFF):
     def clone(self):
         r"""
         clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius
-        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final
+        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override
 
         Returns a clone of this  ISampleNode object. 
 
@@ -11484,7 +11484,7 @@ class Lattice2D(libBornAgainBase.ICloneable, libBornAgainParam.INode):
     def clone(self):
         r"""
         clone(Lattice2D self) -> Lattice2D
-        virtual Lattice2D* Lattice2D::clone() const =0
+        Lattice2D* Lattice2D::clone() const override=0
 
         """
         return _libBornAgainSample.Lattice2D_clone(self)
@@ -11573,7 +11573,7 @@ class BasicLattice2D(Lattice2D):
     def clone(self):
         r"""
         clone(BasicLattice2D self) -> BasicLattice2D
-        BasicLattice2D * BasicLattice2D::clone() const
+        BasicLattice2D * BasicLattice2D::clone() const override
 
         """
         return _libBornAgainSample.BasicLattice2D_clone(self)
@@ -11646,7 +11646,7 @@ class SquareLattice2D(Lattice2D):
     def clone(self):
         r"""
         clone(SquareLattice2D self) -> SquareLattice2D
-        SquareLattice2D * SquareLattice2D::clone() const
+        SquareLattice2D * SquareLattice2D::clone() const override
 
         """
         return _libBornAgainSample.SquareLattice2D_clone(self)
@@ -11719,7 +11719,7 @@ class HexagonalLattice2D(Lattice2D):
     def clone(self):
         r"""
         clone(HexagonalLattice2D self) -> HexagonalLattice2D
-        HexagonalLattice2D * HexagonalLattice2D::clone() const
+        HexagonalLattice2D * HexagonalLattice2D::clone() const override
 
         """
         return _libBornAgainSample.HexagonalLattice2D_clone(self)
diff --git a/auto/Wrap/libBornAgainSample_wrap.cpp b/auto/Wrap/libBornAgainSample_wrap.cpp
index 3bad374567343cafb71913fb52ad5aeb80b74e99..c8a4a9bcf3f05477ba3e8d3351987bd8b7d67a5f 100644
--- a/auto/Wrap/libBornAgainSample_wrap.cpp
+++ b/auto/Wrap/libBornAgainSample_wrap.cpp
@@ -72069,7 +72069,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "ParticleDistribution_swiginit", ParticleDistribution_swiginit, METH_VARARGS, NULL},
 	 { "IFTDecayFunction1D_clone", _wrap_IFTDecayFunction1D_clone, METH_O, "\n"
 		"IFTDecayFunction1D_clone(IFTDecayFunction1D self) -> IFTDecayFunction1D\n"
-		"virtual IFTDecayFunction1D* IFTDecayFunction1D::clone() const =0\n"
+		"IFTDecayFunction1D* IFTDecayFunction1D::clone() const override=0\n"
 		"\n"
 		""},
 	 { "IFTDecayFunction1D_evaluate", _wrap_IFTDecayFunction1D_evaluate, METH_VARARGS, "\n"
@@ -72092,7 +72092,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction1DCauchy_clone", _wrap_FTDecayFunction1DCauchy_clone, METH_O, "\n"
 		"FTDecayFunction1DCauchy_clone(FTDecayFunction1DCauchy self) -> FTDecayFunction1DCauchy\n"
-		"FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const\n"
+		"FTDecayFunction1DCauchy * FTDecayFunction1DCauchy::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction1DCauchy_accept", _wrap_FTDecayFunction1DCauchy_accept, METH_VARARGS, "\n"
@@ -72116,7 +72116,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction1DGauss_clone", _wrap_FTDecayFunction1DGauss_clone, METH_O, "\n"
 		"FTDecayFunction1DGauss_clone(FTDecayFunction1DGauss self) -> FTDecayFunction1DGauss\n"
-		"FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const\n"
+		"FTDecayFunction1DGauss * FTDecayFunction1DGauss::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction1DGauss_accept", _wrap_FTDecayFunction1DGauss_accept, METH_VARARGS, "\n"
@@ -72140,7 +72140,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction1DTriangle_clone", _wrap_FTDecayFunction1DTriangle_clone, METH_O, "\n"
 		"FTDecayFunction1DTriangle_clone(FTDecayFunction1DTriangle self) -> FTDecayFunction1DTriangle\n"
-		"FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const\n"
+		"FTDecayFunction1DTriangle * FTDecayFunction1DTriangle::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction1DTriangle_accept", _wrap_FTDecayFunction1DTriangle_accept, METH_VARARGS, "\n"
@@ -72164,7 +72164,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction1DVoigt_clone", _wrap_FTDecayFunction1DVoigt_clone, METH_O, "\n"
 		"FTDecayFunction1DVoigt_clone(FTDecayFunction1DVoigt self) -> FTDecayFunction1DVoigt\n"
-		"FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const\n"
+		"FTDecayFunction1DVoigt * FTDecayFunction1DVoigt::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction1DVoigt_accept", _wrap_FTDecayFunction1DVoigt_accept, METH_VARARGS, "\n"
@@ -72187,7 +72187,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "FTDecayFunction1DVoigt_swiginit", FTDecayFunction1DVoigt_swiginit, METH_VARARGS, NULL},
 	 { "IFTDecayFunction2D_clone", _wrap_IFTDecayFunction2D_clone, METH_O, "\n"
 		"IFTDecayFunction2D_clone(IFTDecayFunction2D self) -> IFTDecayFunction2D\n"
-		"virtual IFTDecayFunction2D* IFTDecayFunction2D::clone() const =0\n"
+		"IFTDecayFunction2D* IFTDecayFunction2D::clone() const override=0\n"
 		"\n"
 		""},
 	 { "IFTDecayFunction2D_decayLengthX", _wrap_IFTDecayFunction2D_decayLengthX, METH_O, "\n"
@@ -72237,7 +72237,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction2DCauchy_clone", _wrap_FTDecayFunction2DCauchy_clone, METH_O, "\n"
 		"FTDecayFunction2DCauchy_clone(FTDecayFunction2DCauchy self) -> FTDecayFunction2DCauchy\n"
-		"FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const\n"
+		"FTDecayFunction2DCauchy * FTDecayFunction2DCauchy::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction2DCauchy_accept", _wrap_FTDecayFunction2DCauchy_accept, METH_VARARGS, "\n"
@@ -72263,7 +72263,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction2DGauss_clone", _wrap_FTDecayFunction2DGauss_clone, METH_O, "\n"
 		"FTDecayFunction2DGauss_clone(FTDecayFunction2DGauss self) -> FTDecayFunction2DGauss\n"
-		"FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const\n"
+		"FTDecayFunction2DGauss * FTDecayFunction2DGauss::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction2DGauss_accept", _wrap_FTDecayFunction2DGauss_accept, METH_VARARGS, "\n"
@@ -72289,7 +72289,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FTDecayFunction2DVoigt_clone", _wrap_FTDecayFunction2DVoigt_clone, METH_O, "\n"
 		"FTDecayFunction2DVoigt_clone(FTDecayFunction2DVoigt self) -> FTDecayFunction2DVoigt\n"
-		"FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const\n"
+		"FTDecayFunction2DVoigt * FTDecayFunction2DVoigt::clone() const override\n"
 		"\n"
 		""},
 	 { "FTDecayFunction2DVoigt_accept", _wrap_FTDecayFunction2DVoigt_accept, METH_VARARGS, "\n"
@@ -72955,7 +72955,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "MisesGaussPeakShape_swiginit", MisesGaussPeakShape_swiginit, METH_VARARGS, NULL},
 	 { "IInterferenceFunction_clone", _wrap_IInterferenceFunction_clone, METH_O, "\n"
 		"IInterferenceFunction_clone(IInterferenceFunction self) -> IInterferenceFunction\n"
-		"virtual IInterferenceFunction* IInterferenceFunction::clone() const =0\n"
+		"IInterferenceFunction* IInterferenceFunction::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74273,7 +74273,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorAnisoPyramid_clone", _wrap_FormFactorAnisoPyramid_clone, METH_O, "\n"
 		"FormFactorAnisoPyramid_clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid\n"
-		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final\n"
+		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74366,7 +74366,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorCantellatedCube_clone", _wrap_FormFactorCantellatedCube_clone, METH_O, "\n"
 		"FormFactorCantellatedCube_clone(FormFactorCantellatedCube self) -> FormFactorCantellatedCube\n"
-		"FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const final\n"
+		"FormFactorCantellatedCube* FormFactorCantellatedCube::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74447,7 +74447,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorCone6_clone", _wrap_FormFactorCone6_clone, METH_O, "\n"
 		"FormFactorCone6_clone(FormFactorCone6 self) -> FormFactorCone6\n"
-		"FormFactorCone6* FormFactorCone6::clone() const final\n"
+		"FormFactorCone6* FormFactorCone6::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74546,7 +74546,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorCuboctahedron_clone", _wrap_FormFactorCuboctahedron_clone, METH_O, "\n"
 		"FormFactorCuboctahedron_clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron\n"
-		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final\n"
+		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74712,7 +74712,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorEllipsoidalCylinder_clone", _wrap_FormFactorEllipsoidalCylinder_clone, METH_O, "\n"
 		"FormFactorEllipsoidalCylinder_clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder\n"
-		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const final\n"
+		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74762,7 +74762,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorFullSphere_clone", _wrap_FormFactorFullSphere_clone, METH_O, "\n"
 		"FormFactorFullSphere_clone(FormFactorFullSphere self) -> FormFactorFullSphere\n"
-		"FormFactorFullSphere* FormFactorFullSphere::clone() const final\n"
+		"FormFactorFullSphere* FormFactorFullSphere::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74816,7 +74816,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorFullSpheroid_clone", _wrap_FormFactorFullSpheroid_clone, METH_O, "\n"
 		"FormFactorFullSpheroid_clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid\n"
-		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const final\n"
+		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74866,7 +74866,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorHemiEllipsoid_clone", _wrap_FormFactorHemiEllipsoid_clone, METH_O, "\n"
 		"FormFactorHemiEllipsoid_clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid\n"
-		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const final\n"
+		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74915,7 +74915,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorHollowSphere_clone", _wrap_FormFactorHollowSphere_clone, METH_O, "\n"
 		"FormFactorHollowSphere_clone(FormFactorHollowSphere self) -> FormFactorHollowSphere\n"
-		"FormFactorHollowSphere* FormFactorHollowSphere::clone() const final\n"
+		"FormFactorHollowSphere* FormFactorHollowSphere::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -74976,7 +74976,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorLongBoxGauss_clone", _wrap_FormFactorLongBoxGauss_clone, METH_O, "\n"
 		"FormFactorLongBoxGauss_clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss\n"
-		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const final\n"
+		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75026,7 +75026,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorLongBoxLorentz_clone", _wrap_FormFactorLongBoxLorentz_clone, METH_O, "\n"
 		"FormFactorLongBoxLorentz_clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz\n"
-		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const final\n"
+		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75128,7 +75128,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorPyramid_clone", _wrap_FormFactorPyramid_clone, METH_O, "\n"
 		"FormFactorPyramid_clone(FormFactorPyramid self) -> FormFactorPyramid\n"
-		"FormFactorPyramid* FormFactorPyramid::clone() const final\n"
+		"FormFactorPyramid* FormFactorPyramid::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75227,7 +75227,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorTetrahedron_clone", _wrap_FormFactorTetrahedron_clone, METH_O, "\n"
 		"FormFactorTetrahedron_clone(FormFactorTetrahedron self) -> FormFactorTetrahedron\n"
-		"FormFactorTetrahedron* FormFactorTetrahedron::clone() const final\n"
+		"FormFactorTetrahedron* FormFactorTetrahedron::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75263,7 +75263,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorTruncatedCube_clone", _wrap_FormFactorTruncatedCube_clone, METH_O, "\n"
 		"FormFactorTruncatedCube_clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube\n"
-		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final\n"
+		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75294,7 +75294,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorTruncatedSphere_clone", _wrap_FormFactorTruncatedSphere_clone, METH_O, "\n"
 		"FormFactorTruncatedSphere_clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere\n"
-		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const final\n"
+		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75344,7 +75344,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorTruncatedSpheroid_clone", _wrap_FormFactorTruncatedSpheroid_clone, METH_O, "\n"
 		"FormFactorTruncatedSpheroid_clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid\n"
-		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const final\n"
+		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75439,7 +75439,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "FormFactorSphereGaussianRadius_clone", _wrap_FormFactorSphereGaussianRadius_clone, METH_O, "\n"
 		"FormFactorSphereGaussianRadius_clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius\n"
-		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final\n"
+		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const override\n"
 		"\n"
 		"Returns a clone of this  ISampleNode object. \n"
 		"\n"
@@ -75640,7 +75640,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "Lattice3D_swiginit", Lattice3D_swiginit, METH_VARARGS, NULL},
 	 { "Lattice2D_clone", _wrap_Lattice2D_clone, METH_O, "\n"
 		"Lattice2D_clone(Lattice2D self) -> Lattice2D\n"
-		"virtual Lattice2D* Lattice2D::clone() const =0\n"
+		"Lattice2D* Lattice2D::clone() const override=0\n"
 		"\n"
 		""},
 	 { "Lattice2D_length1", _wrap_Lattice2D_length1, METH_O, "\n"
@@ -75687,7 +75687,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "BasicLattice2D_clone", _wrap_BasicLattice2D_clone, METH_O, "\n"
 		"BasicLattice2D_clone(BasicLattice2D self) -> BasicLattice2D\n"
-		"BasicLattice2D * BasicLattice2D::clone() const\n"
+		"BasicLattice2D * BasicLattice2D::clone() const override\n"
 		"\n"
 		""},
 	 { "BasicLattice2D_accept", _wrap_BasicLattice2D_accept, METH_VARARGS, "\n"
@@ -75725,7 +75725,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "SquareLattice2D_clone", _wrap_SquareLattice2D_clone, METH_O, "\n"
 		"SquareLattice2D_clone(SquareLattice2D self) -> SquareLattice2D\n"
-		"SquareLattice2D * SquareLattice2D::clone() const\n"
+		"SquareLattice2D * SquareLattice2D::clone() const override\n"
 		"\n"
 		""},
 	 { "SquareLattice2D_accept", _wrap_SquareLattice2D_accept, METH_VARARGS, "\n"
@@ -75763,7 +75763,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { "HexagonalLattice2D_clone", _wrap_HexagonalLattice2D_clone, METH_O, "\n"
 		"HexagonalLattice2D_clone(HexagonalLattice2D self) -> HexagonalLattice2D\n"
-		"HexagonalLattice2D * HexagonalLattice2D::clone() const\n"
+		"HexagonalLattice2D * HexagonalLattice2D::clone() const override\n"
 		"\n"
 		""},
 	 { "HexagonalLattice2D_accept", _wrap_HexagonalLattice2D_accept, METH_VARARGS, "\n"