diff --git a/Core/Binning/Bin.cpp b/Core/Binning/Bin.cpp
index 2d4faf4e053e45cb369270020a1e978144ba2abc..f7749ab3eff8cf426e85b44966692cd373f7285d 100644
--- a/Core/Binning/Bin.cpp
+++ b/Core/Binning/Bin.cpp
@@ -15,6 +15,15 @@
 
 #include "Bin.h"
 
+bool BinContains(const Bin1D &bin, double value)
+{
+    if (bin.getBinSize()==0.0) return false;
+    double coordinate = (value - bin.m_lower)/bin.getBinSize();
+    if (coordinate < 0.0) return false;
+    if (coordinate >= 1.0) return false;
+    return true;
+}
+
 //! creation on Bin1DKVector from alpha and phi bins
 Bin1DKVector::Bin1DKVector(double wavelength, const Bin1D& alpha_bin, const Bin1D& phi_bin)
     : m_q_lower(), m_q_upper()
diff --git a/Core/Binning/Bin.h b/Core/Binning/Bin.h
index 619abced0083bea3a4b83d021e78e6e4bb44b8e8..6ead87c540cd569d5456172d33f7524ff181012a 100644
--- a/Core/Binning/Bin.h
+++ b/Core/Binning/Bin.h
@@ -28,6 +28,10 @@ struct BA_CORE_API_ Bin1D
     double getBinSize() const { return m_upper - m_lower; }
 };
 
+//! Checks if value is contained in bin:
+//! value in [m_lower, m_upper)
+bool BinContains(const Bin1D& bin, double value);
+
 //! @class Bin1DKVector
 //! @ingroup tools_internal
 //! @brief An one-dimensional range of kvector_t's
diff --git a/Core/Binning/IAxis.cpp b/Core/Binning/IAxis.cpp
index 2b119e0e0db1d94015763f38f5f14e18198e740d..fbe7e89bf81d05a21c8fde398e40e254b6c6b0aa 100644
--- a/Core/Binning/IAxis.cpp
+++ b/Core/Binning/IAxis.cpp
@@ -19,7 +19,15 @@
 IAxis* IAxis::createDoubleBinSize() const
 {
     throw Exceptions::NotImplementedException(
-        "IAxis::createDoubleBinSize() -> Error. Not implemented.");
+                "IAxis::createDoubleBinSize() -> Error. Not implemented.");
+}
+
+size_t IAxis::findIndex(double value) const
+{
+    for (size_t index=0; index<getSize(); ++index) {
+        if (BinContains(getBin(index), value)) return index;
+    }
+    return getSize();
 }
 
 bool IAxis::equals(const IAxis& other) const
diff --git a/Core/Binning/IAxis.h b/Core/Binning/IAxis.h
index 7a3b06e29cebce20bb7c2a5d0b047b8d399071d4..14d6779ef47f174de13ad621d144df62ccb256ef 100644
--- a/Core/Binning/IAxis.h
+++ b/Core/Binning/IAxis.h
@@ -64,6 +64,10 @@ public:
     //! find bin index which is best match for given value
     virtual size_t findClosestIndex(double value) const=0;
 
+    //! find index of bin that contains the given value
+    //! returns getSize() when value is not found
+    size_t findIndex(double value) const;
+
     //! test for equality
     bool operator==(const IAxis& right) const { return equals(right); }
     bool operator!=(const IAxis& right) const { return !(*this==right); }
diff --git a/Core/Binning/SimulationElement.cpp b/Core/Binning/SimulationElement.cpp
index b6edd4ff4c521bc7267a4c50525b256a75023324..5bd2690cf32f1adaad568c9043d26431d9f70e07 100644
--- a/Core/Binning/SimulationElement.cpp
+++ b/Core/Binning/SimulationElement.cpp
@@ -21,14 +21,15 @@
 SimulationElement::SimulationElement(double wavelength, double alpha_i, double phi_i,
                                      const IPixelMap* pixelmap)
     : m_wavelength(wavelength), m_alpha_i(alpha_i), m_phi_i(phi_i), m_intensity(0.0)
+    , m_contains_specular(false)
 {
     mP_pixel_map.reset(pixelmap->clone());
     initPolarization();
 }
 
 SimulationElement::SimulationElement(const SimulationElement &other)
-    : m_wavelength(other.m_wavelength), m_alpha_i(other.m_alpha_i), m_phi_i(other.m_phi_i),
-      m_intensity(other.m_intensity)
+    : m_wavelength(other.m_wavelength), m_alpha_i(other.m_alpha_i), m_phi_i(other.m_phi_i)
+    , m_intensity(other.m_intensity), m_contains_specular(other.m_contains_specular)
 {
     mP_pixel_map.reset(other.mP_pixel_map->clone());
     m_polarization = other.m_polarization;
@@ -47,8 +48,8 @@ SimulationElement& SimulationElement::operator=(const SimulationElement &other)
 }
 
 SimulationElement::SimulationElement(const SimulationElement &other, double x, double y)
-    : m_wavelength(other.m_wavelength), m_alpha_i(other.m_alpha_i), m_phi_i(other.m_phi_i),
-      m_intensity(other.m_intensity)
+    : m_wavelength(other.m_wavelength), m_alpha_i(other.m_alpha_i), m_phi_i(other.m_phi_i)
+    , m_intensity(other.m_intensity), m_contains_specular(other.m_contains_specular)
 {
     mP_pixel_map.reset(other.mP_pixel_map->createZeroSizeMap(x, y));
     m_polarization = other.m_polarization;
@@ -84,6 +85,7 @@ void SimulationElement::swapContent(SimulationElement &other)
     std::swap(m_polarization, other.m_polarization);
     std::swap(m_analyzer_operator, other.m_analyzer_operator);
     std::swap(mP_pixel_map, other.mP_pixel_map);
+    std::swap(m_contains_specular, other.m_contains_specular);
 }
 
 void SimulationElement::initPolarization()
@@ -102,6 +104,16 @@ double SimulationElement::getPhi(double x, double y) const
     return getK(x,y).phi();
 }
 
+bool SimulationElement::containsSpecularWavevector() const
+{
+    return m_contains_specular;
+}
+
+void SimulationElement::setSpecular(bool contains_specular)
+{
+    m_contains_specular = contains_specular;
+}
+
 kvector_t SimulationElement::getK(double x, double y) const {
     return mP_pixel_map->getK(x, y, m_wavelength);
 }
diff --git a/Core/Binning/SimulationElement.h b/Core/Binning/SimulationElement.h
index 2810967f128255a26336f556aff42d8813855613..2a2067051a7dc42f2fe8e93f7c14da14a0c9b4d9 100644
--- a/Core/Binning/SimulationElement.h
+++ b/Core/Binning/SimulationElement.h
@@ -82,6 +82,12 @@ public:
     //! get phi for given detector pixel coordinates
     double getPhi(double x, double y) const;
 
+    //! check if element contains given wavevector
+    bool containsSpecularWavevector() const;
+
+    //! indicate that this element contains the specular wavevector
+    void setSpecular(bool contains_specular);
+
 private:
     //! swap function
     void swapContent(SimulationElement &other);
@@ -96,6 +102,7 @@ private:
     Eigen::Matrix2cd m_analyzer_operator; //!< polarization analyzer operator
 #endif
     std::unique_ptr<IPixelMap> mP_pixel_map;
+    bool m_contains_specular;
 };
 
 
diff --git a/Core/Computation/DecoratedLayerComputation.cpp b/Core/Computation/DecoratedLayerComputation.cpp
index e5a758015f38b326b7e998c7af8a7896379f176d..62c6a297a5c0f5cd5e9e7a71c708075c1e404f22 100644
--- a/Core/Computation/DecoratedLayerComputation.cpp
+++ b/Core/Computation/DecoratedLayerComputation.cpp
@@ -25,14 +25,9 @@
 #include "SimulationElement.h"
 
 DecoratedLayerComputation::DecoratedLayerComputation(const Layer* p_layer, size_t layout_index)
-    : mp_layer(p_layer), mp_specular_info(nullptr), m_layout_index(layout_index)
+    : mp_layer(p_layer), m_layout_index(layout_index)
 {}
 
-DecoratedLayerComputation::~DecoratedLayerComputation()
-{
-    delete mp_specular_info;
-}
-
 void DecoratedLayerComputation::eval(
     const SimulationOptions& options,
     ProgressHandler* progress,
@@ -42,8 +37,8 @@ void DecoratedLayerComputation::eval(
     const std::vector<SimulationElement>::iterator& end_it)
 {
     LayerStrategyBuilder builder(*mp_layer, sample, options, m_layout_index);
-    assert(mp_specular_info);
-    builder.setRTInfo(*mp_specular_info);
+    assert(mP_specular_info);
+    builder.setRTInfo(*mP_specular_info);
     const std::unique_ptr<const IInterferenceFunctionStrategy> p_strategy(builder.createStrategy());
     double total_surface_density = mp_layer->getTotalParticleSurfaceDensity(m_layout_index);
 
@@ -63,8 +58,7 @@ void DecoratedLayerComputation::eval(
 
 void DecoratedLayerComputation::setSpecularInfo(const LayerSpecularInfo& specular_info)
 {
-    if (mp_specular_info != &specular_info) {
-        delete mp_specular_info;
-        mp_specular_info = specular_info.clone();
+    if (mP_specular_info.get() != &specular_info) {
+        mP_specular_info.reset(specular_info.clone());
     }
 }
diff --git a/Core/Computation/DecoratedLayerComputation.h b/Core/Computation/DecoratedLayerComputation.h
index dd9d235c2befa4c80973c0866f474f432dba35b3..d40218301e19533aee3f761b5d9c43f875497da3 100644
--- a/Core/Computation/DecoratedLayerComputation.h
+++ b/Core/Computation/DecoratedLayerComputation.h
@@ -17,8 +17,8 @@
 #define DECORATEDLAYERCOMPUTATION_H
 
 #include "INoncopyable.h"
-#include "WinDllMacros.h"
 #include <vector>
+#include <memory>
 
 using std::size_t;
 
@@ -34,11 +34,10 @@ class SimulationOptions;
 //! Controlled by MainComputation.
 //! @ingroup algorithms_internal
 
-class BA_CORE_API_ DecoratedLayerComputation : public INoncopyable
+class DecoratedLayerComputation final : public INoncopyable
 {
 public:
     DecoratedLayerComputation(const Layer* p_layer, size_t layout_index=0);
-    ~DecoratedLayerComputation();
 
     void eval(const SimulationOptions& options,
               ProgressHandler* progress,
@@ -50,7 +49,7 @@ public:
 
 private:
     const Layer* mp_layer;
-    LayerSpecularInfo* mp_specular_info;
+    std::unique_ptr<LayerSpecularInfo> mP_specular_info;
     size_t m_layout_index;
 };
 
diff --git a/Core/Computation/MainComputation.cpp b/Core/Computation/MainComputation.cpp
index 489ca3cd3a33bc14d7e0e4b7a5113f1fb91182f8..5f7e3f74b38fbd3767d7d2d72bfc10db920a9143 100644
--- a/Core/Computation/MainComputation.cpp
+++ b/Core/Computation/MainComputation.cpp
@@ -24,6 +24,7 @@
 #include "MatrixSpecularInfoMap.h"
 #include "MultiLayer.h"
 #include "RoughMultiLayerComputation.h"
+#include "SpecularComputation.h"
 #include "ScalarSpecularInfoMap.h"
 #include "ProgressHandler.h"
 #include "SimulationElement.h"
@@ -59,12 +60,14 @@ MainComputation::MainComputation(
     // scattering from rough surfaces in DWBA
     if (mp_multi_layer->hasRoughness())
         mp_roughness_computation = new RoughMultiLayerComputation(mp_multi_layer);
+    mp_specular_computation = new SpecularComputation(mp_multi_layer);
 }
 
 MainComputation::~MainComputation()
 {
     delete mp_multi_layer;
     delete mp_roughness_computation;
+    delete mp_specular_computation;
     for (auto& layer_comp: m_layer_computation)
         for (DecoratedLayerComputation* comp: layer_comp)
             delete comp;
@@ -85,6 +88,7 @@ void MainComputation::run()
 // The normalization of the calculated scattering intensities is:
 // For nanoparticles: rho * (scattering cross-section/scattering particle)
 // For roughness: (scattering cross-section of area S)/S
+// For specular peak: |R|^2 * sin(alpha_i) / solid_angle
 // This allows them to be added and normalized together to the beam afterwards
 void MainComputation::runProtected()
 {
@@ -112,6 +116,10 @@ void MainComputation::runProtected()
         mp_roughness_computation->eval(m_progress, layer_elements.begin(), layer_elements.end());
         addElementsWithWeight(layer_elements.begin(), layer_elements.end(), m_begin_it, 1.0);
     }
+
+    if (m_sim_options.includeSpecular()) {
+        mp_specular_computation->eval(m_progress, polarized, m_begin_it, m_end_it);
+    }
 }
 
 void MainComputation::collectRTCoefficientsScalar()
@@ -129,6 +137,10 @@ void MainComputation::collectRTCoefficientsScalar()
         // layer roughness DWBA
         if (mp_roughness_computation)
             mp_roughness_computation->setSpecularInfo(i, layer_coeff_map);
+
+        if (i==0) {
+            mp_specular_computation->setSpecularInfo(layer_coeff_map);
+        }
     }
 }
 
diff --git a/Core/Computation/MainComputation.h b/Core/Computation/MainComputation.h
index 3c4bea57b060455ce6a3d3c555dceb6312220e00..e043a6e9b04bea7b1b3593fed7b540c934cb307c 100644
--- a/Core/Computation/MainComputation.h
+++ b/Core/Computation/MainComputation.h
@@ -22,9 +22,10 @@
 #include "SimulationOptions.h"
 #include <vector>
 
-class DecoratedLayerComputation;
 class MultiLayer;
+class DecoratedLayerComputation;
 class RoughMultiLayerComputation;
+class SpecularComputation;
 class ProgressHandler;
 class SimulationElement;
 
@@ -35,7 +36,7 @@ class SimulationElement;
 //!
 //! @ingroup algorithms_internal
 
-class BA_CORE_API_ MainComputation : public INoncopyable
+class MainComputation final : public INoncopyable
 {
 public:
     MainComputation(
@@ -65,6 +66,7 @@ private:
     std::vector<SimulationElement>::iterator m_begin_it, m_end_it;
 
     RoughMultiLayerComputation* mp_roughness_computation;
+    SpecularComputation *mp_specular_computation;
     std::vector<std::vector<DecoratedLayerComputation*>> m_layer_computation;
 
     ComputationOutcome m_outcome;
diff --git a/Core/Computation/RoughMultiLayerComputation.h b/Core/Computation/RoughMultiLayerComputation.h
index 40f0e9634ea226209dd8d348614245a6e6e3c268..bdefded2412693202d262b086d7da1bec9190160 100644
--- a/Core/Computation/RoughMultiLayerComputation.h
+++ b/Core/Computation/RoughMultiLayerComputation.h
@@ -18,7 +18,6 @@
 
 #include "Complex.h"
 #include "INoncopyable.h"
-#include "WinDllMacros.h"
 #include <vector>
 
 class LayerSpecularInfo;
@@ -30,7 +29,7 @@ class SimulationElement;
 //! Controlled by MainComputation.
 //! @ingroup algorithms_internal
 
-class BA_CORE_API_ RoughMultiLayerComputation : public INoncopyable
+class RoughMultiLayerComputation final : public INoncopyable
 {
 public:
     RoughMultiLayerComputation(const MultiLayer* p_multi_layer);
diff --git a/Core/Computation/SpecularComputation.cpp b/Core/Computation/SpecularComputation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b71f951dfd22c56ed46d3f1c77e0c35c92c052e3
--- /dev/null
+++ b/Core/Computation/SpecularComputation.cpp
@@ -0,0 +1,51 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Computation/SpecularComputation.cpp
+//! @brief     Implements class SpecularComputation.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#include "SpecularComputation.h"
+#include "SimulationElement.h"
+#include "LayerSpecularInfo.h"
+#include "ILayerRTCoefficients.h"
+
+SpecularComputation::SpecularComputation(const MultiLayer* p_multi_layer)
+    : mp_multi_layer(p_multi_layer)
+{}
+
+void SpecularComputation::eval(
+        ProgressHandler* /*unused*/,
+        bool polarized,
+        const std::vector<SimulationElement>::iterator& begin_it,
+        const std::vector<SimulationElement>::iterator& end_it)
+{
+    if (polarized) return;
+    for (std::vector<SimulationElement>::iterator it = begin_it; it != end_it; ++it) {
+        if (it->containsSpecularWavevector()) {
+            complex_t R = mP_specular_info->getInCoefficients(*it)->getScalarR();
+            double sin_alpha_i = std::abs(std::sin(it->getAlphaI()));
+            if (sin_alpha_i==0.0) sin_alpha_i = 1.0;
+            double solid_angle = it->getSolidAngle();
+            if (solid_angle<=0.0) continue;
+            double intensity = std::norm(R)*sin_alpha_i/solid_angle;
+            it->setIntensity(intensity);
+        }
+    }
+    return;
+}
+
+void SpecularComputation::setSpecularInfo(const LayerSpecularInfo &specular_info)
+{
+    if (mP_specular_info.get() != &specular_info) {
+        mP_specular_info.reset(specular_info.clone());
+    }
+}
diff --git a/Core/Computation/SpecularComputation.h b/Core/Computation/SpecularComputation.h
new file mode 100644
index 0000000000000000000000000000000000000000..a7c4b5bc9701f9c8c710e064553eefa4a0973d14
--- /dev/null
+++ b/Core/Computation/SpecularComputation.h
@@ -0,0 +1,50 @@
+// ************************************************************************** //
+//
+//  BornAgain: simulate and fit scattering at grazing incidence
+//
+//! @file      Core/Computation/SpecularComputation.h
+//! @brief     Defines class SpecularComputation.
+//!
+//! @homepage  http://www.bornagainproject.org
+//! @license   GNU General Public License v3 or higher (see COPYING)
+//! @copyright Forschungszentrum Jülich GmbH 2016
+//! @authors   Scientific Computing Group at MLZ Garching
+//! @authors   M. Ganeva, G. Pospelov, W. Van Herck, J. Wuttke
+//
+// ************************************************************************** //
+
+#ifndef SPECULARCOMPUTATION_H
+#define SPECULARCOMPUTATION_H
+
+#include "INoncopyable.h"
+#include <vector>
+#include <memory>
+
+class MultiLayer;
+class LayerSpecularInfo;
+class ProgressHandler;
+class SimulationElement;
+class SimulationOptions;
+
+//! Computes the specular scattering.
+//! Controlled by MainComputation.
+//! @ingroup algorithms_internal
+
+class SpecularComputation final : public INoncopyable
+{
+public:
+    SpecularComputation(const MultiLayer* p_multi_layer);
+
+    void eval(ProgressHandler* progress,
+              bool polarized,
+              const std::vector<SimulationElement>::iterator& begin_it,
+              const std::vector<SimulationElement>::iterator& end_it);
+    void setSpecularInfo(const LayerSpecularInfo& specular_info);
+
+private:
+    const MultiLayer* mp_multi_layer;
+    std::unique_ptr<LayerSpecularInfo> mP_specular_info;
+};
+
+
+#endif // SPECULARCOMPUTATION_H
diff --git a/Core/Instrument/IDetector2D.cpp b/Core/Instrument/IDetector2D.cpp
index 2158f48416d3b2e004283f4ac213c33b85d2bd79..e1812d822e318a8ce3e96f120c799d7066b1fc00 100644
--- a/Core/Instrument/IDetector2D.cpp
+++ b/Core/Instrument/IDetector2D.cpp
@@ -185,6 +185,9 @@ std::vector<SimulationElement> IDetector2D::createSimulationElements(const Beam
         SimulationElement sim_element(wavelength, alpha_i, phi_i, P_pixel_map.get());
         sim_element.setPolarization(beam_polarization);
         sim_element.setAnalyzerOperator(analyzer_operator);
+        if (index==getIndexOfSpecular(beam)) {
+            sim_element.setSpecular(true);
+        }
         result.push_back(sim_element);
     }
     return result;
@@ -229,7 +232,13 @@ size_t IDetector2D::getAxisBinIndex(size_t index, size_t selected_axis) const
         remainder /= m_axes[i_axis]->getSize();
     }
     throw Exceptions::LogicErrorException("IDetector2D::getAxisBinIndex() -> "
-                              "Error! No axis with given number");
+                                          "Error! No axis with given number");
+}
+
+size_t IDetector2D::getGlobalIndex(size_t x, size_t y) const
+{
+    if (getDimension()!=2) return getTotalSize();
+    return x*m_axes[1]->getSize()+y;
 }
 
 void IDetector2D::swapContent(IDetector2D &other)
@@ -240,6 +249,17 @@ void IDetector2D::swapContent(IDetector2D &other)
     std::swap(this->m_detector_mask, other.m_detector_mask);
 }
 
+size_t IDetector2D::getTotalSize() const
+{
+    if (getDimension()==0) return 0;
+    size_t result = 1;
+    for (size_t i_axis=0; i_axis<getDimension(); ++i_axis)
+    {
+        result *= m_axes[i_axis]->getSize();
+    }
+    return result;
+}
+
 bool IDetector2D::checkAnalyzerProperties(
     const kvector_t direction, double efficiency, double total_transmission) const
 {
diff --git a/Core/Instrument/IDetector2D.h b/Core/Instrument/IDetector2D.h
index d9338cbe63e98521ca6c67b59a99591c336f847f..fc3d84665098ffbe5dd8d3204dfdbd5357a1a573 100644
--- a/Core/Instrument/IDetector2D.h
+++ b/Core/Instrument/IDetector2D.h
@@ -154,9 +154,20 @@ protected:
     //! Calculate axis index for given global index
     size_t getAxisBinIndex(size_t index, size_t selected_axis) const;
 
+    //! Calculate global index from two axis indices
+    size_t getGlobalIndex(size_t x, size_t y) const;
+
     //! swap function
     void swapContent(IDetector2D& other);
 
+    //! Returns index of pixel that contains the specular wavevector.
+    //! If no pixel contains this specular wavevector, the number of pixels is
+    //! returned. This corresponds to an overflow index.
+    virtual size_t getIndexOfSpecular(const Beam& beam) const=0;
+
+    //! Returns total number of pixels
+    size_t getTotalSize() const;
+
     SafePointerVector<IAxis> m_axes;
     std::unique_ptr<IDetectorResolution> mP_detector_resolution;
 #ifndef SWIG
diff --git a/Core/Instrument/IsGISAXSDetector.cpp b/Core/Instrument/IsGISAXSDetector.cpp
index 84244c5ba99d8384eb1a7205002749d9a83c8e4f..d67134b11562541c7e94fea1154781e018c8d420 100644
--- a/Core/Instrument/IsGISAXSDetector.cpp
+++ b/Core/Instrument/IsGISAXSDetector.cpp
@@ -72,3 +72,8 @@ IAxis *IsGISAXSDetector::createAxis(size_t index, size_t n_bins, double min, dou
             "IsGISAXSDetector::createAxis() -> Error! Number n_bins can't be zero.");
     }    return new CustomBinAxis(getAxisName(index), n_bins, min, max);
 }
+
+size_t IsGISAXSDetector::getIndexOfSpecular(const Beam&) const
+{
+    return getTotalSize();
+}
diff --git a/Core/Instrument/IsGISAXSDetector.h b/Core/Instrument/IsGISAXSDetector.h
index 52a91e1879a29b10a96aedcc9ae9f64a85b4d0b6..ce3477c9caa628d4f1136c453734ac45a894189c 100644
--- a/Core/Instrument/IsGISAXSDetector.h
+++ b/Core/Instrument/IsGISAXSDetector.h
@@ -32,15 +32,18 @@ public:
     IsGISAXSDetector(const IsGISAXSDetector &other);
     IsGISAXSDetector &operator=(const IsGISAXSDetector &other);
 
-    virtual IsGISAXSDetector* clone() const;
-
-    virtual ~IsGISAXSDetector() {}
+    IsGISAXSDetector* clone() const override;
 
 protected:
-    virtual void print(std::ostream &ostr) const;
+    void print(std::ostream &ostr) const override;
 
     //! Generates an axis with correct name and default binning for given index
-    virtual IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const;
+    IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const override;
+
+    //! Returns index of pixel that contains the specular wavevector.
+    //! If no pixel contains this specular wavevector, the number of pixels is
+    //! returned. This corresponds to an overflow index.
+    size_t getIndexOfSpecular(const Beam& beam) const override;
 };
 
 #endif // ISGISAXSDETECTOR_H
diff --git a/Core/Instrument/RectangularDetector.cpp b/Core/Instrument/RectangularDetector.cpp
index 95771997e7e9bbf80a295024d591550cb8abd781..e263734473fbff9a5c230236e51d4e9f5267a43a 100644
--- a/Core/Instrument/RectangularDetector.cpp
+++ b/Core/Instrument/RectangularDetector.cpp
@@ -302,16 +302,36 @@ std::string RectangularDetector::getAxisName(size_t index) const
     switch (index) {
     case 0:
         return BornAgain::U_AXIS_NAME;
-        break;
     case 1:
         return BornAgain::V_AXIS_NAME;
-        break;
     default:
         throw Exceptions::LogicErrorException(
             "RectangularDetector::getAxisName(size_t index) -> Error! index > 1");
     }
 }
 
+size_t RectangularDetector::getIndexOfSpecular(const Beam& beam) const
+{
+    if (getDimension()!=2) return getTotalSize();
+    double alpha = beam.getAlpha();
+    double phi = beam.getPhi();
+    kvector_t k_spec = vecOfLambdaAlphaPhi(beam.getWavelength(), alpha, phi);
+    kvector_t normal_unit = m_normal_to_detector.unit();
+    double kd = k_spec.dot(normal_unit);
+    if (kd<=0.0) return getTotalSize();
+    kvector_t k_orth = (k_spec/kd - normal_unit)*m_distance;
+    double u = k_orth.dot(m_u_unit) + m_u0;
+    double v = k_orth.dot(m_v_unit) + m_v0;
+    const IAxis& u_axis = getAxis(BornAgain::X_AXIS_INDEX);
+    const IAxis& v_axis = getAxis(BornAgain::Y_AXIS_INDEX);
+    size_t u_index = u_axis.findIndex(u);
+    size_t v_index = v_axis.findIndex(v);
+    if (u_index < u_axis.getSize() && v_index < v_axis.getSize()) {
+        return getGlobalIndex(u_index, v_index);
+    }
+    return getTotalSize();
+}
+
 void RectangularDetector::swapContent(RectangularDetector& other)
 {
     IDetector2D::swapContent(other);
diff --git a/Core/Instrument/RectangularDetector.h b/Core/Instrument/RectangularDetector.h
index 1e0521f416662f931523d5b52da5c745b459f10e..eb6f5f6834a3665be869c8f8a4dc91f0bdd1697c 100644
--- a/Core/Instrument/RectangularDetector.h
+++ b/Core/Instrument/RectangularDetector.h
@@ -44,11 +44,11 @@ public:
     RectangularDetector(const RectangularDetector& other);
     RectangularDetector& operator=(const RectangularDetector& other);
 
-    virtual RectangularDetector* clone() const;
+    RectangularDetector* clone() const override;
 
-    virtual ~RectangularDetector();
+    ~RectangularDetector();
 
-    virtual void init(const Beam& beam);
+    void init(const Beam& beam) override;
 
     void setPosition(const kvector_t normal_to_detector, double u0, double v0,
                      const kvector_t direction = kvector_t(0.0, -1.0, 0.0));
@@ -60,8 +60,8 @@ public:
     void setDirectBeamPosition(double u0, double v0);
 
     //! Adds parameters from local pool to external pool and recursively calls its direct children.
-    virtual std::string addParametersToExternalPool(
-        const std::string& path, ParameterPool* external_pool, int copy_number = -1) const;
+    std::string addParametersToExternalPool(
+        const std::string& path, ParameterPool* external_pool, int copy_number = -1) const override;
 
     double getWidth() const;
     double getHeight() const;
@@ -77,28 +77,33 @@ public:
     EDetectorArrangement getDetectorArrangment() const;
 
     //! Returns detector map in given axes units
-    virtual OutputData<double>* createDetectorMap(const Beam& beam, EAxesUnits units_type) const;
+    OutputData<double>* createDetectorMap(const Beam& beam, EAxesUnits units_type) const override;
 
     //! returns vector of valid axes units
-    virtual std::vector<EAxesUnits> getValidAxesUnits() const;
+    std::vector<EAxesUnits> getValidAxesUnits() const override;
 
     //! return default axes units
-    virtual EAxesUnits getDefaultAxesUnits() const;
+    EAxesUnits getDefaultAxesUnits() const override;
 
 protected:
     //! Create an IPixelMap for the given OutputData object and index
-    virtual IPixelMap* createPixelMap(size_t index) const;
+    IPixelMap* createPixelMap(size_t index) const override;
 
-    virtual void print(std::ostream& ostr) const;
+    void print(std::ostream& ostr) const override;
 
     //! Registers some class members for later access via parameter pool.
-    virtual void init_parameters() {}
+    void init_parameters() override {}
 
     //! Generates an axis with correct name and default binning for given index
-    virtual IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const;
+    IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const override;
 
     //! Returns the name for the axis with given index
-    virtual std::string getAxisName(size_t index) const;
+    std::string getAxisName(size_t index) const override;
+
+    //! Returns index of pixel that contains the specular wavevector.
+    //! If no pixel contains this specular wavevector, the number of pixels is
+    //! returned. This corresponds to an overflow index.
+    size_t getIndexOfSpecular(const Beam& beam) const override;
 
     //! swap function
     void swapContent(RectangularDetector& other);
@@ -123,11 +128,11 @@ public:
     RectPixelMap(kvector_t corner_pos, kvector_t width, kvector_t height);
     virtual ~RectPixelMap() {}
 
-    virtual RectPixelMap* clone() const;
-    virtual RectPixelMap* createZeroSizeMap(double x, double y) const;
-    virtual kvector_t getK(double x, double y, double wavelength) const;
-    virtual double getIntegrationFactor(double x, double y) const;
-    virtual double getSolidAngle() const;
+    RectPixelMap* clone() const override;
+    RectPixelMap* createZeroSizeMap(double x, double y) const override;
+    kvector_t getK(double x, double y, double wavelength) const override;
+    double getIntegrationFactor(double x, double y) const override;
+    double getSolidAngle() const override;
 private:
     kvector_t normalizeLength(const kvector_t direction, double length) const;
     double calculateSolidAngle() const;
diff --git a/Core/Instrument/SphericalDetector.cpp b/Core/Instrument/SphericalDetector.cpp
index a49a37ffc22e2b4eb9a2b8d74a0dbbbd7dce3c02..2fc96693c114f48bfe1998f15d7343b5d9362de0 100644
--- a/Core/Instrument/SphericalDetector.cpp
+++ b/Core/Instrument/SphericalDetector.cpp
@@ -19,6 +19,7 @@
 #include "IPixelMap.h"
 #include "SimulationElement.h"
 #include "Units.h"
+#include "MathConstants.h"
 
 SphericalDetector::SphericalDetector()
 {
@@ -181,16 +182,29 @@ std::string SphericalDetector::getAxisName(size_t index) const
     switch (index) {
     case 0:
         return BornAgain::PHI_AXIS_NAME;
-        break;
     case 1:
         return BornAgain::ALPHA_AXIS_NAME;
-        break;
     default:
         throw Exceptions::LogicErrorException(
             "SphericalDetector::getAxisName(size_t index) -> Error! index > 1");
     }
 }
 
+size_t SphericalDetector::getIndexOfSpecular(const Beam& beam) const
+{
+    if (getDimension()!=2) return getTotalSize();
+    double alpha = beam.getAlpha();
+    double phi = beam.getPhi();
+    const IAxis& phi_axis = getAxis(BornAgain::X_AXIS_INDEX);
+    const IAxis& alpha_axis = getAxis(BornAgain::Y_AXIS_INDEX);
+    size_t phi_index = phi_axis.findIndex(phi);
+    size_t alpha_index = alpha_axis.findIndex(alpha);
+    if (phi_index < phi_axis.getSize() && alpha_index < alpha_axis.getSize()) {
+        return getGlobalIndex(phi_index, alpha_index);
+    }
+    return getTotalSize();
+}
+
 AngularPixelMap::AngularPixelMap(Bin1D alpha_bin, Bin1D phi_bin)
     : m_alpha(alpha_bin.m_lower), m_phi(phi_bin.m_lower),
       m_dalpha(alpha_bin.getBinSize()), m_dphi(phi_bin.getBinSize())
diff --git a/Core/Instrument/SphericalDetector.h b/Core/Instrument/SphericalDetector.h
index 62cd7f1db287165e58a0768af68170deeb28318d..fe38df6a952315e5f5a98d1d41c0273b4b758df0 100644
--- a/Core/Instrument/SphericalDetector.h
+++ b/Core/Instrument/SphericalDetector.h
@@ -41,37 +41,42 @@ public:
     SphericalDetector(const SphericalDetector &other);
     SphericalDetector &operator=(const SphericalDetector &other);
 
-    virtual SphericalDetector* clone() const;
+    SphericalDetector* clone() const override;
 
-    virtual ~SphericalDetector() {}
+    ~SphericalDetector() override {}
 
     //! Adds parameters from local pool to external pool and recursively calls its direct children.
-    virtual std::string addParametersToExternalPool(
-        const std::string& path, ParameterPool* external_pool, int copy_number = -1) const;
+    std::string addParametersToExternalPool(
+        const std::string& path, ParameterPool* external_pool, int copy_number = -1) const override;
 
     //! Returns detector map in given axes units
-    virtual OutputData<double> *createDetectorMap(const Beam& beam, EAxesUnits units_type) const;
+    OutputData<double> *createDetectorMap(const Beam& beam, EAxesUnits units_type) const override;
 
     //! returns vector of valid axes units
-    virtual std::vector<EAxesUnits> getValidAxesUnits() const;
+    std::vector<EAxesUnits> getValidAxesUnits() const override;
 
     //! return default axes units
-    virtual EAxesUnits getDefaultAxesUnits() const;
+    EAxesUnits getDefaultAxesUnits() const override;
 
 protected:
     //! Create an IPixelMap for the given OutputData object and index
-    virtual IPixelMap* createPixelMap(size_t index) const;
+    IPixelMap* createPixelMap(size_t index) const override;
 
-    virtual void print(std::ostream& ostr) const;
+    void print(std::ostream& ostr) const override;
 
     //! Registers some class members for later access via parameter pool.
-    virtual void init_parameters() {}
+    void init_parameters() override {}
 
     //! Generates an axis with correct name and default binning for given index
-    virtual IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const;
+    IAxis* createAxis(size_t index, size_t n_bins, double min, double max) const override;
 
     //! Returns the name for the axis with given index
-    virtual std::string getAxisName(size_t index) const;
+    std::string getAxisName(size_t index) const override;
+
+    //! Returns index of pixel that contains the specular wavevector.
+    //! If no pixel contains this specular wavevector, the number of pixels is
+    //! returned. This corresponds to an overflow index.
+    size_t getIndexOfSpecular(const Beam& beam) const override;
 };
 
 class AngularPixelMap : public IPixelMap
@@ -80,11 +85,11 @@ public:
     AngularPixelMap(Bin1D alpha_bin, Bin1D phi_bin);
     virtual ~AngularPixelMap() {}
 
-    virtual AngularPixelMap* clone() const;
-    virtual AngularPixelMap* createZeroSizeMap(double x, double y) const;
-    virtual kvector_t getK(double x, double y, double wavelength) const;
-    virtual double getIntegrationFactor(double x, double y) const;
-    virtual double getSolidAngle() const;
+    AngularPixelMap* clone() const override;
+    AngularPixelMap* createZeroSizeMap(double x, double y) const override;
+    kvector_t getK(double x, double y, double wavelength) const override;
+    double getIntegrationFactor(double x, double y) const override;
+    double getSolidAngle() const override;
 private:
     double m_alpha, m_phi;
     double m_dalpha, m_dphi;
diff --git a/Core/Parametrization/SimulationOptions.cpp b/Core/Parametrization/SimulationOptions.cpp
index b72ea686625e9005a62404d0a8f533f88e5b0b9f..7068f9315f7ca9ed9bae4beb46a0755e08d4aa6e 100644
--- a/Core/Parametrization/SimulationOptions.cpp
+++ b/Core/Parametrization/SimulationOptions.cpp
@@ -18,6 +18,7 @@
 
 SimulationOptions::SimulationOptions()
     : m_mc_integration(false)
+    , m_include_specular(false)
     , m_mc_points(1)
 {
     m_thread_info.n_threads = getHardwareConcurrency();
diff --git a/Core/Parametrization/SimulationOptions.h b/Core/Parametrization/SimulationOptions.h
index 0708aca288ee21c30baeccff56c1aec99e77f16b..ee48c3e0abd8bdb9c7e7e9d590af95b7dffa639b 100644
--- a/Core/Parametrization/SimulationOptions.h
+++ b/Core/Parametrization/SimulationOptions.h
@@ -59,8 +59,13 @@ public:
 
     double getDefaultVariability() const;
 
+    void setIncludeSpecular(bool include_specular) { m_include_specular = include_specular; }
+
+    bool includeSpecular() const { return m_include_specular; }
+
 private:
     bool m_mc_integration;
+    bool m_include_specular;
     size_t m_mc_points;
     ThreadInfo m_thread_info;
 };
diff --git a/Wrap/swig/ignores.i b/Wrap/swig/ignores.i
index bbec62a5f0d97292d83f732ff46690c5b4d81370..1792519764f4461c27f09c7315e7b8c543d4dee0 100644
--- a/Wrap/swig/ignores.i
+++ b/Wrap/swig/ignores.i
@@ -59,3 +59,8 @@
 %ignore ISampleVisitor::visit(const FormFactorDWBAPol*);
 %ignore FormFactorDWBA;
 %ignore ISampleVisitor::visit(const FormFactorDWBA*);
+%ignore MainComputation;
+%ignore DecoratedLayerComputation;
+%ignore RoughMultiLayerComputation;
+%ignore SpecularComputation;
+
diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index fbf55e27e632c82aa4d7de58a779286c2ee695d5..384b74ea5720eca6b4223b40584acddf10d85cb4 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -937,9 +937,6 @@ C++ includes: DecoratedLayerComputation.h
 %feature("docstring")  DecoratedLayerComputation::DecoratedLayerComputation "DecoratedLayerComputation::DecoratedLayerComputation(const Layer *p_layer, size_t layout_index=0)
 ";
 
-%feature("docstring")  DecoratedLayerComputation::~DecoratedLayerComputation "DecoratedLayerComputation::~DecoratedLayerComputation()
-";
-
 %feature("docstring")  DecoratedLayerComputation::eval "void DecoratedLayerComputation::eval(const SimulationOptions &options, ProgressHandler *progress, bool polarized, const MultiLayer &sample, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it)
 ";
 
@@ -1501,140 +1498,6 @@ C++ includes: FitElement.h
 ";
 
 
-// File: classFitKernel.xml
-%feature("docstring") FitKernel "
-
-Fitting kernel for  FitSuite.
-
-C++ includes: FitKernel.h
-";
-
-%feature("docstring")  FitKernel::FitKernel "FitKernel::FitKernel(const std::function< void()> &notifyObservers)
-";
-
-%feature("docstring")  FitKernel::FitKernel "FitKernel::FitKernel(const FitKernel &)=delete
-";
-
-%feature("docstring")  FitKernel::~FitKernel "FitKernel::~FitKernel()
-";
-
-%feature("docstring")  FitKernel::clear "void FitKernel::clear()
-
-Resets most state variables, to get prepared for the next fit.
-
-Clears all data. 
-";
-
-%feature("docstring")  FitKernel::addSimulationAndRealData "void FitKernel::addSimulationAndRealData(const GISASSimulation &simulation, const OutputData< double > &real_data, double weight)
-
-Adds pair of (simulation, real data) for consecutive simulation. 
-";
-
-%feature("docstring")  FitKernel::addFitParameter "void FitKernel::addFitParameter(const std::string &name, double value)
-
-Adds fit parameter.
-
-Adds fit parameter, step is calculated from initial parameter value. 
-";
-
-%feature("docstring")  FitKernel::addFitParameter "void FitKernel::addFitParameter(const std::string &name, double value, const RealLimits &lim, const Attributes &attr, double step=0.0, double error=0.0)
-
-Adds fit parameter.
-
-Adds fit parameter, step is calculated from initial parameter value. 
-";
-
-%feature("docstring")  FitKernel::addFitStrategy "void FitKernel::addFitStrategy(const IFitStrategy &strategy)
-
-Adds fit strategy. 
-";
-
-%feature("docstring")  FitKernel::setMinimizer "void FitKernel::setMinimizer(IMinimizer *minimizer)
-
-Sets minimizer. 
-";
-
-%feature("docstring")  FitKernel::getMinimizer "IMinimizer* FitKernel::getMinimizer()
-
-Returns minimizer. 
-";
-
-%feature("docstring")  FitKernel::runFit "void FitKernel::runFit()
-
-Runs a fit, which may consist of several minimization rounds. 
-";
-
-%feature("docstring")  FitKernel::minimize "void FitKernel::minimize()
-
-Runs a single minimization round (called by FitSuiteStrategy) 
-";
-
-%feature("docstring")  FitKernel::getFitObjects "FitSuiteObjects* FitKernel::getFitObjects()
-
-Returns reference to the kit with data. 
-";
-
-%feature("docstring")  FitKernel::getFitObjects "const FitSuiteObjects* FitKernel::getFitObjects() const 
-";
-
-%feature("docstring")  FitKernel::getFitParameters "FitSuiteParameters* FitKernel::getFitParameters()
-
-Returns reference to fit parameters. 
-";
-
-%feature("docstring")  FitKernel::getFitStrategies "FitSuiteStrategies* FitKernel::getFitStrategies()
-
-Returns reference to fit parameters. 
-";
-
-%feature("docstring")  FitKernel::isLastIteration "bool FitKernel::isLastIteration() const
-
-Returns true if the last iteration is done (used by observers to print summary) 
-";
-
-%feature("docstring")  FitKernel::getNCalls "size_t FitKernel::getNCalls() const
-
-Returns current number of minimization function calls. 
-";
-
-%feature("docstring")  FitKernel::getCurrentStrategyIndex "size_t FitKernel::getCurrentStrategyIndex() const
-
-Returns the number of current strategy. 
-";
-
-%feature("docstring")  FitKernel::reportResults "std::string FitKernel::reportResults() const
-
-Reports results of minimization in the form of multi-line string. 
-";
-
-%feature("docstring")  FitKernel::getOptions "FitOptions& FitKernel::getOptions()
-
-Returns current fit options. 
-";
-
-%feature("docstring")  FitKernel::setOptions "void FitKernel::setOptions(const FitOptions &fit_options)
-
-Sets fit options. 
-";
-
-%feature("docstring")  FitKernel::getRunTime "double FitKernel::getRunTime() const
-
-Returns total wall time in seconds which was spend for run fit. 
-";
-
-%feature("docstring")  FitKernel::notifyObservers "void FitKernel::notifyObservers()
-";
-
-%feature("docstring")  FitKernel::interruptFitting "void FitKernel::interruptFitting()
-";
-
-%feature("docstring")  FitKernel::resetInterrupt "void FitKernel::resetInterrupt()
-";
-
-%feature("docstring")  FitKernel::isInterrupted "bool FitKernel::isInterrupted() const 
-";
-
-
 // File: classFitObject.xml
 %feature("docstring") FitObject "
 
@@ -1709,33 +1572,6 @@ Adds parameters from local pool to external pool.
 ";
 
 
-// File: classFitOptions.xml
-%feature("docstring") FitOptions "
-
-General fitting options.
-
-C++ includes: FitOptions.h
-";
-
-%feature("docstring")  FitOptions::FitOptions "FitOptions::FitOptions()
-";
-
-%feature("docstring")  FitOptions::~FitOptions "FitOptions::~FitOptions()
-";
-
-%feature("docstring")  FitOptions::getDerivEpsilon "double FitOptions::getDerivEpsilon() const 
-";
-
-%feature("docstring")  FitOptions::setDerivEpsilon "void FitOptions::setDerivEpsilon(double deriv_epsilon)
-";
-
-%feature("docstring")  FitOptions::getStepFactor "double FitOptions::getStepFactor() const 
-";
-
-%feature("docstring")  FitOptions::setStepFactor "void FitOptions::setStepFactor(double step_factor)
-";
-
-
 // File: classFitParameterLinked.xml
 %feature("docstring") FitParameterLinked "
 
@@ -1998,12 +1834,12 @@ Replaces default  ChiSquaredModule with new one.
 Adds fit strategy. 
 ";
 
-%feature("docstring")  FitSuite::setMinimizer "void FitSuite::setMinimizer(class IMinimizer *minimizer)
+%feature("docstring")  FitSuite::setMinimizer "void FitSuite::setMinimizer(IMinimizer *minimizer)
 
 Sets minimizer. 
 ";
 
-%feature("docstring")  FitSuite::getMinimizer "IMinimizer * FitSuite::getMinimizer()
+%feature("docstring")  FitSuite::minimizer "const IMinimizer * FitSuite::minimizer() const
 
 Returns minimizer. 
 ";
@@ -2082,7 +1918,7 @@ The index of fit object
 returns  FitObject (pair of simulation/real data) 
 ";
 
-%feature("docstring")  FitSuite::getFitParameters "FitSuiteParameters * FitSuite::getFitParameters()
+%feature("docstring")  FitSuite::fitParameters "FitParameterSet * FitSuite::fitParameters()
 
 Returns reference to fit parameters. 
 ";
@@ -2165,7 +2001,7 @@ C++ includes: FitSuiteFunctions.h
 %feature("docstring")  FitSuiteChiSquaredFunction::~FitSuiteChiSquaredFunction "virtual FitSuiteChiSquaredFunction::~FitSuiteChiSquaredFunction()
 ";
 
-%feature("docstring")  FitSuiteChiSquaredFunction::evaluate "double FitSuiteChiSquaredFunction::evaluate(const double *pars)
+%feature("docstring")  FitSuiteChiSquaredFunction::evaluate "double FitSuiteChiSquaredFunction::evaluate(const std::vector< double > &pars)
 
 evaluate method for chi2 value called directly from the minimizer
 
@@ -2187,7 +2023,7 @@ C++ includes: FitSuiteFunctions.h
 %feature("docstring")  FitSuiteGradientFunction::~FitSuiteGradientFunction "virtual FitSuiteGradientFunction::~FitSuiteGradientFunction()
 ";
 
-%feature("docstring")  FitSuiteGradientFunction::evaluate "double FitSuiteGradientFunction::evaluate(const double *pars, unsigned int index, double *gradients)
+%feature("docstring")  FitSuiteGradientFunction::evaluate "double FitSuiteGradientFunction::evaluate(const std::vector< double > &pars, unsigned int index, std::vector< double > &gradients)
 
 evaluate method for gradients and residuals called directly from the minimizer
 
@@ -2201,6 +2037,140 @@ evaluate residual and derivative for given data element
 ";
 
 
+// File: classFitSuiteImp.xml
+%feature("docstring") FitSuiteImp "
+
+Fitting kernel for  FitSuite.
+
+C++ includes: FitSuiteImp.h
+";
+
+%feature("docstring")  FitSuiteImp::FitSuiteImp "FitSuiteImp::FitSuiteImp(const std::function< void()> &notifyObservers)
+";
+
+%feature("docstring")  FitSuiteImp::FitSuiteImp "FitSuiteImp::FitSuiteImp(const FitSuiteImp &)=delete
+";
+
+%feature("docstring")  FitSuiteImp::~FitSuiteImp "FitSuiteImp::~FitSuiteImp()
+";
+
+%feature("docstring")  FitSuiteImp::clear "void FitSuiteImp::clear()
+
+Resets most state variables, to get prepared for the next fit.
+
+Clears all data. 
+";
+
+%feature("docstring")  FitSuiteImp::addSimulationAndRealData "void FitSuiteImp::addSimulationAndRealData(const GISASSimulation &simulation, const OutputData< double > &real_data, double weight)
+
+Adds pair of (simulation, real data) for consecutive simulation. 
+";
+
+%feature("docstring")  FitSuiteImp::addFitParameter "void FitSuiteImp::addFitParameter(const std::string &name, double value)
+
+Adds fit parameter.
+
+Adds fit parameter, step is calculated from initial parameter value. 
+";
+
+%feature("docstring")  FitSuiteImp::addFitParameter "void FitSuiteImp::addFitParameter(const std::string &name, double value, const RealLimits &lim, const Attributes &attr, double step=0.0, double error=0.0)
+
+Adds fit parameter.
+
+Adds fit parameter, step is calculated from initial parameter value. 
+";
+
+%feature("docstring")  FitSuiteImp::addFitStrategy "void FitSuiteImp::addFitStrategy(const IFitStrategy &strategy)
+
+Adds fit strategy. 
+";
+
+%feature("docstring")  FitSuiteImp::setMinimizer "void FitSuiteImp::setMinimizer(IMinimizer *minimizer)
+
+Sets minimizer. 
+";
+
+%feature("docstring")  FitSuiteImp::runFit "void FitSuiteImp::runFit()
+
+Returns minimizer.
+
+Runs a fit, which may consist of several minimization rounds 
+";
+
+%feature("docstring")  FitSuiteImp::minimize "void FitSuiteImp::minimize()
+
+Runs a single minimization round (called by FitSuiteStrategy) 
+";
+
+%feature("docstring")  FitSuiteImp::getFitObjects "FitSuiteObjects* FitSuiteImp::getFitObjects()
+
+Returns reference to the kit with data. 
+";
+
+%feature("docstring")  FitSuiteImp::getFitObjects "const FitSuiteObjects* FitSuiteImp::getFitObjects() const 
+";
+
+%feature("docstring")  FitSuiteImp::getFitParameters "FitParameterSet * FitSuiteImp::getFitParameters()
+
+Returns reference to fit parameters. 
+";
+
+%feature("docstring")  FitSuiteImp::getFitStrategies "FitSuiteStrategies* FitSuiteImp::getFitStrategies()
+
+Returns reference to fit parameters. 
+";
+
+%feature("docstring")  FitSuiteImp::isLastIteration "bool FitSuiteImp::isLastIteration() const
+
+Returns true if the last iteration is done (used by observers to print summary) 
+";
+
+%feature("docstring")  FitSuiteImp::getNCalls "size_t FitSuiteImp::getNCalls() const
+
+Returns current number of minimization function calls. 
+";
+
+%feature("docstring")  FitSuiteImp::getCurrentStrategyIndex "size_t FitSuiteImp::getCurrentStrategyIndex() const
+
+Returns the number of current strategy. 
+";
+
+%feature("docstring")  FitSuiteImp::reportResults "std::string FitSuiteImp::reportResults() const
+
+Reports results of minimization in the form of multi-line string. 
+";
+
+%feature("docstring")  FitSuiteImp::getOptions "FitOptions& FitSuiteImp::getOptions()
+
+Returns current fit options. 
+";
+
+%feature("docstring")  FitSuiteImp::setOptions "void FitSuiteImp::setOptions(const FitOptions &fit_options)
+
+Sets fit options. 
+";
+
+%feature("docstring")  FitSuiteImp::getRunTime "double FitSuiteImp::getRunTime() const
+
+Returns total wall time in seconds which was spend for run fit. 
+";
+
+%feature("docstring")  FitSuiteImp::notifyObservers "void FitSuiteImp::notifyObservers()
+";
+
+%feature("docstring")  FitSuiteImp::interruptFitting "void FitSuiteImp::interruptFitting()
+";
+
+%feature("docstring")  FitSuiteImp::resetInterrupt "void FitSuiteImp::resetInterrupt()
+";
+
+%feature("docstring")  FitSuiteImp::isInterrupted "bool FitSuiteImp::isInterrupted() const 
+";
+
+%feature("docstring")  FitSuiteImp::kernel "const FitKernel * FitSuiteImp::kernel() const 
+";
+
+
 // File: classFitSuiteObjects.xml
 %feature("docstring") FitSuiteObjects "
 
@@ -2343,7 +2313,7 @@ C++ includes: FitSuiteStrategies.h
 %feature("docstring")  FitSuiteStrategies::~FitSuiteStrategies "FitSuiteStrategies::~FitSuiteStrategies()
 ";
 
-%feature("docstring")  FitSuiteStrategies::init "void FitSuiteStrategies::init(FitKernel *fit_suite)
+%feature("docstring")  FitSuiteStrategies::init "void FitSuiteStrategies::init(FitSuiteImp *fit_suite)
 ";
 
 %feature("docstring")  FitSuiteStrategies::addStrategy "void FitSuiteStrategies::addStrategy(IFitStrategy *strategy)
@@ -2474,12 +2444,12 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final
+%feature("docstring")  FormFactorAnisoPyramid::clone "FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorAnisoPyramid::accept "void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorAnisoPyramid::accept "void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2520,12 +2490,12 @@ height:
 of prism 
 ";
 
-%feature("docstring")  FormFactorBox::clone "FormFactorBox* FormFactorBox::clone() const
+%feature("docstring")  FormFactorBox::clone "FormFactorBox* FormFactorBox::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorBox::accept "void FormFactorBox::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorBox::accept "void FormFactorBox::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2539,14 +2509,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorBox::getWidth "double FormFactorBox::getWidth() const 
 ";
 
-%feature("docstring")  FormFactorBox::getRadialExtension "double FormFactorBox::getRadialExtension() const final
+%feature("docstring")  FormFactorBox::getRadialExtension "double FormFactorBox::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorBox::evaluate_for_q "complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorBox::evaluate_for_q "complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -2573,15 +2543,12 @@ alpha:
 angle in radians between base and lateral surface 
 ";
 
-%feature("docstring")  FormFactorCone::~FormFactorCone "virtual FormFactorCone::~FormFactorCone()
-";
-
-%feature("docstring")  FormFactorCone::clone "FormFactorCone* FormFactorCone::clone() const
+%feature("docstring")  FormFactorCone::clone "FormFactorCone* FormFactorCone::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCone::accept "void FormFactorCone::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorCone::accept "void FormFactorCone::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2595,14 +2562,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorCone::getRadius "double FormFactorCone::getRadius() const 
 ";
 
-%feature("docstring")  FormFactorCone::getRadialExtension "double FormFactorCone::getRadialExtension() const final
+%feature("docstring")  FormFactorCone::getRadialExtension "double FormFactorCone::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCone::evaluate_for_q "complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorCone::evaluate_for_q "complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -2629,12 +2596,12 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorCone6::clone "virtual FormFactorCone6* FormFactorCone6::clone() const
+%feature("docstring")  FormFactorCone6::clone "FormFactorCone6* FormFactorCone6::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCone6::accept "virtual void FormFactorCone6::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorCone6::accept "void FormFactorCone6::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2660,35 +2627,35 @@ C++ includes: FormFactorCrystal.h
 %feature("docstring")  FormFactorCrystal::FormFactorCrystal "FormFactorCrystal::FormFactorCrystal(const Lattice &lattice, const IFormFactor &basis_form_factor, const IFormFactor &meso_form_factor)
 ";
 
-%feature("docstring")  FormFactorCrystal::~FormFactorCrystal "FormFactorCrystal::~FormFactorCrystal() final
+%feature("docstring")  FormFactorCrystal::~FormFactorCrystal "FormFactorCrystal::~FormFactorCrystal() overridefinal
 ";
 
-%feature("docstring")  FormFactorCrystal::clone "FormFactorCrystal* FormFactorCrystal::clone() const final
+%feature("docstring")  FormFactorCrystal::clone "FormFactorCrystal* FormFactorCrystal::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCrystal::accept "void FormFactorCrystal::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorCrystal::accept "void FormFactorCrystal::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorCrystal::getVolume "double FormFactorCrystal::getVolume() const final
+%feature("docstring")  FormFactorCrystal::getVolume "double FormFactorCrystal::getVolume() const overridefinal
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorCrystal::getRadialExtension "double FormFactorCrystal::getRadialExtension() const final
+%feature("docstring")  FormFactorCrystal::getRadialExtension "double FormFactorCrystal::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCrystal::evaluate "complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorCrystal::evaluate "complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorCrystal::evaluatePol "Eigen::Matrix2cd FormFactorCrystal::evaluatePol(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorCrystal::evaluatePol "Eigen::Matrix2cd FormFactorCrystal::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -2720,12 +2687,12 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final
+%feature("docstring")  FormFactorCuboctahedron::clone "FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCuboctahedron::accept "void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorCuboctahedron::accept "void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2754,15 +2721,12 @@ C++ includes: FormFactorCylinder.h
 %feature("docstring")  FormFactorCylinder::FormFactorCylinder "FormFactorCylinder::FormFactorCylinder(double radius, double height)
 ";
 
-%feature("docstring")  FormFactorCylinder::~FormFactorCylinder "virtual FormFactorCylinder::~FormFactorCylinder()
-";
-
-%feature("docstring")  FormFactorCylinder::clone "FormFactorCylinder* FormFactorCylinder::clone() const
+%feature("docstring")  FormFactorCylinder::clone "FormFactorCylinder* FormFactorCylinder::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorCylinder::accept "void FormFactorCylinder::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorCylinder::accept "void FormFactorCylinder::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2773,14 +2737,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorCylinder::getRadius "double FormFactorCylinder::getRadius() const 
 ";
 
-%feature("docstring")  FormFactorCylinder::getRadialExtension "double FormFactorCylinder::getRadialExtension() const final
+%feature("docstring")  FormFactorCylinder::getRadialExtension "double FormFactorCylinder::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorCylinder::evaluate_for_q "complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorCylinder::evaluate_for_q "complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -2802,21 +2766,26 @@ Anisotropic Debye-Waller factor.
 Isotropic Debye-Waller factor. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::clone "FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const final
+%feature("docstring")  FormFactorDecoratorDebyeWaller::clone "FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::accept "void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorDecoratorDebyeWaller::accept "void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluate "complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluate "complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
+%feature("docstring")  FormFactorDecoratorDebyeWaller::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorDebyeWaller::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+
+Returns scattering amplitude for matrix interactions. 
+";
+
 
 // File: classFormFactorDecoratorFactor.xml
 %feature("docstring") FormFactorDecoratorFactor "
@@ -2829,21 +2798,26 @@ C++ includes: FormFactorDecoratorFactor.h
 %feature("docstring")  FormFactorDecoratorFactor::FormFactorDecoratorFactor "FormFactorDecoratorFactor::FormFactorDecoratorFactor(const IFormFactor &form_factor, const complex_t factor)
 ";
 
-%feature("docstring")  FormFactorDecoratorFactor::clone "virtual FormFactorDecoratorFactor* FormFactorDecoratorFactor::clone() const
+%feature("docstring")  FormFactorDecoratorFactor::clone "FormFactorDecoratorFactor* FormFactorDecoratorFactor::clone() const override
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorFactor::accept "virtual void FormFactorDecoratorFactor::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorDecoratorFactor::accept "void FormFactorDecoratorFactor::accept(ISampleVisitor *visitor) const override
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorFactor::evaluate "complex_t FormFactorDecoratorFactor::evaluate(const WavevectorInfo &wavevectors) const
+%feature("docstring")  FormFactorDecoratorFactor::evaluate "complex_t FormFactorDecoratorFactor::evaluate(const WavevectorInfo &wavevectors) const override
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
+%feature("docstring")  FormFactorDecoratorFactor::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorFactor::evaluatePol(const WavevectorInfo &wavevectors) const override
+
+Returns scattering amplitude for matrix interactions. 
+";
+
 
 // File: classFormFactorDecoratorMaterial.xml
 %feature("docstring") FormFactorDecoratorMaterial "
@@ -2856,15 +2830,15 @@ C++ includes: FormFactorDecoratorMaterial.h
 %feature("docstring")  FormFactorDecoratorMaterial::FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::FormFactorDecoratorMaterial(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial() final
+%feature("docstring")  FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial "FormFactorDecoratorMaterial::~FormFactorDecoratorMaterial() overridefinal
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::clone "FormFactorDecoratorMaterial * FormFactorDecoratorMaterial::clone() const final
+%feature("docstring")  FormFactorDecoratorMaterial::clone "FormFactorDecoratorMaterial * FormFactorDecoratorMaterial::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::accept "void FormFactorDecoratorMaterial::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorDecoratorMaterial::accept "void FormFactorDecoratorMaterial::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2874,7 +2848,7 @@ Calls the  ISampleVisitor's visit method.
 Sets the material of the scatterer. 
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::setAmbientMaterial "void FormFactorDecoratorMaterial::setAmbientMaterial(const IMaterial &material)
+%feature("docstring")  FormFactorDecoratorMaterial::setAmbientMaterial "void FormFactorDecoratorMaterial::setAmbientMaterial(const IMaterial &material) override
 
 Sets the ambient material. 
 ";
@@ -2882,7 +2856,7 @@ Sets the ambient material.
 %feature("docstring")  FormFactorDecoratorMaterial::getAmbientRefractiveIndex "complex_t FormFactorDecoratorMaterial::getAmbientRefractiveIndex() const 
 ";
 
-%feature("docstring")  FormFactorDecoratorMaterial::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorMaterial::evaluatePol(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorDecoratorMaterial::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorMaterial::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -2899,22 +2873,22 @@ C++ includes: FormFactorDecoratorPositionFactor.h
 %feature("docstring")  FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor "FormFactorDecoratorPositionFactor::FormFactorDecoratorPositionFactor(const IFormFactor &form_factor, const kvector_t &position)
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const final
+%feature("docstring")  FormFactorDecoratorPositionFactor::clone "FormFactorDecoratorPositionFactor* FormFactorDecoratorPositionFactor::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::accept "void FormFactorDecoratorPositionFactor::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorDecoratorPositionFactor::accept "void FormFactorDecoratorPositionFactor::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::evaluate "complex_t FormFactorDecoratorPositionFactor::evaluate(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorDecoratorPositionFactor::evaluate "complex_t FormFactorDecoratorPositionFactor::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorDecoratorPositionFactor::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorPositionFactor::evaluatePol(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorDecoratorPositionFactor::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorPositionFactor::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for matrix interactions. 
 ";
@@ -2933,21 +2907,26 @@ C++ includes: FormFactorDecoratorRotation.h
 Constructor, setting form factor and rotation. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::clone "FormFactorDecoratorRotation * FormFactorDecoratorRotation::clone() const final
+%feature("docstring")  FormFactorDecoratorRotation::clone "FormFactorDecoratorRotation * FormFactorDecoratorRotation::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::accept "void FormFactorDecoratorRotation::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorDecoratorRotation::accept "void FormFactorDecoratorRotation::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDecoratorRotation::evaluate "complex_t FormFactorDecoratorRotation::evaluate(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorDecoratorRotation::evaluate "complex_t FormFactorDecoratorRotation::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
+%feature("docstring")  FormFactorDecoratorRotation::evaluatePol "Eigen::Matrix2cd FormFactorDecoratorRotation::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
+
+Returns scattering amplitude for matrix interactions. 
+";
+
 
 // File: classFormFactorDodecahedron.xml
 %feature("docstring") FormFactorDodecahedron "
@@ -2968,12 +2947,12 @@ edge:
 length 
 ";
 
-%feature("docstring")  FormFactorDodecahedron::clone "FormFactorDodecahedron* FormFactorDodecahedron::clone() const final
+%feature("docstring")  FormFactorDodecahedron::clone "FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDodecahedron::accept "void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorDodecahedron::accept "void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -2985,7 +2964,7 @@ Calls the  ISampleVisitor's visit method.
 // File: classFormFactorDWBA.xml
 %feature("docstring") FormFactorDWBA "
 
-Evaluates the coherent sum of the four DWBA terms in a scalar  IFormFactorDecorator.
+Evaluates the coherent sum of the four DWBA terms in a scalar  IFormFactor.
 
 C++ includes: FormFactorDWBA.h
 ";
@@ -2993,27 +2972,37 @@ C++ includes: FormFactorDWBA.h
 %feature("docstring")  FormFactorDWBA::FormFactorDWBA "FormFactorDWBA::FormFactorDWBA(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  FormFactorDWBA::~FormFactorDWBA "FormFactorDWBA::~FormFactorDWBA()
+%feature("docstring")  FormFactorDWBA::~FormFactorDWBA "FormFactorDWBA::~FormFactorDWBA() override
 ";
 
-%feature("docstring")  FormFactorDWBA::clone "FormFactorDWBA * FormFactorDWBA::clone() const
+%feature("docstring")  FormFactorDWBA::clone "FormFactorDWBA * FormFactorDWBA::clone() const override
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDWBA::accept "void FormFactorDWBA::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorDWBA::accept "void FormFactorDWBA::accept(ISampleVisitor *visitor) const override
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs)
+%feature("docstring")  FormFactorDWBA::evaluate "complex_t FormFactorDWBA::evaluate(const WavevectorInfo &wavevectors) const override
 
-Sets reflection/transmission info for scalar DWBA simulation. 
+Calculates and returns a form factor calculation in DWBA. 
 ";
 
-%feature("docstring")  FormFactorDWBA::evaluate "complex_t FormFactorDWBA::evaluate(const WavevectorInfo &wavevectors) const
+%feature("docstring")  FormFactorDWBA::getVolume "double FormFactorDWBA::getVolume() const override
 
-Returns scattering amplitude for complex wavevectors ki, kf. 
+Returns the total volume of the particle of this form factor's shape. 
+";
+
+%feature("docstring")  FormFactorDWBA::getRadialExtension "double FormFactorDWBA::getRadialExtension() const override
+
+Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
+";
+
+%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs) override
+
+Sets reflection/transmission info for scalar DWBA simulation. 
 ";
 
 
@@ -3028,40 +3017,40 @@ C++ includes: FormFactorDWBAPol.h
 %feature("docstring")  FormFactorDWBAPol::FormFactorDWBAPol "FormFactorDWBAPol::FormFactorDWBAPol(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  FormFactorDWBAPol::~FormFactorDWBAPol "FormFactorDWBAPol::~FormFactorDWBAPol()
+%feature("docstring")  FormFactorDWBAPol::~FormFactorDWBAPol "FormFactorDWBAPol::~FormFactorDWBAPol() override
 ";
 
-%feature("docstring")  FormFactorDWBAPol::clone "FormFactorDWBAPol * FormFactorDWBAPol::clone() const
+%feature("docstring")  FormFactorDWBAPol::clone "FormFactorDWBAPol * FormFactorDWBAPol::clone() const override
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::accept "void FormFactorDWBAPol::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorDWBAPol::accept "void FormFactorDWBAPol::accept(ISampleVisitor *visitor) const override
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::evaluate "complex_t FormFactorDWBAPol::evaluate(const WavevectorInfo &wavevectors) const
+%feature("docstring")  FormFactorDWBAPol::evaluate "complex_t FormFactorDWBAPol::evaluate(const WavevectorInfo &wavevectors) const override
 
 Throws not-implemented exception. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::evaluatePol "Eigen::Matrix2cd FormFactorDWBAPol::evaluatePol(const WavevectorInfo &wavevectors) const
+%feature("docstring")  FormFactorDWBAPol::evaluatePol "Eigen::Matrix2cd FormFactorDWBAPol::evaluatePol(const WavevectorInfo &wavevectors) const override
 
 Calculates and returns a polarized form factor calculation in DWBA. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::getVolume "double FormFactorDWBAPol::getVolume() const final
+%feature("docstring")  FormFactorDWBAPol::getVolume "double FormFactorDWBAPol::getVolume() const override
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::getRadialExtension "double FormFactorDWBAPol::getRadialExtension() const final
+%feature("docstring")  FormFactorDWBAPol::getRadialExtension "double FormFactorDWBAPol::getRadialExtension() const override
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs)
+%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs) override
 
 Sets reflection/transmission info for scalar DWBA simulation. 
 ";
@@ -3089,12 +3078,12 @@ half length of the other horizontal main axes
 height: 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const
+%feature("docstring")  FormFactorEllipsoidalCylinder::clone "FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::accept "void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorEllipsoidalCylinder::accept "void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3108,14 +3097,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorEllipsoidalCylinder::getHeight "double FormFactorEllipsoidalCylinder::getHeight() const 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::getRadialExtension "double FormFactorEllipsoidalCylinder::getRadialExtension() const final
+%feature("docstring")  FormFactorEllipsoidalCylinder::getRadialExtension "double FormFactorEllipsoidalCylinder::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorEllipsoidalCylinder::evaluate_for_q "complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorEllipsoidalCylinder::evaluate_for_q "complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3130,12 +3119,12 @@ C++ includes: FormFactorFullSphere.h
 %feature("docstring")  FormFactorFullSphere::FormFactorFullSphere "FormFactorFullSphere::FormFactorFullSphere(double radius)
 ";
 
-%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const
+%feature("docstring")  FormFactorFullSphere::clone "FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorFullSphere::accept "void FormFactorFullSphere::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorFullSphere::accept "void FormFactorFullSphere::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3143,14 +3132,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorFullSphere::getRadius "double FormFactorFullSphere::getRadius() const 
 ";
 
-%feature("docstring")  FormFactorFullSphere::getRadialExtension "double FormFactorFullSphere::getRadialExtension() const final
+%feature("docstring")  FormFactorFullSphere::getRadialExtension "double FormFactorFullSphere::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorFullSphere::evaluate_for_q "complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorFullSphere::evaluate_for_q "complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3174,12 +3163,12 @@ height:
 total height of the spheroid, i.e. twice the radius of the third axis 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const
+%feature("docstring")  FormFactorFullSpheroid::clone "FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::accept "void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorFullSpheroid::accept "void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3190,14 +3179,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorFullSpheroid::getRadius "double FormFactorFullSpheroid::getRadius() const 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::getRadialExtension "double FormFactorFullSpheroid::getRadialExtension() const final
+%feature("docstring")  FormFactorFullSpheroid::getRadialExtension "double FormFactorFullSpheroid::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorFullSpheroid::evaluate_for_q "complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorFullSpheroid::evaluate_for_q "complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3215,12 +3204,12 @@ C++ includes: FormFactorGauss.h
 %feature("docstring")  FormFactorGauss::FormFactorGauss "FormFactorGauss::FormFactorGauss(double width, double height)
 ";
 
-%feature("docstring")  FormFactorGauss::clone "FormFactorGauss* FormFactorGauss::clone() const final
+%feature("docstring")  FormFactorGauss::clone "FormFactorGauss* FormFactorGauss::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorGauss::accept "void FormFactorGauss::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorGauss::accept "void FormFactorGauss::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3231,14 +3220,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorGauss::getHeight "double FormFactorGauss::getHeight() const 
 ";
 
-%feature("docstring")  FormFactorGauss::getRadialExtension "double FormFactorGauss::getRadialExtension() const final
+%feature("docstring")  FormFactorGauss::getRadialExtension "double FormFactorGauss::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorGauss::evaluate_for_q "complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorGauss::evaluate_for_q "complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3268,12 +3257,12 @@ of the hemi ellipsoid
 %feature("docstring")  FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid "virtual FormFactorHemiEllipsoid::~FormFactorHemiEllipsoid()
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const
+%feature("docstring")  FormFactorHemiEllipsoid::clone "FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::accept "void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorHemiEllipsoid::accept "void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3287,14 +3276,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorHemiEllipsoid::getRadiusY "double FormFactorHemiEllipsoid::getRadiusY() const 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::getRadialExtension "double FormFactorHemiEllipsoid::getRadialExtension() const final
+%feature("docstring")  FormFactorHemiEllipsoid::getRadialExtension "double FormFactorHemiEllipsoid::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorHemiEllipsoid::evaluate_for_q "complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorHemiEllipsoid::evaluate_for_q "complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3309,12 +3298,12 @@ C++ includes: FormFactorIcosahedron.h
 %feature("docstring")  FormFactorIcosahedron::FormFactorIcosahedron "FormFactorIcosahedron::FormFactorIcosahedron(double edge)
 ";
 
-%feature("docstring")  FormFactorIcosahedron::clone "FormFactorIcosahedron* FormFactorIcosahedron::clone() const final
+%feature("docstring")  FormFactorIcosahedron::clone "FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorIcosahedron::accept "void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorIcosahedron::accept "void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3366,12 +3355,12 @@ height:
 of Box 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const
+%feature("docstring")  FormFactorLongBoxGauss::clone "FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::accept "void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongBoxGauss::accept "void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3385,14 +3374,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLongBoxGauss::getWidth "double FormFactorLongBoxGauss::getWidth() const 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::getRadialExtension "double FormFactorLongBoxGauss::getRadialExtension() const final
+%feature("docstring")  FormFactorLongBoxGauss::getRadialExtension "double FormFactorLongBoxGauss::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongBoxGauss::evaluate_for_q "complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongBoxGauss::evaluate_for_q "complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3421,12 +3410,12 @@ height:
 of Box 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const
+%feature("docstring")  FormFactorLongBoxLorentz::clone "FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::accept "void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongBoxLorentz::accept "void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3440,14 +3429,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLongBoxLorentz::getWidth "double FormFactorLongBoxLorentz::getWidth() const 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::getRadialExtension "double FormFactorLongBoxLorentz::getRadialExtension() const final
+%feature("docstring")  FormFactorLongBoxLorentz::getRadialExtension "double FormFactorLongBoxLorentz::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongBoxLorentz::evaluate_for_q "complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongBoxLorentz::evaluate_for_q "complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3476,15 +3465,12 @@ height:
 of cosine cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::~FormFactorLongRipple1Gauss "virtual FormFactorLongRipple1Gauss::~FormFactorLongRipple1Gauss()
-";
-
-%feature("docstring")  FormFactorLongRipple1Gauss::clone "FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const
+%feature("docstring")  FormFactorLongRipple1Gauss::clone "FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::accept "void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongRipple1Gauss::accept "void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3498,12 +3484,12 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLongRipple1Gauss::getLength "double FormFactorLongRipple1Gauss::getLength() const 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::getRadialExtension "double FormFactorLongRipple1Gauss::getRadialExtension() const final
+%feature("docstring")  FormFactorLongRipple1Gauss::getRadialExtension "double FormFactorLongRipple1Gauss::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Gauss::evaluate_for_q "complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongRipple1Gauss::evaluate_for_q "complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -3534,20 +3520,17 @@ height:
 of cosine cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::~FormFactorLongRipple1Lorentz "virtual FormFactorLongRipple1Lorentz::~FormFactorLongRipple1Lorentz()
-";
-
-%feature("docstring")  FormFactorLongRipple1Lorentz::clone "FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const
+%feature("docstring")  FormFactorLongRipple1Lorentz::clone "FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::accept "void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongRipple1Lorentz::accept "void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::getRadialExtension "double FormFactorLongRipple1Lorentz::getRadialExtension() const final
+%feature("docstring")  FormFactorLongRipple1Lorentz::getRadialExtension "double FormFactorLongRipple1Lorentz::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -3561,7 +3544,7 @@ Returns the (approximate in some cases) radial size of the particle of this form
 %feature("docstring")  FormFactorLongRipple1Lorentz::getLength "double FormFactorLongRipple1Lorentz::getLength() const 
 ";
 
-%feature("docstring")  FormFactorLongRipple1Lorentz::evaluate_for_q "complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongRipple1Lorentz::evaluate_for_q "complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -3595,15 +3578,12 @@ asymmetry:
 length of triangular cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::~FormFactorLongRipple2Gauss "virtual FormFactorLongRipple2Gauss::~FormFactorLongRipple2Gauss()
-";
-
-%feature("docstring")  FormFactorLongRipple2Gauss::clone "FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const
+%feature("docstring")  FormFactorLongRipple2Gauss::clone "FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::accept "void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongRipple2Gauss::accept "void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3620,12 +3600,12 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLongRipple2Gauss::getAsymmetry "double FormFactorLongRipple2Gauss::getAsymmetry() const 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::getRadialExtension "double FormFactorLongRipple2Gauss::getRadialExtension() const final
+%feature("docstring")  FormFactorLongRipple2Gauss::getRadialExtension "double FormFactorLongRipple2Gauss::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Gauss::evaluate_for_q "complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongRipple2Gauss::evaluate_for_q "complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -3657,15 +3637,12 @@ asymmetry:
 length of triangular cross section 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::~FormFactorLongRipple2Lorentz "virtual FormFactorLongRipple2Lorentz::~FormFactorLongRipple2Lorentz()
-";
-
-%feature("docstring")  FormFactorLongRipple2Lorentz::clone "FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const
+%feature("docstring")  FormFactorLongRipple2Lorentz::clone "FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::accept "void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLongRipple2Lorentz::accept "void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3682,12 +3659,12 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLongRipple2Lorentz::getAsymmetry "double FormFactorLongRipple2Lorentz::getAsymmetry() const 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::getRadialExtension "double FormFactorLongRipple2Lorentz::getRadialExtension() const final
+%feature("docstring")  FormFactorLongRipple2Lorentz::getRadialExtension "double FormFactorLongRipple2Lorentz::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLongRipple2Lorentz::evaluate_for_q "complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLongRipple2Lorentz::evaluate_for_q "complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -3707,12 +3684,12 @@ C++ includes: FormFactorLorentz.h
 %feature("docstring")  FormFactorLorentz::FormFactorLorentz "FormFactorLorentz::FormFactorLorentz(double width, double height)
 ";
 
-%feature("docstring")  FormFactorLorentz::clone "FormFactorLorentz* FormFactorLorentz::clone() const final
+%feature("docstring")  FormFactorLorentz::clone "FormFactorLorentz* FormFactorLorentz::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorLorentz::accept "void FormFactorLorentz::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorLorentz::accept "void FormFactorLorentz::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3723,14 +3700,14 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorLorentz::getHeight "double FormFactorLorentz::getHeight() const 
 ";
 
-%feature("docstring")  FormFactorLorentz::getRadialExtension "double FormFactorLorentz::getRadialExtension() const final
+%feature("docstring")  FormFactorLorentz::getRadialExtension "double FormFactorLorentz::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorLorentz::evaluate_for_q "complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorLorentz::evaluate_for_q "complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -3745,7 +3722,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolygonalPrism::FormFactorPolygonalPrism "FormFactorPolygonalPrism::FormFactorPolygonalPrism(const double height)
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::evaluate_for_q "complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorPolygonalPrism::evaluate_for_q "complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const overridefinal
 
 Returns the form factor F(q) of this polyhedron, respecting the offset height/2. 
 ";
@@ -3758,7 +3735,7 @@ Returns the volume of this prism.
 %feature("docstring")  FormFactorPolygonalPrism::getHeight "double FormFactorPolygonalPrism::getHeight() const 
 ";
 
-%feature("docstring")  FormFactorPolygonalPrism::getRadialExtension "double FormFactorPolygonalPrism::getRadialExtension() const final
+%feature("docstring")  FormFactorPolygonalPrism::getRadialExtension "double FormFactorPolygonalPrism::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -3775,17 +3752,17 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolygonalSurface::FormFactorPolygonalSurface "FormFactorPolygonalSurface::FormFactorPolygonalSurface()
 ";
 
-%feature("docstring")  FormFactorPolygonalSurface::evaluate_for_q "complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorPolygonalSurface::evaluate_for_q "complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
-%feature("docstring")  FormFactorPolygonalSurface::getVolume "double FormFactorPolygonalSurface::getVolume() const
+%feature("docstring")  FormFactorPolygonalSurface::getVolume "double FormFactorPolygonalSurface::getVolume() const override
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorPolygonalSurface::getRadialExtension "double FormFactorPolygonalSurface::getRadialExtension() const final
+%feature("docstring")  FormFactorPolygonalSurface::getRadialExtension "double FormFactorPolygonalSurface::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -3802,12 +3779,7 @@ C++ includes: FormFactorPolyhedron.h
 %feature("docstring")  FormFactorPolyhedron::FormFactorPolyhedron "FormFactorPolyhedron::FormFactorPolyhedron()
 ";
 
-%feature("docstring")  FormFactorPolyhedron::onChange "virtual void FormFactorPolyhedron::onChange()=0
-
-Action to be taken in inherited class when a parameter has changed. 
-";
-
-%feature("docstring")  FormFactorPolyhedron::evaluate_for_q "complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorPolyhedron::evaluate_for_q "complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const overridefinal
 
 Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. 
 ";
@@ -3817,12 +3789,12 @@ Returns the form factor F(q) of this polyhedron, respecting the offset z_origin.
 Returns the form factor F(q) of this polyhedron, with origin at z=0. 
 ";
 
-%feature("docstring")  FormFactorPolyhedron::getVolume "double FormFactorPolyhedron::getVolume() const final
+%feature("docstring")  FormFactorPolyhedron::getVolume "double FormFactorPolyhedron::getVolume() const overridefinal
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  FormFactorPolyhedron::getRadialExtension "double FormFactorPolyhedron::getRadialExtension() const final
+%feature("docstring")  FormFactorPolyhedron::getRadialExtension "double FormFactorPolyhedron::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -3844,12 +3816,12 @@ C++ includes: FormFactorPrism3.h
 %feature("docstring")  FormFactorPrism3::FormFactorPrism3 "FormFactorPrism3::FormFactorPrism3(const double base_edge, const double height)
 ";
 
-%feature("docstring")  FormFactorPrism3::clone "virtual FormFactorPrism3* FormFactorPrism3::clone() const
+%feature("docstring")  FormFactorPrism3::clone "FormFactorPrism3* FormFactorPrism3::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPrism3::accept "virtual void FormFactorPrism3::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorPrism3::accept "void FormFactorPrism3::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3869,17 +3841,17 @@ C++ includes: FormFactorPrism6.h
 %feature("docstring")  FormFactorPrism6::FormFactorPrism6 "FormFactorPrism6::FormFactorPrism6(const double base_edge, const double height)
 ";
 
-%feature("docstring")  FormFactorPrism6::clone "virtual FormFactorPrism6* FormFactorPrism6::clone() const
+%feature("docstring")  FormFactorPrism6::clone "FormFactorPrism6* FormFactorPrism6::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPrism6::accept "virtual void FormFactorPrism6::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorPrism6::accept "void FormFactorPrism6::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorPrism6::getBaseEdge "virtual double FormFactorPrism6::getBaseEdge() const 
+%feature("docstring")  FormFactorPrism6::getBaseEdge "double FormFactorPrism6::getBaseEdge() const 
 ";
 
 
@@ -3906,12 +3878,12 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const final
+%feature("docstring")  FormFactorPyramid::clone "FormFactorPyramid* FormFactorPyramid::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorPyramid::accept "void FormFactorPyramid::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorPyramid::accept "void FormFactorPyramid::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3951,15 +3923,12 @@ height:
 of cosine cross section 
 ";
 
-%feature("docstring")  FormFactorRipple1::~FormFactorRipple1 "virtual FormFactorRipple1::~FormFactorRipple1()
-";
-
-%feature("docstring")  FormFactorRipple1::clone "FormFactorRipple1* FormFactorRipple1::clone() const
+%feature("docstring")  FormFactorRipple1::clone "FormFactorRipple1* FormFactorRipple1::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple1::accept "void FormFactorRipple1::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorRipple1::accept "void FormFactorRipple1::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -3973,12 +3942,12 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorRipple1::getWidth "double FormFactorRipple1::getWidth() const 
 ";
 
-%feature("docstring")  FormFactorRipple1::getRadialExtension "double FormFactorRipple1::getRadialExtension() const final
+%feature("docstring")  FormFactorRipple1::getRadialExtension "double FormFactorRipple1::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorRipple1::evaluate_for_q "complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorRipple1::evaluate_for_q "complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -4012,15 +3981,12 @@ asymmetry:
 length of triangular cross section 
 ";
 
-%feature("docstring")  FormFactorRipple2::~FormFactorRipple2 "virtual FormFactorRipple2::~FormFactorRipple2()
-";
-
-%feature("docstring")  FormFactorRipple2::clone "FormFactorRipple2* FormFactorRipple2::clone() const
+%feature("docstring")  FormFactorRipple2::clone "FormFactorRipple2* FormFactorRipple2::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorRipple2::accept "void FormFactorRipple2::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorRipple2::accept "void FormFactorRipple2::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4037,12 +4003,12 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorRipple2::getAsymmetry "double FormFactorRipple2::getAsymmetry() const 
 ";
 
-%feature("docstring")  FormFactorRipple2::getRadialExtension "double FormFactorRipple2::getRadialExtension() const final
+%feature("docstring")  FormFactorRipple2::getRadialExtension "double FormFactorRipple2::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorRipple2::evaluate_for_q "complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorRipple2::evaluate_for_q "complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const overridefinal
 
 Complex formfactor. 
 ";
@@ -4059,27 +4025,24 @@ C++ includes: FormFactorSphereGaussianRadius.h
 %feature("docstring")  FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::FormFactorSphereGaussianRadius(double mean, double sigma)
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::~FormFactorSphereGaussianRadius "FormFactorSphereGaussianRadius::~FormFactorSphereGaussianRadius()
-";
-
-%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final
+%feature("docstring")  FormFactorSphereGaussianRadius::clone "FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::accept "void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorSphereGaussianRadius::accept "void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::getRadialExtension "double FormFactorSphereGaussianRadius::getRadialExtension() const final
+%feature("docstring")  FormFactorSphereGaussianRadius::getRadialExtension "double FormFactorSphereGaussianRadius::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereGaussianRadius::evaluate_for_q "complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorSphereGaussianRadius::evaluate_for_q "complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -4094,27 +4057,24 @@ C++ includes: FormFactorSphereLogNormalRadius.h
 %feature("docstring")  FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius "FormFactorSphereLogNormalRadius::FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples)
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::~FormFactorSphereLogNormalRadius "FormFactorSphereLogNormalRadius::~FormFactorSphereLogNormalRadius() final
-";
-
-%feature("docstring")  FormFactorSphereLogNormalRadius::clone "FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const final
+%feature("docstring")  FormFactorSphereLogNormalRadius::clone "FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::accept "void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorSphereLogNormalRadius::accept "void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::getRadialExtension "double FormFactorSphereLogNormalRadius::getRadialExtension() const final
+%feature("docstring")  FormFactorSphereLogNormalRadius::getRadialExtension "double FormFactorSphereLogNormalRadius::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereLogNormalRadius::evaluate_for_q "complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorSphereLogNormalRadius::evaluate_for_q "complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -4129,24 +4089,24 @@ C++ includes: FormFactorSphereUniformRadius.h
 %feature("docstring")  FormFactorSphereUniformRadius::FormFactorSphereUniformRadius "FormFactorSphereUniformRadius::FormFactorSphereUniformRadius(double mean, double full_width)
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::clone "FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const final
+%feature("docstring")  FormFactorSphereUniformRadius::clone "FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::accept "void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorSphereUniformRadius::accept "void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::getRadialExtension "double FormFactorSphereUniformRadius::getRadialExtension() const final
+%feature("docstring")  FormFactorSphereUniformRadius::getRadialExtension "double FormFactorSphereUniformRadius::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorSphereUniformRadius::evaluate_for_q "complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorSphereUniformRadius::evaluate_for_q "complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -4173,12 +4133,12 @@ alpha:
 dihedral angle in radians between base and facet 
 ";
 
-%feature("docstring")  FormFactorTetrahedron::clone "virtual FormFactorTetrahedron* FormFactorTetrahedron::clone() const
+%feature("docstring")  FormFactorTetrahedron::clone "FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTetrahedron::accept "virtual void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorTetrahedron::accept "void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4204,12 +4164,12 @@ C++ includes: FormFactorTriangle.h
 %feature("docstring")  FormFactorTriangle::FormFactorTriangle "FormFactorTriangle::FormFactorTriangle(const double base_edge)
 ";
 
-%feature("docstring")  FormFactorTriangle::clone "virtual FormFactorTriangle* FormFactorTriangle::clone() const
+%feature("docstring")  FormFactorTriangle::clone "FormFactorTriangle* FormFactorTriangle::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTriangle::accept "virtual void FormFactorTriangle::accept(ISampleVisitor *visitor) const
+%feature("docstring")  FormFactorTriangle::accept "void FormFactorTriangle::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4229,24 +4189,24 @@ C++ includes: FormFactorTrivial.h
 %feature("docstring")  FormFactorTrivial::FormFactorTrivial "FormFactorTrivial::FormFactorTrivial()
 ";
 
-%feature("docstring")  FormFactorTrivial::clone "FormFactorTrivial* FormFactorTrivial::clone() const
+%feature("docstring")  FormFactorTrivial::clone "FormFactorTrivial* FormFactorTrivial::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTrivial::accept "void FormFactorTrivial::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorTrivial::accept "void FormFactorTrivial::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorTrivial::getRadialExtension "double FormFactorTrivial::getRadialExtension() const final
+%feature("docstring")  FormFactorTrivial::getRadialExtension "double FormFactorTrivial::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorTrivial::evaluate_for_q "complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const final
+%feature("docstring")  FormFactorTrivial::evaluate_for_q "complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -4270,12 +4230,12 @@ removed_length:
 as removed from each edge of the cube 
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final
+%feature("docstring")  FormFactorTruncatedCube::clone "FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedCube::accept "void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorTruncatedCube::accept "void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4298,15 +4258,12 @@ C++ includes: FormFactorTruncatedSphere.h
 %feature("docstring")  FormFactorTruncatedSphere::FormFactorTruncatedSphere "FormFactorTruncatedSphere::FormFactorTruncatedSphere(double radius, double height)
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::~FormFactorTruncatedSphere "FormFactorTruncatedSphere::~FormFactorTruncatedSphere()
-";
-
-%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const
+%feature("docstring")  FormFactorTruncatedSphere::clone "FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::accept "void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorTruncatedSphere::accept "void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4317,11 +4274,16 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorTruncatedSphere::getRadius "double FormFactorTruncatedSphere::getRadius() const 
 ";
 
-%feature("docstring")  FormFactorTruncatedSphere::getRadialExtension "double FormFactorTruncatedSphere::getRadialExtension() const final
+%feature("docstring")  FormFactorTruncatedSphere::getRadialExtension "double FormFactorTruncatedSphere::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
+%feature("docstring")  FormFactorTruncatedSphere::evaluate_for_q "complex_t FormFactorTruncatedSphere::evaluate_for_q(const cvector_t q) const overridefinal
+
+Complex formfactor. 
+";
+
 
 // File: classFormFactorTruncatedSpheroid.xml
 %feature("docstring") FormFactorTruncatedSpheroid "
@@ -4334,15 +4296,12 @@ C++ includes: FormFactorTruncatedSpheroid.h
 %feature("docstring")  FormFactorTruncatedSpheroid::FormFactorTruncatedSpheroid "FormFactorTruncatedSpheroid::FormFactorTruncatedSpheroid(double radius, double height, double height_flattening)
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::~FormFactorTruncatedSpheroid "virtual FormFactorTruncatedSpheroid::~FormFactorTruncatedSpheroid()
-";
-
-%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const
+%feature("docstring")  FormFactorTruncatedSpheroid::clone "FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::accept "void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorTruncatedSpheroid::accept "void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -4356,23 +4315,23 @@ Calls the  ISampleVisitor's visit method.
 %feature("docstring")  FormFactorTruncatedSpheroid::getHeightFlattening "double FormFactorTruncatedSpheroid::getHeightFlattening() const 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::getRadialExtension "double FormFactorTruncatedSpheroid::getRadialExtension() const final
+%feature("docstring")  FormFactorTruncatedSpheroid::getRadialExtension "double FormFactorTruncatedSpheroid::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
 
-%feature("docstring")  FormFactorTruncatedSpheroid::evaluate_for_q "complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const final
+%feature("docstring")  FormFactorTruncatedSpheroid::evaluate_for_q "complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const overridefinal
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
 // File: classFormFactorWeighted.xml
 %feature("docstring") FormFactorWeighted "
 
-Coherent sum of different scalar  IFormFactor's with different weights, at the same position.
+Coherent sum of different scalar  IFormFactor's with different weights.
 
-Used by  ParticleComposition and  ParticleCoreShell. If particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
+Used by  ParticleComposition and  ParticleCoreShell. If same particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
 
 C++ includes: FormFactorWeighted.h
 ";
@@ -4380,20 +4339,20 @@ C++ includes: FormFactorWeighted.h
 %feature("docstring")  FormFactorWeighted::FormFactorWeighted "FormFactorWeighted::FormFactorWeighted()
 ";
 
-%feature("docstring")  FormFactorWeighted::~FormFactorWeighted "FormFactorWeighted::~FormFactorWeighted() final
+%feature("docstring")  FormFactorWeighted::~FormFactorWeighted "FormFactorWeighted::~FormFactorWeighted() overridefinal
 ";
 
-%feature("docstring")  FormFactorWeighted::clone "FormFactorWeighted * FormFactorWeighted::clone() const final
+%feature("docstring")  FormFactorWeighted::clone "FormFactorWeighted * FormFactorWeighted::clone() const overridefinal
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  FormFactorWeighted::accept "void FormFactorWeighted::accept(ISampleVisitor *visitor) const final
+%feature("docstring")  FormFactorWeighted::accept "void FormFactorWeighted::accept(ISampleVisitor *visitor) const overridefinal
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  FormFactorWeighted::getRadialExtension "double FormFactorWeighted::getRadialExtension() const final
+%feature("docstring")  FormFactorWeighted::getRadialExtension "double FormFactorWeighted::getRadialExtension() const overridefinal
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -4401,17 +4360,17 @@ Returns the (approximate in some cases) radial size of the particle of this form
 %feature("docstring")  FormFactorWeighted::addFormFactor "void FormFactorWeighted::addFormFactor(const IFormFactor &form_factor, double weight=1.0)
 ";
 
-%feature("docstring")  FormFactorWeighted::setAmbientMaterial "void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) final
+%feature("docstring")  FormFactorWeighted::setAmbientMaterial "void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) overridefinal
 
 Passes the refractive index of the ambient material in which this particle is embedded. 
 ";
 
-%feature("docstring")  FormFactorWeighted::evaluate "complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorWeighted::evaluate "complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
-%feature("docstring")  FormFactorWeighted::evaluatePol "Eigen::Matrix2cd FormFactorWeighted::evaluatePol(const WavevectorInfo &wavevectors) const final
+%feature("docstring")  FormFactorWeighted::evaluatePol "Eigen::Matrix2cd FormFactorWeighted::evaluatePol(const WavevectorInfo &wavevectors) const overridefinal
 
 Calculates and returns a polarized form factor calculation in DWBA. 
 ";
@@ -5920,7 +5879,7 @@ C++ includes: IFitStrategy.h
 %feature("docstring")  IFitStrategy::~IFitStrategy "virtual IFitStrategy::~IFitStrategy()
 ";
 
-%feature("docstring")  IFitStrategy::init "void IFitStrategy::init(FitKernel *fit_suite)
+%feature("docstring")  IFitStrategy::init "void IFitStrategy::init(FitSuiteImp *fit_suite)
 ";
 
 %feature("docstring")  IFitStrategy::execute "virtual void IFitStrategy::execute()=0
@@ -5941,7 +5900,7 @@ C++ includes: FitSuiteFunctions.h
 %feature("docstring")  IFitSuiteFunction::~IFitSuiteFunction "virtual IFitSuiteFunction::~IFitSuiteFunction()
 ";
 
-%feature("docstring")  IFitSuiteFunction::init "virtual void IFitSuiteFunction::init(FitKernel *fit_suite)
+%feature("docstring")  IFitSuiteFunction::init "virtual void IFitSuiteFunction::init(FitSuiteImp *fit_suite)
 ";
 
 %feature("docstring")  IFitSuiteFunction::getNCalls "virtual size_t IFitSuiteFunction::getNCalls() const 
@@ -5955,7 +5914,7 @@ Pure virtual base class for all form factors.
 
 The actual form factor is returned by the complex valued function  IFormFactor::evaluate, which depends on the incoming and outgoing wave vectors ki and kf. If it only depends on the scattering vector q=ki-kf, then it is a IBornFormFactor.
 
-Other children besides IBornFormFactor are  IFormFactorDecorator,  FormFactorWeighted,  FormFactorDWBAPol,  FormFactorCrystal.
+Other children besides IBornFormFactor are  IFormFactorDecorator,  FormFactorWeighted,  FormFactorDWBA,  FormFactorDWBAPol and  FormFactorCrystal.
 
 C++ includes: IFormFactor.h
 ";
@@ -5963,15 +5922,15 @@ C++ includes: IFormFactor.h
 %feature("docstring")  IFormFactor::IFormFactor "IFormFactor::IFormFactor()
 ";
 
-%feature("docstring")  IFormFactor::~IFormFactor "IFormFactor::~IFormFactor()
+%feature("docstring")  IFormFactor::~IFormFactor "IFormFactor::~IFormFactor() override
 ";
 
-%feature("docstring")  IFormFactor::clone "virtual IFormFactor* IFormFactor::clone() const =0
+%feature("docstring")  IFormFactor::clone "IFormFactor* IFormFactor::clone() const override=0
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  IFormFactor::accept "virtual void IFormFactor::accept(ISampleVisitor *visitor) const =0
+%feature("docstring")  IFormFactor::accept "void IFormFactor::accept(ISampleVisitor *visitor) const override=0
 
 Calls the  ISampleVisitor's visit method. 
 ";
@@ -6010,7 +5969,9 @@ Sets reflection/transmission info.
 // File: classIFormFactorBorn.xml
 %feature("docstring") IFormFactorBorn "
 
-Pure virtual base class for Born form factors. In contrast to the generic  IFormFactor, a Born form factor does not depend on the incoming and outgoing wave vectors ki and kf, except through their difference, the scattering vector q=ki-kf.
+Pure virtual base class for Born form factors.
+
+In contrast to the generic  IFormFactor, a Born form factor does not depend on the incoming and outgoing wave vectors ki and kf, except through their difference, the scattering vector q=ki-kf.
 
 C++ includes: IFormFactorBorn.h
 ";
@@ -6018,22 +5979,27 @@ C++ includes: IFormFactorBorn.h
 %feature("docstring")  IFormFactorBorn::IFormFactorBorn "IFormFactorBorn::IFormFactorBorn()
 ";
 
-%feature("docstring")  IFormFactorBorn::~IFormFactorBorn "virtual IFormFactorBorn::~IFormFactorBorn()
+%feature("docstring")  IFormFactorBorn::~IFormFactorBorn "IFormFactorBorn::~IFormFactorBorn() override
 ";
 
-%feature("docstring")  IFormFactorBorn::clone "virtual IFormFactorBorn* IFormFactorBorn::clone() const =0
+%feature("docstring")  IFormFactorBorn::clone "IFormFactorBorn* IFormFactorBorn::clone() const override=0
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  IFormFactorBorn::evaluate "complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const
+%feature("docstring")  IFormFactorBorn::evaluate "complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const override
 
 Returns scattering amplitude for complex wavevectors ki, kf. 
 ";
 
+%feature("docstring")  IFormFactorBorn::evaluatePol "Eigen::Matrix2cd IFormFactorBorn::evaluatePol(const WavevectorInfo &wavevectors) const override
+
+Returns scattering amplitude for matrix interactions. 
+";
+
 %feature("docstring")  IFormFactorBorn::evaluate_for_q "virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0
 
-Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 ";
 
 
@@ -6047,36 +6013,33 @@ This class is designed according to the Decorator Pattern. It inherits from  IFo
 C++ includes: IFormFactorDecorator.h
 ";
 
-%feature("docstring")  IFormFactorDecorator::IFormFactorDecorator "IFormFactorDecorator::IFormFactorDecorator()=delete
-";
-
 %feature("docstring")  IFormFactorDecorator::IFormFactorDecorator "IFormFactorDecorator::IFormFactorDecorator(const IFormFactor &form_factor)
 ";
 
-%feature("docstring")  IFormFactorDecorator::~IFormFactorDecorator "virtual IFormFactorDecorator::~IFormFactorDecorator()
+%feature("docstring")  IFormFactorDecorator::~IFormFactorDecorator "IFormFactorDecorator::~IFormFactorDecorator() override
 ";
 
-%feature("docstring")  IFormFactorDecorator::clone "virtual IFormFactorDecorator* IFormFactorDecorator::clone() const =0
+%feature("docstring")  IFormFactorDecorator::clone "IFormFactorDecorator* IFormFactorDecorator::clone() const override=0
 
 Returns a clone of this  ISample object. 
 ";
 
-%feature("docstring")  IFormFactorDecorator::accept "virtual void IFormFactorDecorator::accept(ISampleVisitor *visitor) const =0
+%feature("docstring")  IFormFactorDecorator::accept "void IFormFactorDecorator::accept(ISampleVisitor *visitor) const override=0
 
 Calls the  ISampleVisitor's visit method. 
 ";
 
-%feature("docstring")  IFormFactorDecorator::setAmbientMaterial "virtual void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material)
+%feature("docstring")  IFormFactorDecorator::setAmbientMaterial "void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material) override
 
 Passes the refractive index of the ambient material in which this particle is embedded. 
 ";
 
-%feature("docstring")  IFormFactorDecorator::getVolume "virtual double IFormFactorDecorator::getVolume() const
+%feature("docstring")  IFormFactorDecorator::getVolume "double IFormFactorDecorator::getVolume() const override
 
 Returns the total volume of the particle of this form factor's shape. 
 ";
 
-%feature("docstring")  IFormFactorDecorator::getRadialExtension "virtual double IFormFactorDecorator::getRadialExtension() const
+%feature("docstring")  IFormFactorDecorator::getRadialExtension "double IFormFactorDecorator::getRadialExtension() const override
 
 Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 ";
@@ -7619,7 +7582,7 @@ C++ includes: IParameterized.h
 %feature("docstring")  IParameterized::IParameterized "IParameterized::IParameterized(const IParameterized &other)
 ";
 
-%feature("docstring")  IParameterized::~IParameterized "IParameterized::~IParameterized()
+%feature("docstring")  IParameterized::~IParameterized "IParameterized::~IParameterized() override
 ";
 
 %feature("docstring")  IParameterized::getParameterPool "ParameterPool* IParameterized::getParameterPool() const
@@ -7849,7 +7812,7 @@ Since  ICompositeSample contains a vector of  ISample's, we provide here some ma
 C++ includes: ISample.h
 ";
 
-%feature("docstring")  ISample::clone "virtual ISample* ISample::clone() const =0
+%feature("docstring")  ISample::clone "ISample* ISample::clone() const override=0
 
 Returns a clone of this  ISample object. 
 ";
@@ -12101,6 +12064,24 @@ Initializes the object with form factors and interference functions.
 ";
 
 
+// File: classSpecularComputation.xml
+%feature("docstring") SpecularComputation "
+
+Computes the specular scattering. Controlled by  MainComputation.
+
+C++ includes: SpecularComputation.h
+";
+
+%feature("docstring")  SpecularComputation::SpecularComputation "SpecularComputation::SpecularComputation(const MultiLayer *p_multi_layer)
+";
+
+%feature("docstring")  SpecularComputation::eval "void SpecularComputation::eval(ProgressHandler *progress, bool polarized, const std::vector< SimulationElement >::iterator &begin_it, const std::vector< SimulationElement >::iterator &end_it)
+";
+
+%feature("docstring")  SpecularComputation::setSpecularInfo "void SpecularComputation::setSpecularInfo(const LayerSpecularInfo &specular_info)
+";
+
+
 // File: classSpecularMagnetic.xml
 %feature("docstring") SpecularMagnetic "
 
@@ -12803,13 +12784,13 @@ C++ includes: WavevectorInfo.h
 // File: classMathFunctions_1_1Convolve_1_1Workspace.xml
 
 
-// File: namespace_0D270.xml
+// File: namespace_0D271.xml
 
 
-// File: namespace_0D302.xml
+// File: namespace_0D303.xml
 
 
-// File: namespace_0D423.xml
+// File: namespace_0D424.xml
 
 
 // File: namespace_0D55.xml
@@ -13475,6 +13456,14 @@ Set all element intensities to given value.
 // File: RoughMultiLayerComputation_8h.xml
 
 
+// File: SpecularComputation_8cpp.xml
+%feature("docstring")  ContainsSpecularWavevector "bool ContainsSpecularWavevector(const SimulationElement &sim_element)
+";
+
+
+// File: SpecularComputation_8h.xml
+
+
 // File: FormFactorDecoratorDebyeWaller_8cpp.xml
 
 
@@ -13526,21 +13515,12 @@ Set all element intensities to given value.
 // File: SampleLabelHandler_8h.xml
 
 
-// File: FitKernel_8cpp.xml
-
-
-// File: FitKernel_8h.xml
-
-
 // File: FitObject_8cpp.xml
 
 
 // File: FitObject_8h.xml
 
 
-// File: FitOptions_8h.xml
-
-
 // File: FitParameterLinked_8cpp.xml
 
 
@@ -13571,6 +13551,12 @@ Set all element intensities to given value.
 // File: FitSuiteFunctions_8h.xml
 
 
+// File: FitSuiteImp_8cpp.xml
+
+
+// File: FitSuiteImp_8h.xml
+
+
 // File: FitSuiteObjects_8cpp.xml
 
 
diff --git a/auto/Wrap/doxygen_fit.i b/auto/Wrap/doxygen_fit.i
index cc0c00a7fc418ee5afb43a4833c63a52c6595533..557afa391e16d5c938fc0cb90d1a93abf613022b 100644
--- a/auto/Wrap/doxygen_fit.i
+++ b/auto/Wrap/doxygen_fit.i
@@ -19,91 +19,137 @@ C++ includes: Attributes.h
 ";
 
 
-// File: classBasicMinimizer.xml
-%feature("docstring") BasicMinimizer "
+// File: classFitKernel.xml
+%feature("docstring") FitKernel "
 
-The  BasicMinimizer class is a base for all minimizers.
+Main class to setup and run the minimization.
 
-C++ includes: BasicMinimizer.h
+C++ includes: FitKernel.h
 ";
 
-%feature("docstring")  BasicMinimizer::~BasicMinimizer "BasicMinimizer::~BasicMinimizer()
+%feature("docstring")  FitKernel::FitKernel "FitKernel::FitKernel()
 ";
 
-%feature("docstring")  BasicMinimizer::minimize "void BasicMinimizer::minimize()
+%feature("docstring")  FitKernel::~FitKernel "FitKernel::~FitKernel()
+";
 
-run minimization 
+%feature("docstring")  FitKernel::setMinimizer "void FitKernel::setMinimizer(const std::string &minimizerName, const std::string &algorithmName=std::string())
+
+Sets minimizer with given name and algorithm type
+
+Parameters:
+-----------
+
+minimizerName: 
+The name of the minimizer
+
+algorithmName: 
+Optional name of the minimizer's algorithm 
 ";
 
-%feature("docstring")  BasicMinimizer::minimizerName "std::string BasicMinimizer::minimizerName() const
+%feature("docstring")  FitKernel::setMinimizer "void FitKernel::setMinimizer(IMinimizer *minimizer)
+";
 
-Returns name of the minimizer. 
+%feature("docstring")  FitKernel::minimizer "const IMinimizer * FitKernel::minimizer() const
+
+Returns minimizer. 
 ";
 
-%feature("docstring")  BasicMinimizer::algorithmName "std::string BasicMinimizer::algorithmName() const
+%feature("docstring")  FitKernel::addFitParameter "void FitKernel::addFitParameter(const std::string &name, double value, const RealLimits &lim, const Attributes &attr, double step=0.0)
 
-Returns name of the minimization algorithm. 
+Adds fit parameter. 
 ";
 
-%feature("docstring")  BasicMinimizer::setParameter "void BasicMinimizer::setParameter(size_t index, const FitParameter *par)
+%feature("docstring")  FitKernel::setObjectiveFunction "void FitKernel::setObjectiveFunction(objective_function_t func)
+";
 
-Sets internal minimizer parameter. 
+%feature("docstring")  FitKernel::setGradientFunction "void FitKernel::setGradientFunction(gradient_function_t func, int ndatasize)
 ";
 
-%feature("docstring")  BasicMinimizer::setParameters "void BasicMinimizer::setParameters(const FitSuiteParameters &parameters)
+%feature("docstring")  FitKernel::minimize "void FitKernel::minimize()
+";
 
-Sets internal minimizer parameters using external parameter list. 
+%feature("docstring")  FitKernel::reportResults "std::string FitKernel::reportResults() const
+
+Reports results of minimization in the form of multi-line string. 
 ";
 
-%feature("docstring")  BasicMinimizer::setChiSquaredFunction "void BasicMinimizer::setChiSquaredFunction(function_chi2_t fun_chi2, size_t nparameters)
+%feature("docstring")  FitKernel::fitParameters "FitParameterSet * FitKernel::fitParameters()
+";
 
-Sets chi squared function to minimize. 
+%feature("docstring")  FitKernel::fitParameters "const FitParameterSet * FitKernel::fitParameters() const 
 ";
 
-%feature("docstring")  BasicMinimizer::setGradientFunction "void BasicMinimizer::setGradientFunction(function_gradient_t fun_gradient, size_t nparameters, size_t ndatasize)
 
-Sets gradient function to minimize. 
+// File: classFitKernelImp.xml
+%feature("docstring") FitKernelImp "
+
+The  FitKernel implementation.
+
+C++ includes: FitKernelImp.h
 ";
 
-%feature("docstring")  BasicMinimizer::getValueOfVariablesAtMinimum "std::vector< double > BasicMinimizer::getValueOfVariablesAtMinimum() const
+%feature("docstring")  FitKernelImp::FitKernelImp "FitKernelImp::FitKernelImp()
+";
 
-Returns values of parameters at the minimum. 
+%feature("docstring")  FitKernelImp::~FitKernelImp "FitKernelImp::~FitKernelImp()
 ";
 
-%feature("docstring")  BasicMinimizer::getErrorOfVariables "std::vector< double > BasicMinimizer::getErrorOfVariables() const
+%feature("docstring")  FitKernelImp::setMinimizer "void FitKernelImp::setMinimizer(IMinimizer *minimizer)
 
-Returns errors of variables at minimum. 
+Sets minimizer. 
 ";
 
-%feature("docstring")  BasicMinimizer::reportResults "std::string BasicMinimizer::reportResults() const
+%feature("docstring")  FitKernelImp::addFitParameter "void FitKernelImp::addFitParameter(FitParameter *par)
 
-Prints fit results. 
+Adds fit parameter. 
 ";
 
-%feature("docstring")  BasicMinimizer::options "MinimizerOptions& BasicMinimizer::options()
+%feature("docstring")  FitKernelImp::setObjectiveFunction "void FitKernelImp::setObjectiveFunction(objective_function_t func)
 ";
 
-%feature("docstring")  BasicMinimizer::options "const MinimizerOptions& BasicMinimizer::options() const 
+%feature("docstring")  FitKernelImp::setGradientFunction "void FitKernelImp::setGradientFunction(gradient_function_t func, int ndatasize)
 ";
 
-%feature("docstring")  BasicMinimizer::statusToString "std::string BasicMinimizer::statusToString() const
+%feature("docstring")  FitKernelImp::minimize "void FitKernelImp::minimize()
+";
 
-Returns string representation of current minimizer status. 
+%feature("docstring")  FitKernelImp::reportResults "std::string FitKernelImp::reportResults() const
+
+Reports results of minimization in the form of multi-line string. 
 ";
 
-%feature("docstring")  BasicMinimizer::providesError "bool BasicMinimizer::providesError() const
+%feature("docstring")  FitKernelImp::fitParameters "FitParameterSet * FitKernelImp::fitParameters()
+";
 
-Returns true if minimizer provides error and error matrix. 
+%feature("docstring")  FitKernelImp::minimizer "IMinimizer * FitKernelImp::minimizer()
 ";
 
-%feature("docstring")  BasicMinimizer::statusMap "std::map< std::string, std::string > BasicMinimizer::statusMap() const
 
-Returns map of string representing different minimizer statuses. 
+// File: classFitOptions.xml
+%feature("docstring") FitOptions "
+
+General fitting options.
+
+C++ includes: FitOptions.h
 ";
 
-%feature("docstring")  BasicMinimizer::propagateResults "void BasicMinimizer::propagateResults(FitSuiteParameters &parameters)
+%feature("docstring")  FitOptions::FitOptions "FitOptions::FitOptions()
+";
 
-Propagates results of minimization to fit parameter set. 
+%feature("docstring")  FitOptions::~FitOptions "FitOptions::~FitOptions()
+";
+
+%feature("docstring")  FitOptions::getDerivEpsilon "double FitOptions::getDerivEpsilon() const 
+";
+
+%feature("docstring")  FitOptions::setDerivEpsilon "void FitOptions::setDerivEpsilon(double deriv_epsilon)
+";
+
+%feature("docstring")  FitOptions::getStepFactor "double FitOptions::getStepFactor() const 
+";
+
+%feature("docstring")  FitOptions::setStepFactor "void FitOptions::setStepFactor(double step_factor)
 ";
 
 
@@ -152,127 +198,129 @@ C++ includes: FitParameter.h
 ";
 
 
-// File: classFitSuiteParameters.xml
-%feature("docstring") FitSuiteParameters "
+// File: classFitParameterSet.xml
+%feature("docstring") FitParameterSet "
 
-Vector of parameters, for FitSuite
+The  FitParameterSet represents collection of fit parameters for the minimizer.
 
-C++ includes: FitSuiteParameters.h
+C++ includes: FitParameterSet.h
 ";
 
-%feature("docstring")  FitSuiteParameters::FitSuiteParameters "FitSuiteParameters::FitSuiteParameters()
+%feature("docstring")  FitParameterSet::FitParameterSet "FitParameterSet::FitParameterSet()
 ";
 
-%feature("docstring")  FitSuiteParameters::~FitSuiteParameters "FitSuiteParameters::~FitSuiteParameters()
+%feature("docstring")  FitParameterSet::~FitParameterSet "FitParameterSet::~FitParameterSet()
 ";
 
-%feature("docstring")  FitSuiteParameters::clear "void FitSuiteParameters::clear()
+%feature("docstring")  FitParameterSet::clear "void FitParameterSet::clear()
+
+container specific
 
 Clears all defined parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::addFitParameter "void FitSuiteParameters::addFitParameter(FitParameter *par)
+%feature("docstring")  FitParameterSet::size "size_t FitParameterSet::size() const
 
-Adds fit parameter. 
+Returns number of parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::getFitParameters "std::vector<FitParameter*>& FitSuiteParameters::getFitParameters()
+%feature("docstring")  FitParameterSet::begin "FitParameterSet::iterator FitParameterSet::begin()
 
-Returns all parameters. 
+Container iterators. 
 ";
 
-%feature("docstring")  FitSuiteParameters::getFitParameters "const std::vector<FitParameter*>& FitSuiteParameters::getFitParameters() const 
+%feature("docstring")  FitParameterSet::begin "FitParameterSet::const_iterator FitParameterSet::begin() const 
 ";
 
-%feature("docstring")  FitSuiteParameters::getFitParameter "const FitParameter * FitSuiteParameters::getFitParameter(const std::string &name) const
-
-Returns fit parameter with given name. 
+%feature("docstring")  FitParameterSet::end "FitParameterSet::iterator FitParameterSet::end()
 ";
 
-%feature("docstring")  FitSuiteParameters::getFitParameter "FitParameter * FitSuiteParameters::getFitParameter(const std::string &name)
+%feature("docstring")  FitParameterSet::end "FitParameterSet::const_iterator FitParameterSet::end() const 
 ";
 
-%feature("docstring")  FitSuiteParameters::setValues "void FitSuiteParameters::setValues(const double *pars_values)
+%feature("docstring")  FitParameterSet::addFitParameter "void FitParameterSet::addFitParameter(FitParameter *par)
 
-Sets values for all defined parameters. 
-";
+adding fit parameters
 
-%feature("docstring")  FitSuiteParameters::setValues "void FitSuiteParameters::setValues(const std::vector< double > &pars_values)
+Adds fit parameter. 
 ";
 
-%feature("docstring")  FitSuiteParameters::getValues "std::vector< double > FitSuiteParameters::getValues() const
+%feature("docstring")  FitParameterSet::fitParameter "const FitParameter * FitParameterSet::fitParameter(const std::string &name) const
 
-Returns values of all defined parameters. 
-";
+accessing fit parameters
 
-%feature("docstring")  FitSuiteParameters::setErrors "void FitSuiteParameters::setErrors(const std::vector< double > &pars_errors)
+Returns fit parameter by given name. 
+";
 
-Sets errors to all parameters. 
+%feature("docstring")  FitParameterSet::fitParameter "FitParameter * FitParameterSet::fitParameter(const std::string &name)
 ";
 
-%feature("docstring")  FitSuiteParameters::getErrors "std::vector< double > FitSuiteParameters::getErrors() const
+%feature("docstring")  FitParameterSet::values "std::vector< double > FitParameterSet::values() const
 
-Returns errors of all defined parameters. 
+fit parameter's values and errors
+
+Returns values of all defined parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::size "size_t FitSuiteParameters::size() const
+%feature("docstring")  FitParameterSet::setValues "void FitParameterSet::setValues(const std::vector< double > &pars_values)
 
-Returns number of parameters. 
+Sets values for all defined parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::begin "std::vector<FitParameter*>::iterator FitSuiteParameters::begin()
+%feature("docstring")  FitParameterSet::valuesDifferFrom "bool FitParameterSet::valuesDifferFrom(const std::vector< double > &par_values, double tolerance=2.0) const
 
-Returns begin of container. 
+Returns true if parameters already have the given values. 
 ";
 
-%feature("docstring")  FitSuiteParameters::begin "std::vector<FitParameter*>::const_iterator FitSuiteParameters::begin() const 
+%feature("docstring")  FitParameterSet::errors "std::vector< double > FitParameterSet::errors() const
+
+Returns errors of all defined parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::end "std::vector<FitParameter*>::iterator FitSuiteParameters::end()
+%feature("docstring")  FitParameterSet::setErrors "void FitParameterSet::setErrors(const std::vector< double > &pars_errors)
 
-Returns end of container. 
+Sets errors to all parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::end "std::vector<FitParameter*>::const_iterator FitSuiteParameters::end() const 
-";
+%feature("docstring")  FitParameterSet::freeFitParameterCount "size_t FitParameterSet::freeFitParameterCount() const
 
-%feature("docstring")  FitSuiteParameters::numberOfFreeFitParameters "size_t FitSuiteParameters::numberOfFreeFitParameters() const
+Make parameters fixed and free.
 
 Returns number of free parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::printFitParameters "void FitSuiteParameters::printFitParameters() const
-
-Print defined parameters. 
-";
-
-%feature("docstring")  FitSuiteParameters::fixAll "void FitSuiteParameters::fixAll()
+%feature("docstring")  FitParameterSet::fixAll "void FitParameterSet::fixAll()
 
 Fix all parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::releaseAll "void FitSuiteParameters::releaseAll()
+%feature("docstring")  FitParameterSet::releaseAll "void FitParameterSet::releaseAll()
 
 Release all parameters. 
 ";
 
-%feature("docstring")  FitSuiteParameters::setFixed "void FitSuiteParameters::setFixed(const std::vector< std::string > &pars, bool is_fixed)
+%feature("docstring")  FitParameterSet::setFixed "void FitParameterSet::setFixed(const std::vector< std::string > &pars, bool is_fixed)
 
 Set fixed flag for parameters from the list. 
 ";
 
-%feature("docstring")  FitSuiteParameters::valuesDifferFrom "bool FitSuiteParameters::valuesDifferFrom(const double *par_values, double tolerance) const
+%feature("docstring")  FitParameterSet::parametersToString "std::string FitParameterSet::parametersToString() const
 
-Returns true if parameters already have the given values. 
+Printing and reporting. 
 ";
 
-%feature("docstring")  FitSuiteParameters::reportResults "std::string FitSuiteParameters::reportResults() const 
+%feature("docstring")  FitParameterSet::reportResults "std::string FitParameterSet::reportResults() const 
 ";
 
-%feature("docstring")  FitSuiteParameters::correlationMatrix "corr_matrix_t FitSuiteParameters::correlationMatrix() const 
+%feature("docstring")  FitParameterSet::correlationMatrix "corr_matrix_t FitParameterSet::correlationMatrix() const 
 ";
 
-%feature("docstring")  FitSuiteParameters::setCorrelationMatrix "void FitSuiteParameters::setCorrelationMatrix(const corr_matrix_t &matrix)
+%feature("docstring")  FitParameterSet::setCorrelationMatrix "void FitParameterSet::setCorrelationMatrix(const corr_matrix_t &matrix)
+";
+
+%feature("docstring")  FitParameterSet::isExistingName "bool FitParameterSet::isExistingName(const std::string &name) const
+
+Returns true if parameter with such name exists. 
 ";
 
 
@@ -460,29 +508,20 @@ return name of the minimization algorithm
 run minimization 
 ";
 
-%feature("docstring")  IMinimizer::setParameter "void IMinimizer::setParameter(size_t index, const FitParameter *par)
+%feature("docstring")  IMinimizer::clear "void IMinimizer::clear()
 
-Sets internal minimizer parameter. 
+clear resources (parameters) for consecutives minimizations 
 ";
 
-%feature("docstring")  IMinimizer::setParameters "void IMinimizer::setParameters(const FitSuiteParameters &parameters)
+%feature("docstring")  IMinimizer::setParameters "void IMinimizer::setParameters(const FitParameterSet &parameters)
 
 Sets internal minimizer parameters using external parameter list. 
 ";
 
-%feature("docstring")  IMinimizer::setChiSquaredFunction "void IMinimizer::setChiSquaredFunction(function_chi2_t fun_chi2, size_t nparameters)
-
-Sets chi squared function to minimize. 
-";
-
-%feature("docstring")  IMinimizer::setGradientFunction "void IMinimizer::setGradientFunction(function_gradient_t fun_gradient, size_t nparameters, size_t ndatasize)
-
-Sets gradient function to minimize. 
+%feature("docstring")  IMinimizer::setObjectiveFunction "virtual void IMinimizer::setObjectiveFunction(objective_function_t)
 ";
 
-%feature("docstring")  IMinimizer::getNumberOfVariables "size_t IMinimizer::getNumberOfVariables() const
-
-Returns number of variables to fit. 
+%feature("docstring")  IMinimizer::setGradientFunction "virtual void IMinimizer::setGradientFunction(gradient_function_t, int)
 ";
 
 %feature("docstring")  IMinimizer::getMinValue "double IMinimizer::getMinValue() const
@@ -490,37 +529,12 @@ Returns number of variables to fit.
 Returns minimum function value. 
 ";
 
-%feature("docstring")  IMinimizer::getValueOfVariableAtMinimum "double IMinimizer::getValueOfVariableAtMinimum(size_t index) const
-
-Returns value of the parameter at the minimum. 
-";
-
-%feature("docstring")  IMinimizer::getValueOfVariablesAtMinimum "std::vector< double > IMinimizer::getValueOfVariablesAtMinimum() const
-
-Returns values of parameters at the minimum. 
-";
-
-%feature("docstring")  IMinimizer::getErrorOfVariable "double IMinimizer::getErrorOfVariable(size_t index) const
-
-Returns error of variable at minimum. 
-";
-
-%feature("docstring")  IMinimizer::getErrorOfVariables "std::vector< double > IMinimizer::getErrorOfVariables() const
-
-Returns errors of variables at minimum. 
-";
-
-%feature("docstring")  IMinimizer::clear "void IMinimizer::clear()
-
-clear resources (parameters) for consecutives minimizations 
-";
-
 %feature("docstring")  IMinimizer::reportResults "std::string IMinimizer::reportResults() const
 
 Prints fit results. 
 ";
 
-%feature("docstring")  IMinimizer::propagateResults "void IMinimizer::propagateResults(FitSuiteParameters &parameters)
+%feature("docstring")  IMinimizer::propagateResults "void IMinimizer::propagateResults(FitParameterSet &parameters)
 
 Propagates results of minimization to fit parameter set. 
 ";
@@ -666,12 +680,12 @@ C++ includes: MinimizerResultsHelper.h
 %feature("docstring")  MinimizerResultsHelper::MinimizerResultsHelper "MinimizerResultsHelper::MinimizerResultsHelper()
 ";
 
-%feature("docstring")  MinimizerResultsHelper::reportResults "std::string MinimizerResultsHelper::reportResults(const BasicMinimizer *minimizer) const
+%feature("docstring")  MinimizerResultsHelper::reportResults "std::string MinimizerResultsHelper::reportResults(const RootMinimizerAdapter *minimizer) const
 
 Reports results of minimization in the form of multi-line string. 
 ";
 
-%feature("docstring")  MinimizerResultsHelper::reportResults "std::string MinimizerResultsHelper::reportResults(const FitSuiteParameters *parameters) const
+%feature("docstring")  MinimizerResultsHelper::reportResults "std::string MinimizerResultsHelper::reportResults(const FitParameterSet *parameters) const
 
 Reports fit parameters settings and final results. 
 ";
@@ -790,6 +804,40 @@ Returns the option's default value (i.e. used during construction)
 ";
 
 
+// File: classObjectiveFunction.xml
+%feature("docstring") ObjectiveFunction "
+
+The  ObjectiveFunction class represents function to minimize.
+
+C++ includes: ObjectiveFunction.h
+";
+
+%feature("docstring")  ObjectiveFunction::ObjectiveFunction "ObjectiveFunction::ObjectiveFunction()
+";
+
+%feature("docstring")  ObjectiveFunction::setObjectiveFunction "void ObjectiveFunction::setObjectiveFunction(objective_function_t func)
+";
+
+%feature("docstring")  ObjectiveFunction::setGradientFunction "void ObjectiveFunction::setGradientFunction(gradient_function_t func, int ndatasize)
+";
+
+%feature("docstring")  ObjectiveFunction::evaluate "double ObjectiveFunction::evaluate(const std::vector< double > &pars)
+
+Evaluates the value of the function for given vector of function parameters using callback mechanism. 
+";
+
+%feature("docstring")  ObjectiveFunction::evaluate_gradient "double ObjectiveFunction::evaluate_gradient(const std::vector< double > &pars, int index, std::vector< double > &gradient)
+
+Evaluates residual and gradients of the function for given vector of function parameters and index of dataelement using callback mechanism. 
+";
+
+%feature("docstring")  ObjectiveFunction::functionCalls "int ObjectiveFunction::functionCalls() const 
+";
+
+%feature("docstring")  ObjectiveFunction::sizeOfData "int ObjectiveFunction::sizeOfData() const 
+";
+
+
 // File: classOptionContainer.xml
 %feature("docstring") OptionContainer "
 
@@ -911,44 +959,144 @@ returns true if proposed value is in limits range
 ";
 
 
-// File: classROOTMinimizerChiSquaredFunction.xml
-%feature("docstring") ROOTMinimizerChiSquaredFunction "
+// File: classRootGradientFunction.xml
+%feature("docstring") RootGradientFunction "
 
-minimizer chi2 function
+Minimizer function with access to single data element residuals. Required by Fumili, Fumili2 and GSLMultiMin minimizers.
 
-C++ includes: ROOTMinimizerFunction.h
+C++ includes: RootMinimizerFunctions.h
 ";
 
-%feature("docstring")  ROOTMinimizerChiSquaredFunction::ROOTMinimizerChiSquaredFunction "ROOTMinimizerChiSquaredFunction::ROOTMinimizerChiSquaredFunction(IMinimizer::function_chi2_t fcn, int ndims)
+%feature("docstring")  RootGradientFunction::RootGradientFunction "RootGradientFunction::RootGradientFunction(root_gradient_t fun_gradient, size_t npars, size_t ndatasize)
 ";
 
-%feature("docstring")  ROOTMinimizerChiSquaredFunction::~ROOTMinimizerChiSquaredFunction "virtual ROOTMinimizerChiSquaredFunction::~ROOTMinimizerChiSquaredFunction()
+%feature("docstring")  RootGradientFunction::Type "Type_t RootGradientFunction::Type() const 
 ";
 
+%feature("docstring")  RootGradientFunction::Clone "BA_ROOT::Math::IMultiGenFunction* RootGradientFunction::Clone() const 
+";
 
-// File: classROOTMinimizerGradientFunction.xml
-%feature("docstring") ROOTMinimizerGradientFunction "
+%feature("docstring")  RootGradientFunction::DataElement "double RootGradientFunction::DataElement(const double *pars, unsigned int i_data, double *gradient=0) const
 
-Minimizer function with access to single data element residuals. Required by Fumili, Fumili2 and GSLMultiMin minimizers.
+evaluation of single data element residual 
+";
 
-C++ includes: ROOTMinimizerFunction.h
+
+// File: classRootMinimizerAdapter.xml
+%feature("docstring") RootMinimizerAdapter "
+
+The  RootMinimizerAdapter class adapts ROOT minimizer interface to our  IMinimizer.
+
+C++ includes: RootMinimizerAdapter.h
 ";
 
-%feature("docstring")  ROOTMinimizerGradientFunction::ROOTMinimizerGradientFunction "ROOTMinimizerGradientFunction::ROOTMinimizerGradientFunction(IMinimizer::function_gradient_t fun_gradient, size_t npars, size_t ndatasize)
+%feature("docstring")  RootMinimizerAdapter::~RootMinimizerAdapter "RootMinimizerAdapter::~RootMinimizerAdapter()
 ";
 
-%feature("docstring")  ROOTMinimizerGradientFunction::~ROOTMinimizerGradientFunction "virtual ROOTMinimizerGradientFunction::~ROOTMinimizerGradientFunction()
+%feature("docstring")  RootMinimizerAdapter::minimize "void RootMinimizerAdapter::minimize() override
+
+run minimization 
 ";
 
-%feature("docstring")  ROOTMinimizerGradientFunction::Type "Type_t ROOTMinimizerGradientFunction::Type() const 
+%feature("docstring")  RootMinimizerAdapter::minimizerName "std::string RootMinimizerAdapter::minimizerName() const overridefinal
+
+Returns name of the minimizer. 
 ";
 
-%feature("docstring")  ROOTMinimizerGradientFunction::Clone "BA_ROOT::Math::IMultiGenFunction* ROOTMinimizerGradientFunction::Clone() const 
+%feature("docstring")  RootMinimizerAdapter::algorithmName "std::string RootMinimizerAdapter::algorithmName() const overridefinal
+
+Returns name of the minimization algorithm. 
 ";
 
-%feature("docstring")  ROOTMinimizerGradientFunction::DataElement "double ROOTMinimizerGradientFunction::DataElement(const double *pars, unsigned int i_data, double *gradient=0) const
+%feature("docstring")  RootMinimizerAdapter::setParameters "void RootMinimizerAdapter::setParameters(const FitParameterSet &parameters) overridefinal
 
-evaluation of single data element residual 
+Sets internal minimizer parameters using external parameter list. 
+";
+
+%feature("docstring")  RootMinimizerAdapter::setObjectiveFunction "void RootMinimizerAdapter::setObjectiveFunction(objective_function_t func) overridefinal
+";
+
+%feature("docstring")  RootMinimizerAdapter::setGradientFunction "void RootMinimizerAdapter::setGradientFunction(gradient_function_t func, int ndatasize) overridefinal
+";
+
+%feature("docstring")  RootMinimizerAdapter::reportResults "std::string RootMinimizerAdapter::reportResults() const overridefinal
+
+Prints fit results. 
+";
+
+%feature("docstring")  RootMinimizerAdapter::options "MinimizerOptions& RootMinimizerAdapter::options()
+";
+
+%feature("docstring")  RootMinimizerAdapter::options "const MinimizerOptions& RootMinimizerAdapter::options() const 
+";
+
+%feature("docstring")  RootMinimizerAdapter::statusToString "std::string RootMinimizerAdapter::statusToString() const
+
+Returns string representation of current minimizer status. 
+";
+
+%feature("docstring")  RootMinimizerAdapter::providesError "bool RootMinimizerAdapter::providesError() const
+
+Returns true if minimizer provides error and error matrix. 
+";
+
+%feature("docstring")  RootMinimizerAdapter::statusMap "std::map< std::string, std::string > RootMinimizerAdapter::statusMap() const
+
+Returns map of string representing different minimizer statuses. 
+";
+
+%feature("docstring")  RootMinimizerAdapter::propagateResults "void RootMinimizerAdapter::propagateResults(FitParameterSet &parameters) override
+
+Propagates results of minimization to fit parameter set. 
+";
+
+
+// File: classRootObjectiveFunction.xml
+%feature("docstring") RootObjectiveFunction "
+
+minimizer chi2 function
+
+C++ includes: RootMinimizerFunctions.h
+";
+
+%feature("docstring")  RootObjectiveFunction::RootObjectiveFunction "RootObjectiveFunction::RootObjectiveFunction(root_objective_t fcn, int ndims)
+";
+
+
+// File: classRootObjectiveFunctionAdapter.xml
+%feature("docstring") RootObjectiveFunctionAdapter "
+
+The  RootObjectiveFunctionAdapter class adapts our objective functions to ROOT.
+
+C++ includes: RootObjectiveFuncAdapter.h
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::RootObjectiveFunctionAdapter "RootObjectiveFunctionAdapter::RootObjectiveFunctionAdapter()
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::setObjectiveCallback "void RootObjectiveFunctionAdapter::setObjectiveCallback(objective_function_t func)
+
+Sets the function which will be used for finding objective function minimum value. 
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::setGradientCallback "void RootObjectiveFunctionAdapter::setGradientCallback(gradient_function_t func, int ndatasize)
+
+Sets the function which will be used for gradient calculations. 
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::setNumberOfParameters "void RootObjectiveFunctionAdapter::setNumberOfParameters(int nparameters)
+
+Sets number of fit parameters (needed to construct correct ROOT's functions). 
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::rootChiSquaredFunction "const RootObjectiveFunction * RootObjectiveFunctionAdapter::rootChiSquaredFunction()
+
+Creates and returns objective function suitable for ROOT minimizers. 
+";
+
+%feature("docstring")  RootObjectiveFunctionAdapter::rootGradientFunction "const RootGradientFunction * RootObjectiveFunctionAdapter::rootGradientFunction()
+
+Creates and returns gradient function suitable for ROOT minimizers. 
 ";
 
 
@@ -1053,72 +1201,43 @@ C++ includes: TestMinimizer.h
 %feature("docstring")  TestMinimizer::~TestMinimizer "TestMinimizer::~TestMinimizer()
 ";
 
-%feature("docstring")  TestMinimizer::minimizerName "std::string TestMinimizer::minimizerName() const
+%feature("docstring")  TestMinimizer::minimizerName "std::string TestMinimizer::minimizerName() const override
 
 return name of the minimizer 
 ";
 
-%feature("docstring")  TestMinimizer::minimize "void TestMinimizer::minimize()
+%feature("docstring")  TestMinimizer::minimize "void TestMinimizer::minimize() override
 
 run minimization 
 ";
 
-%feature("docstring")  TestMinimizer::setParameters "void TestMinimizer::setParameters(const FitSuiteParameters &parameters)
+%feature("docstring")  TestMinimizer::setParameters "void TestMinimizer::setParameters(const FitParameterSet &parameters) override
 
 Sets internal minimizer parameters using external parameter list. 
 ";
 
-%feature("docstring")  TestMinimizer::setChiSquaredFunction "void TestMinimizer::setChiSquaredFunction(function_chi2_t fun_chi2, size_t)
-
-Sets chi squared function to minimize. 
-";
-
-%feature("docstring")  TestMinimizer::setGradientFunction "virtual void TestMinimizer::setGradientFunction(function_gradient_t, size_t, size_t)
-
-Sets gradient function to minimize. 
-";
-
-%feature("docstring")  TestMinimizer::getNumberOfVariables "virtual size_t TestMinimizer::getNumberOfVariables() const
-
-Returns number of variables to fit. 
-";
-
-%feature("docstring")  TestMinimizer::getValueOfVariableAtMinimum "double TestMinimizer::getValueOfVariableAtMinimum(size_t index) const
-
-Returns pointer to the parameters values at the minimum. 
+%feature("docstring")  TestMinimizer::setObjectiveFunction "void TestMinimizer::setObjectiveFunction(objective_function_t func) override
 ";
 
-%feature("docstring")  TestMinimizer::getValueOfVariablesAtMinimum "std::vector< double > TestMinimizer::getValueOfVariablesAtMinimum() const
-
-Returns value of the parameter at the minimum. 
-";
-
-%feature("docstring")  TestMinimizer::reportResults "std::string TestMinimizer::reportResults() const
+%feature("docstring")  TestMinimizer::reportResults "std::string TestMinimizer::reportResults() const override
 
 Prints fit results. 
 ";
 
-%feature("docstring")  TestMinimizer::getErrorOfVariables "std::vector< double > TestMinimizer::getErrorOfVariables() const
 
-Returns errors of variables at minimum. 
-";
+// File: namespace_0D0.xml
 
-%feature("docstring")  TestMinimizer::propagateResults "void TestMinimizer::propagateResults(FitSuiteParameters &)
 
-Propagates results of minimization to fit parameter set. 
-";
-
-
-// File: namespace_0D11.xml
+// File: namespace_0D17.xml
 
 
-// File: namespace_0D30.xml
+// File: namespace_0D36.xml
 
 
-// File: namespace_0D32.xml
+// File: namespace_0D38.xml
 
 
-// File: namespace_0D36.xml
+// File: namespace_0D42.xml
 
 
 // File: namespaceAlgorithmNames.xml
@@ -1148,6 +1267,9 @@ Returns translation of GSL error code to string.
 %feature("docstring")  MinimizerUtils::gslErrorDescription "std::string MinimizerUtils::gslErrorDescription(int errorCode)
 ";
 
+%feature("docstring")  MinimizerUtils::numbersDiffer "bool MinimizerUtils::numbersDiffer(double a, double b, double tol)
+";
+
 
 // File: namespaceMSG.xml
 %feature("docstring")  MSG::SetLevel "BA_CORE_API_ void MSG::SetLevel(EMessageLevel level)
@@ -1172,12 +1294,30 @@ Returns string right-padded with blanks.
 ";
 
 
+// File: FitKernel_8cpp.xml
+
+
+// File: FitKernel_8h.xml
+
+
+// File: FitKernelImp_8cpp.xml
+
+
+// File: FitKernelImp_8h.xml
+
+
+// File: FitOptions_8h.xml
+
+
 // File: IMinimizer_8cpp.xml
 
 
 // File: IMinimizer_8h.xml
 
 
+// File: KernelTypes_8h.xml
+
+
 // File: MinimizerCatalogue_8cpp.xml
 
 
@@ -1228,6 +1368,12 @@ Returns string right-padded with blanks.
 // File: MultiOption_8h.xml
 
 
+// File: ObjectiveFunction_8cpp.xml
+
+
+// File: ObjectiveFunction_8h.xml
+
+
 // File: OptionContainer_8cpp.xml
 
 
@@ -1249,10 +1395,10 @@ Returns string right-padded with blanks.
 // File: FitParameter_8h.xml
 
 
-// File: FitSuiteParameters_8cpp.xml
+// File: FitParameterSet_8cpp.xml
 
 
-// File: FitSuiteParameters_8h.xml
+// File: FitParameterSet_8h.xml
 
 
 // File: RealLimits_8cpp.xml
@@ -1261,12 +1407,6 @@ Returns string right-padded with blanks.
 // File: RealLimits_8h.xml
 
 
-// File: BasicMinimizer_8cpp.xml
-
-
-// File: BasicMinimizer_8h.xml
-
-
 // File: GeneticMinimizer_8cpp.xml
 
 
@@ -1291,7 +1431,19 @@ Returns string right-padded with blanks.
 // File: Minuit2Minimizer_8h.xml
 
 
-// File: ROOTMinimizerFunction_8h.xml
+// File: RootMinimizerAdapter_8cpp.xml
+
+
+// File: RootMinimizerAdapter_8h.xml
+
+
+// File: RootMinimizerFunctions_8h.xml
+
+
+// File: RootObjectiveFuncAdapter_8cpp.xml
+
+
+// File: RootObjectiveFuncAdapter_8h.xml
 
 
 // File: SimAnMinimizer_8cpp.xml
@@ -1318,13 +1470,13 @@ Returns string right-padded with blanks.
 // File: dir_befad91b6aded329d87ab1464acca32e.xml
 
 
-// File: dir_f668eca225435178269b3663d40ba22e.xml
+// File: dir_f9473c719213b1ce2ec7fbf8aef1535c.xml
 
 
 // File: dir_1acb97a05207425a4804447756e3d919.xml
 
 
-// File: dir_66d655750f7b00e32587449835def8b0.xml
+// File: dir_50776eae6dbf3f787dd8fd4106a9bdd2.xml
 
 
 // File: dir_111d40054bb7ae6116a9a4a5aab3a0b8.xml
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index a338ba17e17d7dc70ebbf42f02888da00d5fa6bd..4c50c8c759dfe691127a607c3d334fe9c5365c9a 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -2994,6 +2994,10 @@ class Bin1D(_object):
 Bin1D_swigregister = _libBornAgainCore.Bin1D_swigregister
 Bin1D_swigregister(Bin1D)
 
+
+def BinContains(bin, value):
+    """BinContains(Bin1D bin, double value) -> bool"""
+    return _libBornAgainCore.BinContains(bin, value)
 class Bin1DKVector(_object):
     """
 
@@ -3263,6 +3267,11 @@ class IAxis(_object):
         return _libBornAgainCore.IAxis_findClosestIndex(self, value)
 
 
+    def findIndex(self, value):
+        """findIndex(IAxis self, double value) -> size_t"""
+        return _libBornAgainCore.IAxis_findIndex(self, value)
+
+
     def __eq__(self, right):
         """__eq__(IAxis self, IAxis right) -> bool"""
         return _libBornAgainCore.IAxis___eq__(self, right)
@@ -3756,7 +3765,7 @@ class ISample(ICloneable, IParameterized):
         """
         clone(ISample self) -> ISample
 
-        virtual ISample* ISample::clone() const =0
+        ISample* ISample::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
@@ -4651,7 +4660,7 @@ class IFitStrategy(INamed):
         """
         init(IFitStrategy self, FitSuiteImp * fit_suite)
 
-        void IFitStrategy::init(FitKernel *fit_suite)
+        void IFitStrategy::init(FitSuiteImp *fit_suite)
 
         """
         return _libBornAgainCore.IFitStrategy_init(self, fit_suite)
@@ -5660,14 +5669,7 @@ FitObject_swigregister = _libBornAgainCore.FitObject_swigregister
 FitObject_swigregister(FitObject)
 
 class FitOptions(_object):
-    """
-
-
-    General fitting options.
-
-    C++ includes: FitOptions.h
-
-    """
+    """Proxy of C++ FitOptions class."""
 
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, FitOptions, name, value)
@@ -5676,12 +5678,7 @@ class FitOptions(_object):
     __repr__ = _swig_repr
 
     def __init__(self):
-        """
-        __init__(FitOptions self) -> FitOptions
-
-        FitOptions::FitOptions()
-
-        """
+        """__init__(FitOptions self) -> FitOptions"""
         this = _libBornAgainCore.new_FitOptions()
         try:
             self.this.append(this)
@@ -5691,42 +5688,22 @@ class FitOptions(_object):
     __del__ = lambda self: None
 
     def getDerivEpsilon(self):
-        """
-        getDerivEpsilon(FitOptions self) -> double
-
-        double FitOptions::getDerivEpsilon() const 
-
-        """
+        """getDerivEpsilon(FitOptions self) -> double"""
         return _libBornAgainCore.FitOptions_getDerivEpsilon(self)
 
 
     def setDerivEpsilon(self, deriv_epsilon):
-        """
-        setDerivEpsilon(FitOptions self, double deriv_epsilon)
-
-        void FitOptions::setDerivEpsilon(double deriv_epsilon)
-
-        """
+        """setDerivEpsilon(FitOptions self, double deriv_epsilon)"""
         return _libBornAgainCore.FitOptions_setDerivEpsilon(self, deriv_epsilon)
 
 
     def getStepFactor(self):
-        """
-        getStepFactor(FitOptions self) -> double
-
-        double FitOptions::getStepFactor() const 
-
-        """
+        """getStepFactor(FitOptions self) -> double"""
         return _libBornAgainCore.FitOptions_getStepFactor(self)
 
 
     def setStepFactor(self, step_factor):
-        """
-        setStepFactor(FitOptions self, double step_factor)
-
-        void FitOptions::setStepFactor(double step_factor)
-
-        """
+        """setStepFactor(FitOptions self, double step_factor)"""
         return _libBornAgainCore.FitOptions_setStepFactor(self, step_factor)
 
 FitOptions_swigregister = _libBornAgainCore.FitOptions_swigregister
@@ -5843,7 +5820,7 @@ class FitSuite(IObservable):
         setMinimizer(FitSuite self, std::string const & minimizer_name)
         setMinimizer(FitSuite self, IMinimizer * minimizer)
 
-        void FitSuite::setMinimizer(class IMinimizer *minimizer)
+        void FitSuite::setMinimizer(IMinimizer *minimizer)
 
         Sets minimizer. 
 
@@ -5852,7 +5829,14 @@ class FitSuite(IObservable):
 
 
     def minimizer(self):
-        """minimizer(FitSuite self) -> IMinimizer const *"""
+        """
+        minimizer(FitSuite self) -> IMinimizer const *
+
+        const IMinimizer * FitSuite::minimizer() const
+
+        Returns minimizer. 
+
+        """
         return _libBornAgainCore.FitSuite_minimizer(self)
 
 
@@ -6004,7 +5988,14 @@ class FitSuite(IObservable):
 
 
     def fitParameters(self):
-        """fitParameters(FitSuite self) -> FitParameterSet *"""
+        """
+        fitParameters(FitSuite self) -> FitParameterSet *
+
+        FitParameterSet * FitSuite::fitParameters()
+
+        Returns reference to fit parameters. 
+
+        """
         return _libBornAgainCore.FitSuite_fitParameters(self)
 
 
@@ -9908,7 +9899,7 @@ class IFormFactor(ISample):
 
     The actual form factor is returned by the complex valued function  IFormFactor::evaluate, which depends on the incoming and outgoing wave vectors ki and kf. If it only depends on the scattering vector q=ki-kf, then it is a IBornFormFactor.
 
-    Other children besides IBornFormFactor are  IFormFactorDecorator,  FormFactorWeighted,  FormFactorDWBAPol,  FormFactorCrystal.
+    Other children besides IBornFormFactor are  IFormFactorDecorator,  FormFactorWeighted,  FormFactorDWBA,  FormFactorDWBAPol and  FormFactorCrystal.
 
     C++ includes: IFormFactor.h
 
@@ -9947,7 +9938,7 @@ class IFormFactor(ISample):
         """
         clone(IFormFactor self) -> IFormFactor
 
-        virtual IFormFactor* IFormFactor::clone() const =0
+        IFormFactor* IFormFactor::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
@@ -9959,7 +9950,7 @@ class IFormFactor(ISample):
         """
         accept(IFormFactor self, ISampleVisitor visitor)
 
-        virtual void IFormFactor::accept(ISampleVisitor *visitor) const =0
+        void IFormFactor::accept(ISampleVisitor *visitor) const override=0
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -10252,7 +10243,9 @@ class IFormFactorBorn(IFormFactor):
     """
 
 
-    Pure virtual base class for Born form factors. In contrast to the generic  IFormFactor, a Born form factor does not depend on the incoming and outgoing wave vectors ki and kf, except through their difference, the scattering vector q=ki-kf.
+    Pure virtual base class for Born form factors.
+
+    In contrast to the generic  IFormFactor, a Born form factor does not depend on the incoming and outgoing wave vectors ki and kf, except through their difference, the scattering vector q=ki-kf.
 
     C++ includes: IFormFactorBorn.h
 
@@ -10291,7 +10284,7 @@ class IFormFactorBorn(IFormFactor):
         """
         clone(IFormFactorBorn self) -> IFormFactorBorn
 
-        virtual IFormFactorBorn* IFormFactorBorn::clone() const =0
+        IFormFactorBorn* IFormFactorBorn::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
@@ -10303,7 +10296,7 @@ class IFormFactorBorn(IFormFactor):
         """
         evaluate(IFormFactorBorn self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const
+        complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const override
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -10317,7 +10310,7 @@ class IFormFactorBorn(IFormFactor):
 
         virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.IFormFactorBorn_evaluate_for_q(self, q)
@@ -10370,7 +10363,7 @@ class IFormFactorDecorator(IFormFactor):
         """
         clone(IFormFactorDecorator self) -> IFormFactorDecorator
 
-        virtual IFormFactorDecorator* IFormFactorDecorator::clone() const =0
+        IFormFactorDecorator* IFormFactorDecorator::clone() const override=0
 
         Returns a clone of this  ISample object. 
 
@@ -10382,7 +10375,7 @@ class IFormFactorDecorator(IFormFactor):
         """
         accept(IFormFactorDecorator self, ISampleVisitor visitor)
 
-        virtual void IFormFactorDecorator::accept(ISampleVisitor *visitor) const =0
+        void IFormFactorDecorator::accept(ISampleVisitor *visitor) const override=0
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -10394,7 +10387,7 @@ class IFormFactorDecorator(IFormFactor):
         """
         setAmbientMaterial(IFormFactorDecorator self, IMaterial material)
 
-        virtual void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material)
+        void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material) override
 
         Passes the refractive index of the ambient material in which this particle is embedded. 
 
@@ -10406,7 +10399,7 @@ class IFormFactorDecorator(IFormFactor):
         """
         getVolume(IFormFactorDecorator self) -> double
 
-        virtual double IFormFactorDecorator::getVolume() const
+        double IFormFactorDecorator::getVolume() const override
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -10418,7 +10411,7 @@ class IFormFactorDecorator(IFormFactor):
         """
         getRadialExtension(IFormFactorDecorator self) -> double
 
-        virtual double IFormFactorDecorator::getRadialExtension() const
+        double IFormFactorDecorator::getRadialExtension() const override
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -10788,7 +10781,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolyhedron self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const overridefinal
 
         Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. 
 
@@ -10812,7 +10805,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         getVolume(FormFactorPolyhedron self) -> double
 
-        double FormFactorPolyhedron::getVolume() const final
+        double FormFactorPolyhedron::getVolume() const overridefinal
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -10824,7 +10817,7 @@ class FormFactorPolyhedron(IFormFactorBorn):
         """
         getRadialExtension(FormFactorPolyhedron self) -> double
 
-        double FormFactorPolyhedron::getRadialExtension() const final
+        double FormFactorPolyhedron::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -10875,7 +10868,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolygonalPrism self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const overridefinal
 
         Returns the form factor F(q) of this polyhedron, respecting the offset height/2. 
 
@@ -10909,7 +10902,7 @@ class FormFactorPolygonalPrism(IFormFactorBorn):
         """
         getRadialExtension(FormFactorPolygonalPrism self) -> double
 
-        double FormFactorPolygonalPrism::getRadialExtension() const final
+        double FormFactorPolygonalPrism::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -10948,9 +10941,9 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t
 
-        complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorPolygonalSurface_evaluate_for_q(self, q)
@@ -10960,7 +10953,7 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
         """
         getVolume(FormFactorPolygonalSurface self) -> double
 
-        double FormFactorPolygonalSurface::getVolume() const
+        double FormFactorPolygonalSurface::getVolume() const override
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -10972,7 +10965,7 @@ class FormFactorPolygonalSurface(IFormFactorBorn):
         """
         getRadialExtension(FormFactorPolygonalSurface self) -> double
 
-        double FormFactorPolygonalSurface::getRadialExtension() const final
+        double FormFactorPolygonalSurface::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -11036,7 +11029,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid
 
-        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final
+        FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11048,7 +11041,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         """
         accept(FormFactorAnisoPyramid self, ISampleVisitor visitor)
 
-        void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const final
+        void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11149,7 +11142,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         clone(FormFactorBox self) -> FormFactorBox
 
-        FormFactorBox* FormFactorBox::clone() const
+        FormFactorBox* FormFactorBox::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11161,7 +11154,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         accept(FormFactorBox self, ISampleVisitor visitor)
 
-        void FormFactorBox::accept(ISampleVisitor *visitor) const final
+        void FormFactorBox::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11203,7 +11196,7 @@ class FormFactorBox(IFormFactorBorn):
         """
         getRadialExtension(FormFactorBox self) -> double
 
-        double FormFactorBox::getRadialExtension() const final
+        double FormFactorBox::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -11215,9 +11208,9 @@ class FormFactorBox(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorBox self, cvector_t q) -> complex_t
 
-        complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorBox_evaluate_for_q(self, q)
@@ -11276,7 +11269,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         clone(FormFactorCone self) -> FormFactorCone
 
-        FormFactorCone* FormFactorCone::clone() const
+        FormFactorCone* FormFactorCone::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11288,7 +11281,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         accept(FormFactorCone self, ISampleVisitor visitor)
 
-        void FormFactorCone::accept(ISampleVisitor *visitor) const final
+        void FormFactorCone::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11330,7 +11323,7 @@ class FormFactorCone(IFormFactorBorn):
         """
         getRadialExtension(FormFactorCone self) -> double
 
-        double FormFactorCone::getRadialExtension() const final
+        double FormFactorCone::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -11342,9 +11335,9 @@ class FormFactorCone(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorCone self, cvector_t q) -> complex_t
 
-        complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorCone_evaluate_for_q(self, q)
@@ -11403,7 +11396,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         clone(FormFactorCone6 self) -> FormFactorCone6
 
-        virtual FormFactorCone6* FormFactorCone6::clone() const
+        FormFactorCone6* FormFactorCone6::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11415,7 +11408,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         """
         accept(FormFactorCone6 self, ISampleVisitor visitor)
 
-        virtual void FormFactorCone6::accept(ISampleVisitor *visitor) const
+        void FormFactorCone6::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11496,7 +11489,7 @@ class FormFactorCrystal(IFormFactor):
         """
         clone(FormFactorCrystal self) -> FormFactorCrystal
 
-        FormFactorCrystal* FormFactorCrystal::clone() const final
+        FormFactorCrystal* FormFactorCrystal::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11508,7 +11501,7 @@ class FormFactorCrystal(IFormFactor):
         """
         accept(FormFactorCrystal self, ISampleVisitor visitor)
 
-        void FormFactorCrystal::accept(ISampleVisitor *visitor) const final
+        void FormFactorCrystal::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11520,7 +11513,7 @@ class FormFactorCrystal(IFormFactor):
         """
         getVolume(FormFactorCrystal self) -> double
 
-        double FormFactorCrystal::getVolume() const final
+        double FormFactorCrystal::getVolume() const overridefinal
 
         Returns the total volume of the particle of this form factor's shape. 
 
@@ -11532,7 +11525,7 @@ class FormFactorCrystal(IFormFactor):
         """
         getRadialExtension(FormFactorCrystal self) -> double
 
-        double FormFactorCrystal::getRadialExtension() const final
+        double FormFactorCrystal::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -11544,7 +11537,7 @@ class FormFactorCrystal(IFormFactor):
         """
         evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const final
+        complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -11606,7 +11599,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron
 
-        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final
+        FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11618,7 +11611,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         """
         accept(FormFactorCuboctahedron self, ISampleVisitor visitor)
 
-        void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const final
+        void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11707,7 +11700,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         clone(FormFactorCylinder self) -> FormFactorCylinder
 
-        FormFactorCylinder* FormFactorCylinder::clone() const
+        FormFactorCylinder* FormFactorCylinder::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11719,7 +11712,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         accept(FormFactorCylinder self, ISampleVisitor visitor)
 
-        void FormFactorCylinder::accept(ISampleVisitor *visitor) const final
+        void FormFactorCylinder::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11751,7 +11744,7 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         getRadialExtension(FormFactorCylinder self) -> double
 
-        double FormFactorCylinder::getRadialExtension() const final
+        double FormFactorCylinder::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -11763,9 +11756,9 @@ class FormFactorCylinder(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorCylinder self, cvector_t q) -> complex_t
 
-        complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorCylinder_evaluate_for_q(self, q)
@@ -11815,7 +11808,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         """
         clone(FormFactorDecoratorDebyeWaller self) -> FormFactorDecoratorDebyeWaller
 
-        FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const final
+        FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11827,7 +11820,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         """
         accept(FormFactorDecoratorDebyeWaller self, ISampleVisitor visitor)
 
-        void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const final
+        void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11839,7 +11832,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         """
         evaluate(FormFactorDecoratorDebyeWaller self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const final
+        complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -11896,7 +11889,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         """
         clone(FormFactorDodecahedron self) -> FormFactorDodecahedron
 
-        FormFactorDodecahedron* FormFactorDodecahedron::clone() const final
+        FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11908,7 +11901,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         """
         accept(FormFactorDodecahedron self, ISampleVisitor visitor)
 
-        void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const final
+        void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -11978,7 +11971,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder
 
-        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const
+        FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -11990,7 +11983,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         accept(FormFactorEllipsoidalCylinder self, ISampleVisitor visitor)
 
-        void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const final
+        void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12032,7 +12025,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         getRadialExtension(FormFactorEllipsoidalCylinder self) -> double
 
-        double FormFactorEllipsoidalCylinder::getRadialExtension() const final
+        double FormFactorEllipsoidalCylinder::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12044,9 +12037,9 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorEllipsoidalCylinder self, cvector_t q) -> complex_t
 
-        complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorEllipsoidalCylinder_evaluate_for_q(self, q)
@@ -12093,7 +12086,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         clone(FormFactorFullSphere self) -> FormFactorFullSphere
 
-        FormFactorFullSphere* FormFactorFullSphere::clone() const
+        FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12105,7 +12098,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         accept(FormFactorFullSphere self, ISampleVisitor visitor)
 
-        void FormFactorFullSphere::accept(ISampleVisitor *visitor) const final
+        void FormFactorFullSphere::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12127,7 +12120,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         getRadialExtension(FormFactorFullSphere self) -> double
 
-        double FormFactorFullSphere::getRadialExtension() const final
+        double FormFactorFullSphere::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12139,9 +12132,9 @@ class FormFactorFullSphere(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorFullSphere self, cvector_t q) -> complex_t
 
-        complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorFullSphere_evaluate_for_q(self, q)
@@ -12197,7 +12190,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid
 
-        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const
+        FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12209,7 +12202,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         accept(FormFactorFullSpheroid self, ISampleVisitor visitor)
 
-        void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const final
+        void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12241,7 +12234,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         getRadialExtension(FormFactorFullSpheroid self) -> double
 
-        double FormFactorFullSpheroid::getRadialExtension() const final
+        double FormFactorFullSpheroid::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12253,9 +12246,9 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorFullSpheroid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorFullSpheroid_evaluate_for_q(self, q)
@@ -12303,7 +12296,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         clone(FormFactorGauss self) -> FormFactorGauss
 
-        FormFactorGauss* FormFactorGauss::clone() const final
+        FormFactorGauss* FormFactorGauss::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12315,7 +12308,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         accept(FormFactorGauss self, ISampleVisitor visitor)
 
-        void FormFactorGauss::accept(ISampleVisitor *visitor) const final
+        void FormFactorGauss::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12347,7 +12340,7 @@ class FormFactorGauss(IFormFactorBorn):
         """
         getRadialExtension(FormFactorGauss self) -> double
 
-        double FormFactorGauss::getRadialExtension() const final
+        double FormFactorGauss::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12359,9 +12352,9 @@ class FormFactorGauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorGauss_evaluate_for_q(self, q)
@@ -12422,7 +12415,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid
 
-        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const
+        FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12434,7 +12427,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         accept(FormFactorHemiEllipsoid self, ISampleVisitor visitor)
 
-        void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const final
+        void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12476,7 +12469,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         getRadialExtension(FormFactorHemiEllipsoid self) -> double
 
-        double FormFactorHemiEllipsoid::getRadialExtension() const final
+        double FormFactorHemiEllipsoid::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12488,9 +12481,9 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorHemiEllipsoid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorHemiEllipsoid_evaluate_for_q(self, q)
@@ -12535,7 +12528,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         """
         clone(FormFactorIcosahedron self) -> FormFactorIcosahedron
 
-        FormFactorIcosahedron* FormFactorIcosahedron::clone() const final
+        FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12547,7 +12540,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         """
         accept(FormFactorIcosahedron self, ISampleVisitor visitor)
 
-        void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const final
+        void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12620,7 +12613,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss
 
-        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const
+        FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12632,7 +12625,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         accept(FormFactorLongBoxGauss self, ISampleVisitor visitor)
 
-        void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12674,7 +12667,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongBoxGauss self) -> double
 
-        double FormFactorLongBoxGauss::getRadialExtension() const final
+        double FormFactorLongBoxGauss::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12686,9 +12679,9 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongBoxGauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorLongBoxGauss_evaluate_for_q(self, q)
@@ -12749,7 +12742,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz
 
-        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const
+        FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12761,7 +12754,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         accept(FormFactorLongBoxLorentz self, ISampleVisitor visitor)
 
-        void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12803,7 +12796,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongBoxLorentz self) -> double
 
-        double FormFactorLongBoxLorentz::getRadialExtension() const final
+        double FormFactorLongBoxLorentz::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12815,9 +12808,9 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongBoxLorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorLongBoxLorentz_evaluate_for_q(self, q)
@@ -12878,7 +12871,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss
 
-        FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const
+        FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -12890,7 +12883,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         accept(FormFactorLongRipple1Gauss self, ISampleVisitor visitor)
 
-        void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -12932,7 +12925,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongRipple1Gauss self) -> double
 
-        double FormFactorLongRipple1Gauss::getRadialExtension() const final
+        double FormFactorLongRipple1Gauss::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -12944,7 +12937,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -13007,7 +13000,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz
 
-        FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const
+        FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13019,7 +13012,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         accept(FormFactorLongRipple1Lorentz self, ISampleVisitor visitor)
 
-        void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13031,7 +13024,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongRipple1Lorentz self) -> double
 
-        double FormFactorLongRipple1Lorentz::getRadialExtension() const final
+        double FormFactorLongRipple1Lorentz::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13073,7 +13066,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -13139,7 +13132,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss
 
-        FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const
+        FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13151,7 +13144,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         accept(FormFactorLongRipple2Gauss self, ISampleVisitor visitor)
 
-        void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13203,7 +13196,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongRipple2Gauss self) -> double
 
-        double FormFactorLongRipple2Gauss::getRadialExtension() const final
+        double FormFactorLongRipple2Gauss::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13215,7 +13208,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -13279,7 +13272,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz
 
-        FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const
+        FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13291,7 +13284,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         accept(FormFactorLongRipple2Lorentz self, ISampleVisitor visitor)
 
-        void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const final
+        void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13343,7 +13336,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLongRipple2Lorentz self) -> double
 
-        double FormFactorLongRipple2Lorentz::getRadialExtension() const final
+        double FormFactorLongRipple2Lorentz::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13355,7 +13348,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -13405,7 +13398,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         clone(FormFactorLorentz self) -> FormFactorLorentz
 
-        FormFactorLorentz* FormFactorLorentz::clone() const final
+        FormFactorLorentz* FormFactorLorentz::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13417,7 +13410,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         accept(FormFactorLorentz self, ISampleVisitor visitor)
 
-        void FormFactorLorentz::accept(ISampleVisitor *visitor) const final
+        void FormFactorLorentz::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13449,7 +13442,7 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         getRadialExtension(FormFactorLorentz self) -> double
 
-        double FormFactorLorentz::getRadialExtension() const final
+        double FormFactorLorentz::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13461,9 +13454,9 @@ class FormFactorLorentz(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t
 
-        complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorLorentz_evaluate_for_q(self, q)
@@ -13510,7 +13503,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         """
         clone(FormFactorPrism3 self) -> FormFactorPrism3
 
-        virtual FormFactorPrism3* FormFactorPrism3::clone() const
+        FormFactorPrism3* FormFactorPrism3::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13522,7 +13515,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         """
         accept(FormFactorPrism3 self, ISampleVisitor visitor)
 
-        virtual void FormFactorPrism3::accept(ISampleVisitor *visitor) const
+        void FormFactorPrism3::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13581,7 +13574,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         """
         clone(FormFactorPrism6 self) -> FormFactorPrism6
 
-        virtual FormFactorPrism6* FormFactorPrism6::clone() const
+        FormFactorPrism6* FormFactorPrism6::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13593,7 +13586,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         """
         accept(FormFactorPrism6 self, ISampleVisitor visitor)
 
-        virtual void FormFactorPrism6::accept(ISampleVisitor *visitor) const
+        void FormFactorPrism6::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13605,7 +13598,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         """
         getBaseEdge(FormFactorPrism6 self) -> double
 
-        virtual double FormFactorPrism6::getBaseEdge() const 
+        double FormFactorPrism6::getBaseEdge() const 
 
         """
         return _libBornAgainCore.FormFactorPrism6_getBaseEdge(self)
@@ -13664,7 +13657,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         clone(FormFactorPyramid self) -> FormFactorPyramid
 
-        FormFactorPyramid* FormFactorPyramid::clone() const final
+        FormFactorPyramid* FormFactorPyramid::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13676,7 +13669,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         """
         accept(FormFactorPyramid self, ISampleVisitor visitor)
 
-        void FormFactorPyramid::accept(ISampleVisitor *visitor) const final
+        void FormFactorPyramid::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13769,7 +13762,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         clone(FormFactorRipple1 self) -> FormFactorRipple1
 
-        FormFactorRipple1* FormFactorRipple1::clone() const
+        FormFactorRipple1* FormFactorRipple1::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13781,7 +13774,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         accept(FormFactorRipple1 self, ISampleVisitor visitor)
 
-        void FormFactorRipple1::accept(ISampleVisitor *visitor) const final
+        void FormFactorRipple1::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13823,7 +13816,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         getRadialExtension(FormFactorRipple1 self) -> double
 
-        double FormFactorRipple1::getRadialExtension() const final
+        double FormFactorRipple1::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13835,7 +13828,7 @@ class FormFactorRipple1(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t
 
-        complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -13901,7 +13894,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         clone(FormFactorRipple2 self) -> FormFactorRipple2
 
-        FormFactorRipple2* FormFactorRipple2::clone() const
+        FormFactorRipple2* FormFactorRipple2::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -13913,7 +13906,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         accept(FormFactorRipple2 self, ISampleVisitor visitor)
 
-        void FormFactorRipple2::accept(ISampleVisitor *visitor) const final
+        void FormFactorRipple2::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -13965,7 +13958,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         getRadialExtension(FormFactorRipple2 self) -> double
 
-        double FormFactorRipple2::getRadialExtension() const final
+        double FormFactorRipple2::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -13977,7 +13970,7 @@ class FormFactorRipple2(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t
 
-        complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const overridefinal
 
         Complex formfactor. 
 
@@ -14026,7 +14019,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius
 
-        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final
+        FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14038,7 +14031,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereGaussianRadius self, ISampleVisitor visitor)
 
-        void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const final
+        void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14050,7 +14043,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         getRadialExtension(FormFactorSphereGaussianRadius self) -> double
 
-        double FormFactorSphereGaussianRadius::getRadialExtension() const final
+        double FormFactorSphereGaussianRadius::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14062,9 +14055,9 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorSphereGaussianRadius_evaluate_for_q(self, q)
@@ -14111,7 +14104,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius
 
-        FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const final
+        FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14123,7 +14116,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereLogNormalRadius self, ISampleVisitor visitor)
 
-        void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const final
+        void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14135,7 +14128,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         getRadialExtension(FormFactorSphereLogNormalRadius self) -> double
 
-        double FormFactorSphereLogNormalRadius::getRadialExtension() const final
+        double FormFactorSphereLogNormalRadius::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14147,9 +14140,9 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorSphereLogNormalRadius_evaluate_for_q(self, q)
@@ -14196,7 +14189,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         clone(FormFactorSphereUniformRadius self) -> FormFactorSphereUniformRadius
 
-        FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const final
+        FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14208,7 +14201,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         accept(FormFactorSphereUniformRadius self, ISampleVisitor visitor)
 
-        void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const final
+        void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14220,7 +14213,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         getRadialExtension(FormFactorSphereUniformRadius self) -> double
 
-        double FormFactorSphereUniformRadius::getRadialExtension() const final
+        double FormFactorSphereUniformRadius::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14232,9 +14225,9 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorSphereUniformRadius self, cvector_t q) -> complex_t
 
-        complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorSphereUniformRadius_evaluate_for_q(self, q)
@@ -14293,7 +14286,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         clone(FormFactorTetrahedron self) -> FormFactorTetrahedron
 
-        virtual FormFactorTetrahedron* FormFactorTetrahedron::clone() const
+        FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14305,7 +14298,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         """
         accept(FormFactorTetrahedron self, ISampleVisitor visitor)
 
-        virtual void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const
+        void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14384,7 +14377,7 @@ class FormFactorTrivial(IFormFactorBorn):
         """
         clone(FormFactorTrivial self) -> FormFactorTrivial
 
-        FormFactorTrivial* FormFactorTrivial::clone() const
+        FormFactorTrivial* FormFactorTrivial::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14396,7 +14389,7 @@ class FormFactorTrivial(IFormFactorBorn):
         """
         accept(FormFactorTrivial self, ISampleVisitor visitor)
 
-        void FormFactorTrivial::accept(ISampleVisitor *visitor) const final
+        void FormFactorTrivial::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14408,7 +14401,7 @@ class FormFactorTrivial(IFormFactorBorn):
         """
         getRadialExtension(FormFactorTrivial self) -> double
 
-        double FormFactorTrivial::getRadialExtension() const final
+        double FormFactorTrivial::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14420,9 +14413,9 @@ class FormFactorTrivial(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorTrivial self, cvector_t arg2) -> complex_t
 
-        complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const final
+        complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorTrivial_evaluate_for_q(self, arg2)
@@ -14478,7 +14471,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         """
         clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube
 
-        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final
+        FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14490,7 +14483,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         """
         accept(FormFactorTruncatedCube self, ISampleVisitor visitor)
 
-        void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const final
+        void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14559,7 +14552,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere
 
-        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const
+        FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14571,7 +14564,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         accept(FormFactorTruncatedSphere self, ISampleVisitor visitor)
 
-        void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const final
+        void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14603,7 +14596,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         getRadialExtension(FormFactorTruncatedSphere self) -> double
 
-        double FormFactorTruncatedSphere::getRadialExtension() const final
+        double FormFactorTruncatedSphere::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14615,9 +14608,9 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorTruncatedSphere self, cvector_t q) -> complex_t
 
-        virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0
+        complex_t FormFactorTruncatedSphere::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Complex formfactor. 
 
         """
         return _libBornAgainCore.FormFactorTruncatedSphere_evaluate_for_q(self, q)
@@ -14664,7 +14657,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid
 
-        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const
+        FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14676,7 +14669,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         accept(FormFactorTruncatedSpheroid self, ISampleVisitor visitor)
 
-        void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const final
+        void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14718,7 +14711,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         getRadialExtension(FormFactorTruncatedSpheroid self) -> double
 
-        double FormFactorTruncatedSpheroid::getRadialExtension() const final
+        double FormFactorTruncatedSpheroid::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14730,9 +14723,9 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         """
         evaluate_for_q(FormFactorTruncatedSpheroid self, cvector_t q) -> complex_t
 
-        complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const final
+        complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const overridefinal
 
-        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. 
+        Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. 
 
         """
         return _libBornAgainCore.FormFactorTruncatedSpheroid_evaluate_for_q(self, q)
@@ -14746,9 +14739,9 @@ class FormFactorWeighted(IFormFactor):
     """
 
 
-    Coherent sum of different scalar  IFormFactor's with different weights, at the same position.
+    Coherent sum of different scalar  IFormFactor's with different weights.
 
-    Used by  ParticleComposition and  ParticleCoreShell. If particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
+    Used by  ParticleComposition and  ParticleCoreShell. If same particles are at different positions, then consider FormFactorDecoratorMultiPositionFactor (restore from commit 0500a26de76).
 
     C++ includes: FormFactorWeighted.h
 
@@ -14783,7 +14776,7 @@ class FormFactorWeighted(IFormFactor):
         """
         clone(FormFactorWeighted self) -> FormFactorWeighted
 
-        FormFactorWeighted * FormFactorWeighted::clone() const final
+        FormFactorWeighted * FormFactorWeighted::clone() const overridefinal
 
         Returns a clone of this  ISample object. 
 
@@ -14795,7 +14788,7 @@ class FormFactorWeighted(IFormFactor):
         """
         accept(FormFactorWeighted self, ISampleVisitor visitor)
 
-        void FormFactorWeighted::accept(ISampleVisitor *visitor) const final
+        void FormFactorWeighted::accept(ISampleVisitor *visitor) const overridefinal
 
         Calls the  ISampleVisitor's visit method. 
 
@@ -14807,7 +14800,7 @@ class FormFactorWeighted(IFormFactor):
         """
         getRadialExtension(FormFactorWeighted self) -> double
 
-        double FormFactorWeighted::getRadialExtension() const final
+        double FormFactorWeighted::getRadialExtension() const overridefinal
 
         Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations 
 
@@ -14830,7 +14823,7 @@ class FormFactorWeighted(IFormFactor):
         """
         setAmbientMaterial(FormFactorWeighted self, IMaterial material)
 
-        void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) final
+        void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) overridefinal
 
         Passes the refractive index of the ambient material in which this particle is embedded. 
 
@@ -14842,7 +14835,7 @@ class FormFactorWeighted(IFormFactor):
         """
         evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t
 
-        complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const final
+        complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal
 
         Returns scattering amplitude for complex wavevectors ki, kf. 
 
@@ -15299,6 +15292,16 @@ class SimulationOptions(_object):
         """
         return _libBornAgainCore.SimulationOptions_getDefaultVariability(self)
 
+
+    def setIncludeSpecular(self, include_specular):
+        """setIncludeSpecular(SimulationOptions self, bool include_specular)"""
+        return _libBornAgainCore.SimulationOptions_setIncludeSpecular(self, include_specular)
+
+
+    def includeSpecular(self):
+        """includeSpecular(SimulationOptions self) -> bool"""
+        return _libBornAgainCore.SimulationOptions_includeSpecular(self)
+
     __swig_destroy__ = _libBornAgainCore.delete_SimulationOptions
     __del__ = lambda self: None
 SimulationOptions_swigregister = _libBornAgainCore.SimulationOptions_swigregister
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index f20dc6619c03cecfb668f543876c95aa0cd9efec..6c9445dfa1badcb7029ae1158b59d66ce5194561 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -5871,7 +5871,7 @@ SWIG_AsVal_std_complex_Sl_double_Sg_  (PyObject *o, std::complex<double>* val)
 
 
 SWIGINTERNINLINE PyObject*
-SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/home/pospelov/software/local/share/swig/3.0.8/typemaps/swigmacros.swg,104,%ifcplusplus@*/
+SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/share/swig3.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/
 
 const std::complex<double>&
 
@@ -28558,6 +28558,40 @@ SWIGINTERN PyObject *Bin1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject
   return SWIG_Py_Void();
 }
 
+SWIGINTERN PyObject *_wrap_BinContains(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  Bin1D *arg1 = 0 ;
+  double arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  bool result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:BinContains",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1, SWIGTYPE_p_Bin1D,  0  | 0);
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "BinContains" "', argument " "1"" of type '" "Bin1D const &""'"); 
+  }
+  if (!argp1) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "BinContains" "', argument " "1"" of type '" "Bin1D const &""'"); 
+  }
+  arg1 = reinterpret_cast< Bin1D * >(argp1);
+  ecode2 = SWIG_AsVal_double(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "BinContains" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = (bool)BinContains((Bin1D const &)*arg1,arg2);
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_new_Bin1DKVector__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Bin1DKVector *result = 0 ;
@@ -29512,6 +29546,37 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_IAxis_findIndex(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  IAxis *arg1 = (IAxis *) 0 ;
+  double arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  double val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  size_t result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:IAxis_findIndex",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IAxis, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IAxis_findIndex" "', argument " "1"" of type '" "IAxis const *""'"); 
+  }
+  arg1 = reinterpret_cast< IAxis * >(argp1);
+  ecode2 = SWIG_AsVal_double(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "IAxis_findIndex" "', argument " "2"" of type '" "double""'");
+  } 
+  arg2 = static_cast< double >(val2);
+  result = ((IAxis const *)arg1)->findIndex(arg2);
+  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_IAxis___eq__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IAxis *arg1 = (IAxis *) 0 ;
@@ -69794,6 +69859,58 @@ fail:
 }
 
 
+SWIGINTERN PyObject *_wrap_SimulationOptions_setIncludeSpecular(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SimulationOptions *arg1 = (SimulationOptions *) 0 ;
+  bool arg2 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  bool val2 ;
+  int ecode2 = 0 ;
+  PyObject * obj0 = 0 ;
+  PyObject * obj1 = 0 ;
+  
+  if (!PyArg_ParseTuple(args,(char *)"OO:SimulationOptions_setIncludeSpecular",&obj0,&obj1)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SimulationOptions, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationOptions_setIncludeSpecular" "', argument " "1"" of type '" "SimulationOptions *""'"); 
+  }
+  arg1 = reinterpret_cast< SimulationOptions * >(argp1);
+  ecode2 = SWIG_AsVal_bool(obj1, &val2);
+  if (!SWIG_IsOK(ecode2)) {
+    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SimulationOptions_setIncludeSpecular" "', argument " "2"" of type '" "bool""'");
+  } 
+  arg2 = static_cast< bool >(val2);
+  (arg1)->setIncludeSpecular(arg2);
+  resultobj = SWIG_Py_Void();
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
+SWIGINTERN PyObject *_wrap_SimulationOptions_includeSpecular(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+  PyObject *resultobj = 0;
+  SimulationOptions *arg1 = (SimulationOptions *) 0 ;
+  void *argp1 = 0 ;
+  int res1 = 0 ;
+  PyObject * obj0 = 0 ;
+  bool result;
+  
+  if (!PyArg_ParseTuple(args,(char *)"O:SimulationOptions_includeSpecular",&obj0)) SWIG_fail;
+  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_SimulationOptions, 0 |  0 );
+  if (!SWIG_IsOK(res1)) {
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationOptions_includeSpecular" "', argument " "1"" of type '" "SimulationOptions const *""'"); 
+  }
+  arg1 = reinterpret_cast< SimulationOptions * >(argp1);
+  result = (bool)((SimulationOptions const *)arg1)->includeSpecular();
+  resultobj = SWIG_From_bool(static_cast< bool >(result));
+  return resultobj;
+fail:
+  return NULL;
+}
+
+
 SWIGINTERN PyObject *_wrap_delete_SimulationOptions(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   SimulationOptions *arg1 = (SimulationOptions *) 0 ;
@@ -100627,7 +100744,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_IParameterized", _wrap_delete_IParameterized, METH_VARARGS, (char *)"\n"
 		"delete_IParameterized(IParameterized self)\n"
 		"\n"
-		"IParameterized::~IParameterized()\n"
+		"IParameterized::~IParameterized() override\n"
 		"\n"
 		""},
 	 { (char *)"IParameterized_getParameterPool", _wrap_IParameterized_getParameterPool, METH_VARARGS, (char *)"\n"
@@ -101270,6 +101387,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"delete_Bin1D", _wrap_delete_Bin1D, METH_VARARGS, (char *)"delete_Bin1D(Bin1D self)"},
 	 { (char *)"Bin1D_swigregister", Bin1D_swigregister, METH_VARARGS, NULL},
+	 { (char *)"BinContains", _wrap_BinContains, METH_VARARGS, (char *)"BinContains(Bin1D bin, double value) -> bool"},
 	 { (char *)"new_Bin1DKVector", _wrap_new_Bin1DKVector, METH_VARARGS, (char *)"\n"
 		"Bin1DKVector()\n"
 		"Bin1DKVector(kvector_t lower, kvector_t upper)\n"
@@ -101412,6 +101530,7 @@ static PyMethodDef SwigMethods[] = {
 		"find bin index which is best match for given value \n"
 		"\n"
 		""},
+	 { (char *)"IAxis_findIndex", _wrap_IAxis_findIndex, METH_VARARGS, (char *)"IAxis_findIndex(IAxis self, double value) -> size_t"},
 	 { (char *)"IAxis___eq__", _wrap_IAxis___eq__, METH_VARARGS, (char *)"IAxis___eq__(IAxis self, IAxis right) -> bool"},
 	 { (char *)"IAxis___ne__", _wrap_IAxis___ne__, METH_VARARGS, (char *)"IAxis___ne__(IAxis self, IAxis right) -> bool"},
 	 { (char *)"IAxis_getBinCenters", _wrap_IAxis_getBinCenters, METH_VARARGS, (char *)"\n"
@@ -101679,7 +101798,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"ISample_clone", _wrap_ISample_clone, METH_VARARGS, (char *)"\n"
 		"ISample_clone(ISample self) -> ISample\n"
 		"\n"
-		"virtual ISample* ISample::clone() const =0\n"
+		"ISample* ISample::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -102048,7 +102167,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFitStrategy_init", _wrap_IFitStrategy_init, METH_VARARGS, (char *)"\n"
 		"IFitStrategy_init(IFitStrategy self, FitSuiteImp * fit_suite)\n"
 		"\n"
-		"void IFitStrategy::init(FitKernel *fit_suite)\n"
+		"void IFitStrategy::init(FitSuiteImp *fit_suite)\n"
 		"\n"
 		""},
 	 { (char *)"IFitStrategy_execute", _wrap_IFitStrategy_execute, METH_VARARGS, (char *)"\n"
@@ -102527,42 +102646,12 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"FitObject_swigregister", FitObject_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_FitOptions", _wrap_new_FitOptions, METH_VARARGS, (char *)"\n"
-		"new_FitOptions() -> FitOptions\n"
-		"\n"
-		"FitOptions::FitOptions()\n"
-		"\n"
-		""},
-	 { (char *)"delete_FitOptions", _wrap_delete_FitOptions, METH_VARARGS, (char *)"\n"
-		"delete_FitOptions(FitOptions self)\n"
-		"\n"
-		"FitOptions::~FitOptions()\n"
-		"\n"
-		""},
-	 { (char *)"FitOptions_getDerivEpsilon", _wrap_FitOptions_getDerivEpsilon, METH_VARARGS, (char *)"\n"
-		"FitOptions_getDerivEpsilon(FitOptions self) -> double\n"
-		"\n"
-		"double FitOptions::getDerivEpsilon() const \n"
-		"\n"
-		""},
-	 { (char *)"FitOptions_setDerivEpsilon", _wrap_FitOptions_setDerivEpsilon, METH_VARARGS, (char *)"\n"
-		"FitOptions_setDerivEpsilon(FitOptions self, double deriv_epsilon)\n"
-		"\n"
-		"void FitOptions::setDerivEpsilon(double deriv_epsilon)\n"
-		"\n"
-		""},
-	 { (char *)"FitOptions_getStepFactor", _wrap_FitOptions_getStepFactor, METH_VARARGS, (char *)"\n"
-		"FitOptions_getStepFactor(FitOptions self) -> double\n"
-		"\n"
-		"double FitOptions::getStepFactor() const \n"
-		"\n"
-		""},
-	 { (char *)"FitOptions_setStepFactor", _wrap_FitOptions_setStepFactor, METH_VARARGS, (char *)"\n"
-		"FitOptions_setStepFactor(FitOptions self, double step_factor)\n"
-		"\n"
-		"void FitOptions::setStepFactor(double step_factor)\n"
-		"\n"
-		""},
+	 { (char *)"new_FitOptions", _wrap_new_FitOptions, METH_VARARGS, (char *)"new_FitOptions() -> FitOptions"},
+	 { (char *)"delete_FitOptions", _wrap_delete_FitOptions, METH_VARARGS, (char *)"delete_FitOptions(FitOptions self)"},
+	 { (char *)"FitOptions_getDerivEpsilon", _wrap_FitOptions_getDerivEpsilon, METH_VARARGS, (char *)"FitOptions_getDerivEpsilon(FitOptions self) -> double"},
+	 { (char *)"FitOptions_setDerivEpsilon", _wrap_FitOptions_setDerivEpsilon, METH_VARARGS, (char *)"FitOptions_setDerivEpsilon(FitOptions self, double deriv_epsilon)"},
+	 { (char *)"FitOptions_getStepFactor", _wrap_FitOptions_getStepFactor, METH_VARARGS, (char *)"FitOptions_getStepFactor(FitOptions self) -> double"},
+	 { (char *)"FitOptions_setStepFactor", _wrap_FitOptions_setStepFactor, METH_VARARGS, (char *)"FitOptions_setStepFactor(FitOptions self, double step_factor)"},
 	 { (char *)"FitOptions_swigregister", FitOptions_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FitSuite", _wrap_new_FitSuite, METH_VARARGS, (char *)"\n"
 		"new_FitSuite() -> FitSuite\n"
@@ -102635,12 +102724,19 @@ static PyMethodDef SwigMethods[] = {
 		"setMinimizer(std::string const & minimizer_name)\n"
 		"FitSuite_setMinimizer(FitSuite self, IMinimizer * minimizer)\n"
 		"\n"
-		"void FitSuite::setMinimizer(class IMinimizer *minimizer)\n"
+		"void FitSuite::setMinimizer(IMinimizer *minimizer)\n"
 		"\n"
 		"Sets minimizer. \n"
 		"\n"
 		""},
-	 { (char *)"FitSuite_minimizer", _wrap_FitSuite_minimizer, METH_VARARGS, (char *)"FitSuite_minimizer(FitSuite self) -> IMinimizer const *"},
+	 { (char *)"FitSuite_minimizer", _wrap_FitSuite_minimizer, METH_VARARGS, (char *)"\n"
+		"FitSuite_minimizer(FitSuite self) -> IMinimizer const *\n"
+		"\n"
+		"const IMinimizer * FitSuite::minimizer() const\n"
+		"\n"
+		"Returns minimizer. \n"
+		"\n"
+		""},
 	 { (char *)"FitSuite_initPrint", _wrap_FitSuite_initPrint, METH_VARARGS, (char *)"\n"
 		"FitSuite_initPrint(FitSuite self, int print_every_nth)\n"
 		"\n"
@@ -102748,7 +102844,14 @@ static PyMethodDef SwigMethods[] = {
 		"returns  FitObject (pair of simulation/real data) \n"
 		"\n"
 		""},
-	 { (char *)"FitSuite_fitParameters", _wrap_FitSuite_fitParameters, METH_VARARGS, (char *)"FitSuite_fitParameters(FitSuite self) -> FitParameterSet *"},
+	 { (char *)"FitSuite_fitParameters", _wrap_FitSuite_fitParameters, METH_VARARGS, (char *)"\n"
+		"FitSuite_fitParameters(FitSuite self) -> FitParameterSet *\n"
+		"\n"
+		"FitParameterSet * FitSuite::fitParameters()\n"
+		"\n"
+		"Returns reference to fit parameters. \n"
+		"\n"
+		""},
 	 { (char *)"FitSuite_getFitStrategies", _wrap_FitSuite_getFitStrategies, METH_VARARGS, (char *)"\n"
 		"FitSuite_getFitStrategies(FitSuite self) -> FitSuiteStrategies *\n"
 		"\n"
@@ -104806,13 +104909,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_IFormFactor", _wrap_delete_IFormFactor, METH_VARARGS, (char *)"\n"
 		"delete_IFormFactor(IFormFactor self)\n"
 		"\n"
-		"IFormFactor::~IFormFactor()\n"
+		"IFormFactor::~IFormFactor() override\n"
 		"\n"
 		""},
 	 { (char *)"IFormFactor_clone", _wrap_IFormFactor_clone, METH_VARARGS, (char *)"\n"
 		"IFormFactor_clone(IFormFactor self) -> IFormFactor\n"
 		"\n"
-		"virtual IFormFactor* IFormFactor::clone() const =0\n"
+		"IFormFactor* IFormFactor::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -104820,7 +104923,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactor_accept", _wrap_IFormFactor_accept, METH_VARARGS, (char *)"\n"
 		"IFormFactor_accept(IFormFactor self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void IFormFactor::accept(ISampleVisitor *visitor) const =0\n"
+		"void IFormFactor::accept(ISampleVisitor *visitor) const override=0\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -104939,13 +105042,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_IFormFactorBorn", _wrap_delete_IFormFactorBorn, METH_VARARGS, (char *)"\n"
 		"delete_IFormFactorBorn(IFormFactorBorn self)\n"
 		"\n"
-		"virtual IFormFactorBorn::~IFormFactorBorn()\n"
+		"IFormFactorBorn::~IFormFactorBorn() override\n"
 		"\n"
 		""},
 	 { (char *)"IFormFactorBorn_clone", _wrap_IFormFactorBorn_clone, METH_VARARGS, (char *)"\n"
 		"IFormFactorBorn_clone(IFormFactorBorn self) -> IFormFactorBorn\n"
 		"\n"
-		"virtual IFormFactorBorn* IFormFactorBorn::clone() const =0\n"
+		"IFormFactorBorn* IFormFactorBorn::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -104953,7 +105056,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactorBorn_evaluate", _wrap_IFormFactorBorn_evaluate, METH_VARARGS, (char *)"\n"
 		"IFormFactorBorn_evaluate(IFormFactorBorn self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const\n"
+		"complex_t IFormFactorBorn::evaluate(const WavevectorInfo &wavevectors) const override\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -104963,7 +105066,7 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		"virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"disown_IFormFactorBorn", _wrap_disown_IFormFactorBorn, METH_VARARGS, NULL},
@@ -104973,13 +105076,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_IFormFactorDecorator", _wrap_delete_IFormFactorDecorator, METH_VARARGS, (char *)"\n"
 		"delete_IFormFactorDecorator(IFormFactorDecorator self)\n"
 		"\n"
-		"virtual IFormFactorDecorator::~IFormFactorDecorator()\n"
+		"IFormFactorDecorator::~IFormFactorDecorator() override\n"
 		"\n"
 		""},
 	 { (char *)"IFormFactorDecorator_clone", _wrap_IFormFactorDecorator_clone, METH_VARARGS, (char *)"\n"
 		"IFormFactorDecorator_clone(IFormFactorDecorator self) -> IFormFactorDecorator\n"
 		"\n"
-		"virtual IFormFactorDecorator* IFormFactorDecorator::clone() const =0\n"
+		"IFormFactorDecorator* IFormFactorDecorator::clone() const override=0\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -104987,7 +105090,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactorDecorator_accept", _wrap_IFormFactorDecorator_accept, METH_VARARGS, (char *)"\n"
 		"IFormFactorDecorator_accept(IFormFactorDecorator self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void IFormFactorDecorator::accept(ISampleVisitor *visitor) const =0\n"
+		"void IFormFactorDecorator::accept(ISampleVisitor *visitor) const override=0\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -104995,7 +105098,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactorDecorator_setAmbientMaterial", _wrap_IFormFactorDecorator_setAmbientMaterial, METH_VARARGS, (char *)"\n"
 		"IFormFactorDecorator_setAmbientMaterial(IFormFactorDecorator self, IMaterial material)\n"
 		"\n"
-		"virtual void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material)\n"
+		"void IFormFactorDecorator::setAmbientMaterial(const IMaterial &material) override\n"
 		"\n"
 		"Passes the refractive index of the ambient material in which this particle is embedded. \n"
 		"\n"
@@ -105003,7 +105106,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactorDecorator_getVolume", _wrap_IFormFactorDecorator_getVolume, METH_VARARGS, (char *)"\n"
 		"IFormFactorDecorator_getVolume(IFormFactorDecorator self) -> double\n"
 		"\n"
-		"virtual double IFormFactorDecorator::getVolume() const\n"
+		"double IFormFactorDecorator::getVolume() const override\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -105011,7 +105114,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IFormFactorDecorator_getRadialExtension", _wrap_IFormFactorDecorator_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"IFormFactorDecorator_getRadialExtension(IFormFactorDecorator self) -> double\n"
 		"\n"
-		"virtual double IFormFactorDecorator::getRadialExtension() const\n"
+		"double IFormFactorDecorator::getRadialExtension() const override\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105178,7 +105281,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_evaluate_for_q", _wrap_FormFactorPolyhedron_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_evaluate_for_q(FormFactorPolyhedron self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorPolyhedron::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Returns the form factor F(q) of this polyhedron, respecting the offset z_origin. \n"
 		"\n"
@@ -105194,7 +105297,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_getVolume", _wrap_FormFactorPolyhedron_getVolume, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_getVolume(FormFactorPolyhedron self) -> double\n"
 		"\n"
-		"double FormFactorPolyhedron::getVolume() const final\n"
+		"double FormFactorPolyhedron::getVolume() const overridefinal\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -105202,7 +105305,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolyhedron_getRadialExtension", _wrap_FormFactorPolyhedron_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolyhedron_getRadialExtension(FormFactorPolyhedron self) -> double\n"
 		"\n"
-		"double FormFactorPolyhedron::getRadialExtension() const final\n"
+		"double FormFactorPolyhedron::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105220,7 +105323,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalPrism_evaluate_for_q", _wrap_FormFactorPolygonalPrism_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_evaluate_for_q(FormFactorPolygonalPrism self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorPolygonalPrism::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Returns the form factor F(q) of this polyhedron, respecting the offset height/2. \n"
 		"\n"
@@ -105242,7 +105345,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalPrism_getRadialExtension", _wrap_FormFactorPolygonalPrism_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalPrism_getRadialExtension(FormFactorPolygonalPrism self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalPrism::getRadialExtension() const final\n"
+		"double FormFactorPolygonalPrism::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105252,15 +105355,15 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalSurface_evaluate_for_q", _wrap_FormFactorPolygonalSurface_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalSurface_evaluate_for_q(FormFactorPolygonalSurface self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorPolygonalSurface::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"FormFactorPolygonalSurface_getVolume", _wrap_FormFactorPolygonalSurface_getVolume, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalSurface_getVolume(FormFactorPolygonalSurface self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalSurface::getVolume() const\n"
+		"double FormFactorPolygonalSurface::getVolume() const override\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -105268,7 +105371,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPolygonalSurface_getRadialExtension", _wrap_FormFactorPolygonalSurface_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorPolygonalSurface_getRadialExtension(FormFactorPolygonalSurface self) -> double\n"
 		"\n"
-		"double FormFactorPolygonalSurface::getRadialExtension() const final\n"
+		"double FormFactorPolygonalSurface::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105299,7 +105402,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorAnisoPyramid_clone", _wrap_FormFactorAnisoPyramid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_clone(FormFactorAnisoPyramid self) -> FormFactorAnisoPyramid\n"
 		"\n"
-		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const final\n"
+		"FormFactorAnisoPyramid* FormFactorAnisoPyramid::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105307,7 +105410,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorAnisoPyramid_accept", _wrap_FormFactorAnisoPyramid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorAnisoPyramid_accept(FormFactorAnisoPyramid self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorAnisoPyramid::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105359,7 +105462,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_clone", _wrap_FormFactorBox_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_clone(FormFactorBox self) -> FormFactorBox\n"
 		"\n"
-		"FormFactorBox* FormFactorBox::clone() const\n"
+		"FormFactorBox* FormFactorBox::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105367,7 +105470,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_accept", _wrap_FormFactorBox_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_accept(FormFactorBox self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorBox::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorBox::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105393,7 +105496,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_getRadialExtension", _wrap_FormFactorBox_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_getRadialExtension(FormFactorBox self) -> double\n"
 		"\n"
-		"double FormFactorBox::getRadialExtension() const final\n"
+		"double FormFactorBox::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105401,9 +105504,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorBox_evaluate_for_q", _wrap_FormFactorBox_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorBox_evaluate_for_q(FormFactorBox self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorBox::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorBox", _wrap_delete_FormFactorBox, METH_VARARGS, (char *)"delete_FormFactorBox(FormFactorBox self)"},
@@ -105429,7 +105532,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_clone", _wrap_FormFactorCone_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_clone(FormFactorCone self) -> FormFactorCone\n"
 		"\n"
-		"FormFactorCone* FormFactorCone::clone() const\n"
+		"FormFactorCone* FormFactorCone::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105437,7 +105540,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_accept", _wrap_FormFactorCone_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_accept(FormFactorCone self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorCone::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorCone::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105463,7 +105566,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_getRadialExtension", _wrap_FormFactorCone_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_getRadialExtension(FormFactorCone self) -> double\n"
 		"\n"
-		"double FormFactorCone::getRadialExtension() const final\n"
+		"double FormFactorCone::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105471,17 +105574,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone_evaluate_for_q", _wrap_FormFactorCone_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorCone_evaluate_for_q(FormFactorCone self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const final\n"
-		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
-		"\n"
-		""},
-	 { (char *)"delete_FormFactorCone", _wrap_delete_FormFactorCone, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorCone(FormFactorCone self)\n"
+		"complex_t FormFactorCone::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"virtual FormFactorCone::~FormFactorCone()\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorCone", _wrap_delete_FormFactorCone, METH_VARARGS, (char *)"delete_FormFactorCone(FormFactorCone self)"},
 	 { (char *)"FormFactorCone_swigregister", FormFactorCone_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorCone6", _wrap_new_FormFactorCone6, METH_VARARGS, (char *)"\n"
 		"new_FormFactorCone6(double base_edge, double height, double alpha) -> FormFactorCone6\n"
@@ -105504,7 +105602,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone6_clone", _wrap_FormFactorCone6_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_clone(FormFactorCone6 self) -> FormFactorCone6\n"
 		"\n"
-		"virtual FormFactorCone6* FormFactorCone6::clone() const\n"
+		"FormFactorCone6* FormFactorCone6::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105512,7 +105610,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCone6_accept", _wrap_FormFactorCone6_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCone6_accept(FormFactorCone6 self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void FormFactorCone6::accept(ISampleVisitor *visitor) const\n"
+		"void FormFactorCone6::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105546,13 +105644,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_FormFactorCrystal", _wrap_delete_FormFactorCrystal, METH_VARARGS, (char *)"\n"
 		"delete_FormFactorCrystal(FormFactorCrystal self)\n"
 		"\n"
-		"FormFactorCrystal::~FormFactorCrystal() final\n"
+		"FormFactorCrystal::~FormFactorCrystal() overridefinal\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorCrystal_clone", _wrap_FormFactorCrystal_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_clone(FormFactorCrystal self) -> FormFactorCrystal\n"
 		"\n"
-		"FormFactorCrystal* FormFactorCrystal::clone() const final\n"
+		"FormFactorCrystal* FormFactorCrystal::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105560,7 +105658,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_accept", _wrap_FormFactorCrystal_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_accept(FormFactorCrystal self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorCrystal::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorCrystal::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105568,7 +105666,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_getVolume", _wrap_FormFactorCrystal_getVolume, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_getVolume(FormFactorCrystal self) -> double\n"
 		"\n"
-		"double FormFactorCrystal::getVolume() const final\n"
+		"double FormFactorCrystal::getVolume() const overridefinal\n"
 		"\n"
 		"Returns the total volume of the particle of this form factor's shape. \n"
 		"\n"
@@ -105576,7 +105674,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_getRadialExtension", _wrap_FormFactorCrystal_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_getRadialExtension(FormFactorCrystal self) -> double\n"
 		"\n"
-		"double FormFactorCrystal::getRadialExtension() const final\n"
+		"double FormFactorCrystal::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105584,7 +105682,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCrystal_evaluate", _wrap_FormFactorCrystal_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorCrystal_evaluate(FormFactorCrystal self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const final\n"
+		"complex_t FormFactorCrystal::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -105614,7 +105712,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCuboctahedron_clone", _wrap_FormFactorCuboctahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_clone(FormFactorCuboctahedron self) -> FormFactorCuboctahedron\n"
 		"\n"
-		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const final\n"
+		"FormFactorCuboctahedron* FormFactorCuboctahedron::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105622,7 +105720,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCuboctahedron_accept", _wrap_FormFactorCuboctahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCuboctahedron_accept(FormFactorCuboctahedron self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorCuboctahedron::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105662,7 +105760,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_clone", _wrap_FormFactorCylinder_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_clone(FormFactorCylinder self) -> FormFactorCylinder\n"
 		"\n"
-		"FormFactorCylinder* FormFactorCylinder::clone() const\n"
+		"FormFactorCylinder* FormFactorCylinder::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105670,7 +105768,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_accept", _wrap_FormFactorCylinder_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_accept(FormFactorCylinder self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorCylinder::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorCylinder::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105690,7 +105788,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_getRadialExtension", _wrap_FormFactorCylinder_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_getRadialExtension(FormFactorCylinder self) -> double\n"
 		"\n"
-		"double FormFactorCylinder::getRadialExtension() const final\n"
+		"double FormFactorCylinder::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105698,17 +105796,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorCylinder_evaluate_for_q", _wrap_FormFactorCylinder_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorCylinder_evaluate_for_q(FormFactorCylinder self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorCylinder::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
-		"\n"
-		""},
-	 { (char *)"delete_FormFactorCylinder", _wrap_delete_FormFactorCylinder, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorCylinder(FormFactorCylinder self)\n"
-		"\n"
-		"virtual FormFactorCylinder::~FormFactorCylinder()\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorCylinder", _wrap_delete_FormFactorCylinder, METH_VARARGS, (char *)"delete_FormFactorCylinder(FormFactorCylinder self)"},
 	 { (char *)"FormFactorCylinder_swigregister", FormFactorCylinder_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorDecoratorDebyeWaller", _wrap_new_FormFactorDecoratorDebyeWaller, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller(IFormFactor form_factor, double dw_h_factor, double dw_r_factor)\n"
@@ -105722,7 +105815,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_clone", _wrap_FormFactorDecoratorDebyeWaller_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_clone(FormFactorDecoratorDebyeWaller self) -> FormFactorDecoratorDebyeWaller\n"
 		"\n"
-		"FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const final\n"
+		"FormFactorDecoratorDebyeWaller* FormFactorDecoratorDebyeWaller::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105730,7 +105823,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_accept", _wrap_FormFactorDecoratorDebyeWaller_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_accept(FormFactorDecoratorDebyeWaller self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorDecoratorDebyeWaller::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105738,7 +105831,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDecoratorDebyeWaller_evaluate", _wrap_FormFactorDecoratorDebyeWaller_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorDecoratorDebyeWaller_evaluate(FormFactorDecoratorDebyeWaller self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const final\n"
+		"complex_t FormFactorDecoratorDebyeWaller::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -105762,7 +105855,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDodecahedron_clone", _wrap_FormFactorDodecahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorDodecahedron_clone(FormFactorDodecahedron self) -> FormFactorDodecahedron\n"
 		"\n"
-		"FormFactorDodecahedron* FormFactorDodecahedron::clone() const final\n"
+		"FormFactorDodecahedron* FormFactorDodecahedron::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105770,7 +105863,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorDodecahedron_accept", _wrap_FormFactorDodecahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorDodecahedron_accept(FormFactorDodecahedron self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorDodecahedron::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105803,7 +105896,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_clone", _wrap_FormFactorEllipsoidalCylinder_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_clone(FormFactorEllipsoidalCylinder self) -> FormFactorEllipsoidalCylinder\n"
 		"\n"
-		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const\n"
+		"FormFactorEllipsoidalCylinder* FormFactorEllipsoidalCylinder::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105811,7 +105904,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_accept", _wrap_FormFactorEllipsoidalCylinder_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_accept(FormFactorEllipsoidalCylinder self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorEllipsoidalCylinder::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105837,7 +105930,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_getRadialExtension", _wrap_FormFactorEllipsoidalCylinder_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_getRadialExtension(FormFactorEllipsoidalCylinder self) -> double\n"
 		"\n"
-		"double FormFactorEllipsoidalCylinder::getRadialExtension() const final\n"
+		"double FormFactorEllipsoidalCylinder::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105845,9 +105938,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorEllipsoidalCylinder_evaluate_for_q", _wrap_FormFactorEllipsoidalCylinder_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorEllipsoidalCylinder_evaluate_for_q(FormFactorEllipsoidalCylinder self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorEllipsoidalCylinder::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorEllipsoidalCylinder", _wrap_delete_FormFactorEllipsoidalCylinder, METH_VARARGS, (char *)"delete_FormFactorEllipsoidalCylinder(FormFactorEllipsoidalCylinder self)"},
@@ -105861,7 +105954,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_clone", _wrap_FormFactorFullSphere_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_clone(FormFactorFullSphere self) -> FormFactorFullSphere\n"
 		"\n"
-		"FormFactorFullSphere* FormFactorFullSphere::clone() const\n"
+		"FormFactorFullSphere* FormFactorFullSphere::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105869,7 +105962,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_accept", _wrap_FormFactorFullSphere_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_accept(FormFactorFullSphere self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorFullSphere::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorFullSphere::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105883,7 +105976,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_getRadialExtension", _wrap_FormFactorFullSphere_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_getRadialExtension(FormFactorFullSphere self) -> double\n"
 		"\n"
-		"double FormFactorFullSphere::getRadialExtension() const final\n"
+		"double FormFactorFullSphere::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105891,9 +105984,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSphere_evaluate_for_q", _wrap_FormFactorFullSphere_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSphere_evaluate_for_q(FormFactorFullSphere self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorFullSphere::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorFullSphere", _wrap_delete_FormFactorFullSphere, METH_VARARGS, (char *)"delete_FormFactorFullSphere(FormFactorFullSphere self)"},
@@ -105916,7 +106009,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_clone", _wrap_FormFactorFullSpheroid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_clone(FormFactorFullSpheroid self) -> FormFactorFullSpheroid\n"
 		"\n"
-		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const\n"
+		"FormFactorFullSpheroid* FormFactorFullSpheroid::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105924,7 +106017,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_accept", _wrap_FormFactorFullSpheroid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_accept(FormFactorFullSpheroid self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorFullSpheroid::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105944,7 +106037,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_getRadialExtension", _wrap_FormFactorFullSpheroid_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_getRadialExtension(FormFactorFullSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorFullSpheroid::getRadialExtension() const final\n"
+		"double FormFactorFullSpheroid::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -105952,9 +106045,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorFullSpheroid_evaluate_for_q", _wrap_FormFactorFullSpheroid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorFullSpheroid_evaluate_for_q(FormFactorFullSpheroid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorFullSpheroid::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorFullSpheroid", _wrap_delete_FormFactorFullSpheroid, METH_VARARGS, (char *)"delete_FormFactorFullSpheroid(FormFactorFullSpheroid self)"},
@@ -105969,7 +106062,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_clone", _wrap_FormFactorGauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_clone(FormFactorGauss self) -> FormFactorGauss\n"
 		"\n"
-		"FormFactorGauss* FormFactorGauss::clone() const final\n"
+		"FormFactorGauss* FormFactorGauss::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -105977,7 +106070,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_accept", _wrap_FormFactorGauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_accept(FormFactorGauss self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorGauss::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorGauss::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -105997,7 +106090,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_getRadialExtension", _wrap_FormFactorGauss_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_getRadialExtension(FormFactorGauss self) -> double\n"
 		"\n"
-		"double FormFactorGauss::getRadialExtension() const final\n"
+		"double FormFactorGauss::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106005,9 +106098,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorGauss_evaluate_for_q", _wrap_FormFactorGauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorGauss_evaluate_for_q(FormFactorGauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorGauss::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorGauss", _wrap_delete_FormFactorGauss, METH_VARARGS, (char *)"delete_FormFactorGauss(FormFactorGauss self)"},
@@ -106039,7 +106132,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_clone", _wrap_FormFactorHemiEllipsoid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_clone(FormFactorHemiEllipsoid self) -> FormFactorHemiEllipsoid\n"
 		"\n"
-		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const\n"
+		"FormFactorHemiEllipsoid* FormFactorHemiEllipsoid::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106047,7 +106140,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_accept", _wrap_FormFactorHemiEllipsoid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_accept(FormFactorHemiEllipsoid self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorHemiEllipsoid::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106073,7 +106166,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_getRadialExtension", _wrap_FormFactorHemiEllipsoid_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_getRadialExtension(FormFactorHemiEllipsoid self) -> double\n"
 		"\n"
-		"double FormFactorHemiEllipsoid::getRadialExtension() const final\n"
+		"double FormFactorHemiEllipsoid::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106081,9 +106174,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorHemiEllipsoid_evaluate_for_q", _wrap_FormFactorHemiEllipsoid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorHemiEllipsoid_evaluate_for_q(FormFactorHemiEllipsoid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorHemiEllipsoid::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"FormFactorHemiEllipsoid_swigregister", FormFactorHemiEllipsoid_swigregister, METH_VARARGS, NULL},
@@ -106096,7 +106189,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorIcosahedron_clone", _wrap_FormFactorIcosahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorIcosahedron_clone(FormFactorIcosahedron self) -> FormFactorIcosahedron\n"
 		"\n"
-		"FormFactorIcosahedron* FormFactorIcosahedron::clone() const final\n"
+		"FormFactorIcosahedron* FormFactorIcosahedron::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106104,7 +106197,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorIcosahedron_accept", _wrap_FormFactorIcosahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorIcosahedron_accept(FormFactorIcosahedron self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorIcosahedron::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106140,7 +106233,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_clone", _wrap_FormFactorLongBoxGauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_clone(FormFactorLongBoxGauss self) -> FormFactorLongBoxGauss\n"
 		"\n"
-		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const\n"
+		"FormFactorLongBoxGauss* FormFactorLongBoxGauss::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106148,7 +106241,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_accept", _wrap_FormFactorLongBoxGauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_accept(FormFactorLongBoxGauss self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongBoxGauss::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106174,7 +106267,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_getRadialExtension", _wrap_FormFactorLongBoxGauss_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_getRadialExtension(FormFactorLongBoxGauss self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxGauss::getRadialExtension() const final\n"
+		"double FormFactorLongBoxGauss::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106182,9 +106275,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxGauss_evaluate_for_q", _wrap_FormFactorLongBoxGauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxGauss_evaluate_for_q(FormFactorLongBoxGauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongBoxGauss::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorLongBoxGauss", _wrap_delete_FormFactorLongBoxGauss, METH_VARARGS, (char *)"delete_FormFactorLongBoxGauss(FormFactorLongBoxGauss self)"},
@@ -106212,7 +106305,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_clone", _wrap_FormFactorLongBoxLorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_clone(FormFactorLongBoxLorentz self) -> FormFactorLongBoxLorentz\n"
 		"\n"
-		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const\n"
+		"FormFactorLongBoxLorentz* FormFactorLongBoxLorentz::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106220,7 +106313,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_accept", _wrap_FormFactorLongBoxLorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_accept(FormFactorLongBoxLorentz self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongBoxLorentz::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106246,7 +106339,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_getRadialExtension", _wrap_FormFactorLongBoxLorentz_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_getRadialExtension(FormFactorLongBoxLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongBoxLorentz::getRadialExtension() const final\n"
+		"double FormFactorLongBoxLorentz::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106254,9 +106347,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongBoxLorentz_evaluate_for_q", _wrap_FormFactorLongBoxLorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongBoxLorentz_evaluate_for_q(FormFactorLongBoxLorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongBoxLorentz::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorLongBoxLorentz", _wrap_delete_FormFactorLongBoxLorentz, METH_VARARGS, (char *)"delete_FormFactorLongBoxLorentz(FormFactorLongBoxLorentz self)"},
@@ -106284,7 +106377,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_clone", _wrap_FormFactorLongRipple1Gauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_clone(FormFactorLongRipple1Gauss self) -> FormFactorLongRipple1Gauss\n"
 		"\n"
-		"FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const\n"
+		"FormFactorLongRipple1Gauss* FormFactorLongRipple1Gauss::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106292,7 +106385,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_accept", _wrap_FormFactorLongRipple1Gauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_accept(FormFactorLongRipple1Gauss self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongRipple1Gauss::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106318,7 +106411,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_getRadialExtension", _wrap_FormFactorLongRipple1Gauss_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_getRadialExtension(FormFactorLongRipple1Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Gauss::getRadialExtension() const final\n"
+		"double FormFactorLongRipple1Gauss::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106326,17 +106419,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Gauss_evaluate_for_q", _wrap_FormFactorLongRipple1Gauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Gauss_evaluate_for_q(FormFactorLongRipple1Gauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongRipple1Gauss::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorLongRipple1Gauss", _wrap_delete_FormFactorLongRipple1Gauss, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorLongRipple1Gauss(FormFactorLongRipple1Gauss self)\n"
-		"\n"
-		"virtual FormFactorLongRipple1Gauss::~FormFactorLongRipple1Gauss()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorLongRipple1Gauss", _wrap_delete_FormFactorLongRipple1Gauss, METH_VARARGS, (char *)"delete_FormFactorLongRipple1Gauss(FormFactorLongRipple1Gauss self)"},
 	 { (char *)"FormFactorLongRipple1Gauss_swigregister", FormFactorLongRipple1Gauss_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorLongRipple1Lorentz", _wrap_new_FormFactorLongRipple1Lorentz, METH_VARARGS, (char *)"\n"
 		"new_FormFactorLongRipple1Lorentz(double length, double width, double height) -> FormFactorLongRipple1Lorentz\n"
@@ -106361,7 +106449,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_clone", _wrap_FormFactorLongRipple1Lorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_clone(FormFactorLongRipple1Lorentz self) -> FormFactorLongRipple1Lorentz\n"
 		"\n"
-		"FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const\n"
+		"FormFactorLongRipple1Lorentz* FormFactorLongRipple1Lorentz::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106369,7 +106457,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_accept", _wrap_FormFactorLongRipple1Lorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_accept(FormFactorLongRipple1Lorentz self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongRipple1Lorentz::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106377,7 +106465,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_getRadialExtension", _wrap_FormFactorLongRipple1Lorentz_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_getRadialExtension(FormFactorLongRipple1Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple1Lorentz::getRadialExtension() const final\n"
+		"double FormFactorLongRipple1Lorentz::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106403,17 +106491,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple1Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple1Lorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple1Lorentz_evaluate_for_q(FormFactorLongRipple1Lorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongRipple1Lorentz::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorLongRipple1Lorentz", _wrap_delete_FormFactorLongRipple1Lorentz, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorLongRipple1Lorentz(FormFactorLongRipple1Lorentz self)\n"
-		"\n"
-		"virtual FormFactorLongRipple1Lorentz::~FormFactorLongRipple1Lorentz()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorLongRipple1Lorentz", _wrap_delete_FormFactorLongRipple1Lorentz, METH_VARARGS, (char *)"delete_FormFactorLongRipple1Lorentz(FormFactorLongRipple1Lorentz self)"},
 	 { (char *)"FormFactorLongRipple1Lorentz_swigregister", FormFactorLongRipple1Lorentz_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorLongRipple2Gauss", _wrap_new_FormFactorLongRipple2Gauss, METH_VARARGS, (char *)"\n"
 		"new_FormFactorLongRipple2Gauss(double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Gauss\n"
@@ -106441,7 +106524,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_clone", _wrap_FormFactorLongRipple2Gauss_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_clone(FormFactorLongRipple2Gauss self) -> FormFactorLongRipple2Gauss\n"
 		"\n"
-		"FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const\n"
+		"FormFactorLongRipple2Gauss* FormFactorLongRipple2Gauss::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106449,7 +106532,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_accept", _wrap_FormFactorLongRipple2Gauss_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_accept(FormFactorLongRipple2Gauss self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongRipple2Gauss::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106481,7 +106564,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_getRadialExtension", _wrap_FormFactorLongRipple2Gauss_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_getRadialExtension(FormFactorLongRipple2Gauss self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Gauss::getRadialExtension() const final\n"
+		"double FormFactorLongRipple2Gauss::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106489,17 +106572,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Gauss_evaluate_for_q", _wrap_FormFactorLongRipple2Gauss_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Gauss_evaluate_for_q(FormFactorLongRipple2Gauss self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongRipple2Gauss::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorLongRipple2Gauss", _wrap_delete_FormFactorLongRipple2Gauss, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorLongRipple2Gauss(FormFactorLongRipple2Gauss self)\n"
-		"\n"
-		"virtual FormFactorLongRipple2Gauss::~FormFactorLongRipple2Gauss()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorLongRipple2Gauss", _wrap_delete_FormFactorLongRipple2Gauss, METH_VARARGS, (char *)"delete_FormFactorLongRipple2Gauss(FormFactorLongRipple2Gauss self)"},
 	 { (char *)"FormFactorLongRipple2Gauss_swigregister", FormFactorLongRipple2Gauss_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorLongRipple2Lorentz", _wrap_new_FormFactorLongRipple2Lorentz, METH_VARARGS, (char *)"\n"
 		"new_FormFactorLongRipple2Lorentz(double length, double width, double height, double asymmetry) -> FormFactorLongRipple2Lorentz\n"
@@ -106525,7 +106603,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_clone", _wrap_FormFactorLongRipple2Lorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_clone(FormFactorLongRipple2Lorentz self) -> FormFactorLongRipple2Lorentz\n"
 		"\n"
-		"FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const\n"
+		"FormFactorLongRipple2Lorentz* FormFactorLongRipple2Lorentz::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106533,7 +106611,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_accept", _wrap_FormFactorLongRipple2Lorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_accept(FormFactorLongRipple2Lorentz self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLongRipple2Lorentz::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106565,7 +106643,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_getRadialExtension", _wrap_FormFactorLongRipple2Lorentz_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_getRadialExtension(FormFactorLongRipple2Lorentz self) -> double\n"
 		"\n"
-		"double FormFactorLongRipple2Lorentz::getRadialExtension() const final\n"
+		"double FormFactorLongRipple2Lorentz::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106573,17 +106651,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLongRipple2Lorentz_evaluate_for_q", _wrap_FormFactorLongRipple2Lorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLongRipple2Lorentz_evaluate_for_q(FormFactorLongRipple2Lorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLongRipple2Lorentz::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorLongRipple2Lorentz", _wrap_delete_FormFactorLongRipple2Lorentz, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorLongRipple2Lorentz(FormFactorLongRipple2Lorentz self)\n"
-		"\n"
-		"virtual FormFactorLongRipple2Lorentz::~FormFactorLongRipple2Lorentz()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorLongRipple2Lorentz", _wrap_delete_FormFactorLongRipple2Lorentz, METH_VARARGS, (char *)"delete_FormFactorLongRipple2Lorentz(FormFactorLongRipple2Lorentz self)"},
 	 { (char *)"FormFactorLongRipple2Lorentz_swigregister", FormFactorLongRipple2Lorentz_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorLorentz", _wrap_new_FormFactorLorentz, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz(double volume)\n"
@@ -106595,7 +106668,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_clone", _wrap_FormFactorLorentz_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_clone(FormFactorLorentz self) -> FormFactorLorentz\n"
 		"\n"
-		"FormFactorLorentz* FormFactorLorentz::clone() const final\n"
+		"FormFactorLorentz* FormFactorLorentz::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106603,7 +106676,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_accept", _wrap_FormFactorLorentz_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_accept(FormFactorLorentz self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorLorentz::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorLorentz::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106623,7 +106696,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_getRadialExtension", _wrap_FormFactorLorentz_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_getRadialExtension(FormFactorLorentz self) -> double\n"
 		"\n"
-		"double FormFactorLorentz::getRadialExtension() const final\n"
+		"double FormFactorLorentz::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106631,9 +106704,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorLorentz_evaluate_for_q", _wrap_FormFactorLorentz_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorLorentz_evaluate_for_q(FormFactorLorentz self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorLorentz::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorLorentz", _wrap_delete_FormFactorLorentz, METH_VARARGS, (char *)"delete_FormFactorLorentz(FormFactorLorentz self)"},
@@ -106647,7 +106720,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism3_clone", _wrap_FormFactorPrism3_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism3_clone(FormFactorPrism3 self) -> FormFactorPrism3\n"
 		"\n"
-		"virtual FormFactorPrism3* FormFactorPrism3::clone() const\n"
+		"FormFactorPrism3* FormFactorPrism3::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106655,7 +106728,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism3_accept", _wrap_FormFactorPrism3_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism3_accept(FormFactorPrism3 self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void FormFactorPrism3::accept(ISampleVisitor *visitor) const\n"
+		"void FormFactorPrism3::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106677,7 +106750,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_clone", _wrap_FormFactorPrism6_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_clone(FormFactorPrism6 self) -> FormFactorPrism6\n"
 		"\n"
-		"virtual FormFactorPrism6* FormFactorPrism6::clone() const\n"
+		"FormFactorPrism6* FormFactorPrism6::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106685,7 +106758,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_accept", _wrap_FormFactorPrism6_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_accept(FormFactorPrism6 self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void FormFactorPrism6::accept(ISampleVisitor *visitor) const\n"
+		"void FormFactorPrism6::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106693,7 +106766,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPrism6_getBaseEdge", _wrap_FormFactorPrism6_getBaseEdge, METH_VARARGS, (char *)"\n"
 		"FormFactorPrism6_getBaseEdge(FormFactorPrism6 self) -> double\n"
 		"\n"
-		"virtual double FormFactorPrism6::getBaseEdge() const \n"
+		"double FormFactorPrism6::getBaseEdge() const \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorPrism6", _wrap_delete_FormFactorPrism6, METH_VARARGS, (char *)"delete_FormFactorPrism6(FormFactorPrism6 self)"},
@@ -106719,7 +106792,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPyramid_clone", _wrap_FormFactorPyramid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_clone(FormFactorPyramid self) -> FormFactorPyramid\n"
 		"\n"
-		"FormFactorPyramid* FormFactorPyramid::clone() const final\n"
+		"FormFactorPyramid* FormFactorPyramid::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106727,7 +106800,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorPyramid_accept", _wrap_FormFactorPyramid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorPyramid_accept(FormFactorPyramid self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorPyramid::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorPyramid::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106775,7 +106848,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_clone", _wrap_FormFactorRipple1_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_clone(FormFactorRipple1 self) -> FormFactorRipple1\n"
 		"\n"
-		"FormFactorRipple1* FormFactorRipple1::clone() const\n"
+		"FormFactorRipple1* FormFactorRipple1::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106783,7 +106856,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_accept", _wrap_FormFactorRipple1_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_accept(FormFactorRipple1 self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorRipple1::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorRipple1::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106809,7 +106882,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_getRadialExtension", _wrap_FormFactorRipple1_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_getRadialExtension(FormFactorRipple1 self) -> double\n"
 		"\n"
-		"double FormFactorRipple1::getRadialExtension() const final\n"
+		"double FormFactorRipple1::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106817,17 +106890,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple1_evaluate_for_q", _wrap_FormFactorRipple1_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple1_evaluate_for_q(FormFactorRipple1 self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorRipple1::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorRipple1", _wrap_delete_FormFactorRipple1, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorRipple1(FormFactorRipple1 self)\n"
-		"\n"
-		"virtual FormFactorRipple1::~FormFactorRipple1()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorRipple1", _wrap_delete_FormFactorRipple1, METH_VARARGS, (char *)"delete_FormFactorRipple1(FormFactorRipple1 self)"},
 	 { (char *)"FormFactorRipple1_swigregister", FormFactorRipple1_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorRipple2", _wrap_new_FormFactorRipple2, METH_VARARGS, (char *)"\n"
 		"new_FormFactorRipple2(double length, double width, double height, double asymmetry) -> FormFactorRipple2\n"
@@ -106855,7 +106923,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_clone", _wrap_FormFactorRipple2_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_clone(FormFactorRipple2 self) -> FormFactorRipple2\n"
 		"\n"
-		"FormFactorRipple2* FormFactorRipple2::clone() const\n"
+		"FormFactorRipple2* FormFactorRipple2::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106863,7 +106931,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_accept", _wrap_FormFactorRipple2_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_accept(FormFactorRipple2 self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorRipple2::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorRipple2::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106895,7 +106963,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_getRadialExtension", _wrap_FormFactorRipple2_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_getRadialExtension(FormFactorRipple2 self) -> double\n"
 		"\n"
-		"double FormFactorRipple2::getRadialExtension() const final\n"
+		"double FormFactorRipple2::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106903,17 +106971,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorRipple2_evaluate_for_q", _wrap_FormFactorRipple2_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorRipple2_evaluate_for_q(FormFactorRipple2 self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorRipple2::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
 		"Complex formfactor. \n"
 		"\n"
 		""},
-	 { (char *)"delete_FormFactorRipple2", _wrap_delete_FormFactorRipple2, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorRipple2(FormFactorRipple2 self)\n"
-		"\n"
-		"virtual FormFactorRipple2::~FormFactorRipple2()\n"
-		"\n"
-		""},
+	 { (char *)"delete_FormFactorRipple2", _wrap_delete_FormFactorRipple2, METH_VARARGS, (char *)"delete_FormFactorRipple2(FormFactorRipple2 self)"},
 	 { (char *)"FormFactorRipple2_swigregister", FormFactorRipple2_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorSphereGaussianRadius", _wrap_new_FormFactorSphereGaussianRadius, METH_VARARGS, (char *)"\n"
 		"new_FormFactorSphereGaussianRadius(double mean, double sigma) -> FormFactorSphereGaussianRadius\n"
@@ -106924,7 +106987,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_clone", _wrap_FormFactorSphereGaussianRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_clone(FormFactorSphereGaussianRadius self) -> FormFactorSphereGaussianRadius\n"
 		"\n"
-		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const final\n"
+		"FormFactorSphereGaussianRadius* FormFactorSphereGaussianRadius::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106932,7 +106995,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_accept", _wrap_FormFactorSphereGaussianRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_accept(FormFactorSphereGaussianRadius self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorSphereGaussianRadius::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106940,7 +107003,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_getRadialExtension", _wrap_FormFactorSphereGaussianRadius_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_getRadialExtension(FormFactorSphereGaussianRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereGaussianRadius::getRadialExtension() const final\n"
+		"double FormFactorSphereGaussianRadius::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106948,17 +107011,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereGaussianRadius_evaluate_for_q", _wrap_FormFactorSphereGaussianRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereGaussianRadius_evaluate_for_q(FormFactorSphereGaussianRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorSphereGaussianRadius::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
-		"\n"
-		""},
-	 { (char *)"delete_FormFactorSphereGaussianRadius", _wrap_delete_FormFactorSphereGaussianRadius, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorSphereGaussianRadius(FormFactorSphereGaussianRadius self)\n"
-		"\n"
-		"FormFactorSphereGaussianRadius::~FormFactorSphereGaussianRadius()\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorSphereGaussianRadius", _wrap_delete_FormFactorSphereGaussianRadius, METH_VARARGS, (char *)"delete_FormFactorSphereGaussianRadius(FormFactorSphereGaussianRadius self)"},
 	 { (char *)"FormFactorSphereGaussianRadius_swigregister", FormFactorSphereGaussianRadius_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorSphereLogNormalRadius", _wrap_new_FormFactorSphereLogNormalRadius, METH_VARARGS, (char *)"\n"
 		"new_FormFactorSphereLogNormalRadius(double mean, double scale_param, size_t n_samples) -> FormFactorSphereLogNormalRadius\n"
@@ -106969,7 +107027,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_clone", _wrap_FormFactorSphereLogNormalRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_clone(FormFactorSphereLogNormalRadius self) -> FormFactorSphereLogNormalRadius\n"
 		"\n"
-		"FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const final\n"
+		"FormFactorSphereLogNormalRadius* FormFactorSphereLogNormalRadius::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -106977,7 +107035,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_accept", _wrap_FormFactorSphereLogNormalRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_accept(FormFactorSphereLogNormalRadius self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorSphereLogNormalRadius::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -106985,7 +107043,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_getRadialExtension", _wrap_FormFactorSphereLogNormalRadius_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_getRadialExtension(FormFactorSphereLogNormalRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereLogNormalRadius::getRadialExtension() const final\n"
+		"double FormFactorSphereLogNormalRadius::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -106993,17 +107051,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereLogNormalRadius_evaluate_for_q", _wrap_FormFactorSphereLogNormalRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereLogNormalRadius_evaluate_for_q(FormFactorSphereLogNormalRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const final\n"
-		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"complex_t FormFactorSphereLogNormalRadius::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		""},
-	 { (char *)"delete_FormFactorSphereLogNormalRadius", _wrap_delete_FormFactorSphereLogNormalRadius, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorSphereLogNormalRadius(FormFactorSphereLogNormalRadius self)\n"
-		"\n"
-		"FormFactorSphereLogNormalRadius::~FormFactorSphereLogNormalRadius() final\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorSphereLogNormalRadius", _wrap_delete_FormFactorSphereLogNormalRadius, METH_VARARGS, (char *)"delete_FormFactorSphereLogNormalRadius(FormFactorSphereLogNormalRadius self)"},
 	 { (char *)"FormFactorSphereLogNormalRadius_swigregister", FormFactorSphereLogNormalRadius_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorSphereUniformRadius", _wrap_new_FormFactorSphereUniformRadius, METH_VARARGS, (char *)"\n"
 		"new_FormFactorSphereUniformRadius(double mean, double full_width) -> FormFactorSphereUniformRadius\n"
@@ -107014,7 +107067,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_clone", _wrap_FormFactorSphereUniformRadius_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_clone(FormFactorSphereUniformRadius self) -> FormFactorSphereUniformRadius\n"
 		"\n"
-		"FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const final\n"
+		"FormFactorSphereUniformRadius* FormFactorSphereUniformRadius::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107022,7 +107075,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_accept", _wrap_FormFactorSphereUniformRadius_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_accept(FormFactorSphereUniformRadius self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorSphereUniformRadius::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107030,7 +107083,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_getRadialExtension", _wrap_FormFactorSphereUniformRadius_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_getRadialExtension(FormFactorSphereUniformRadius self) -> double\n"
 		"\n"
-		"double FormFactorSphereUniformRadius::getRadialExtension() const final\n"
+		"double FormFactorSphereUniformRadius::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -107038,9 +107091,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorSphereUniformRadius_evaluate_for_q", _wrap_FormFactorSphereUniformRadius_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorSphereUniformRadius_evaluate_for_q(FormFactorSphereUniformRadius self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const final\n"
+		"complex_t FormFactorSphereUniformRadius::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorSphereUniformRadius", _wrap_delete_FormFactorSphereUniformRadius, METH_VARARGS, (char *)"delete_FormFactorSphereUniformRadius(FormFactorSphereUniformRadius self)"},
@@ -107066,7 +107119,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTetrahedron_clone", _wrap_FormFactorTetrahedron_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_clone(FormFactorTetrahedron self) -> FormFactorTetrahedron\n"
 		"\n"
-		"virtual FormFactorTetrahedron* FormFactorTetrahedron::clone() const\n"
+		"FormFactorTetrahedron* FormFactorTetrahedron::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107074,7 +107127,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTetrahedron_accept", _wrap_FormFactorTetrahedron_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTetrahedron_accept(FormFactorTetrahedron self, ISampleVisitor visitor)\n"
 		"\n"
-		"virtual void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const\n"
+		"void FormFactorTetrahedron::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107108,7 +107161,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTrivial_clone", _wrap_FormFactorTrivial_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTrivial_clone(FormFactorTrivial self) -> FormFactorTrivial\n"
 		"\n"
-		"FormFactorTrivial* FormFactorTrivial::clone() const\n"
+		"FormFactorTrivial* FormFactorTrivial::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107116,7 +107169,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTrivial_accept", _wrap_FormFactorTrivial_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTrivial_accept(FormFactorTrivial self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorTrivial::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorTrivial::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107124,7 +107177,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTrivial_getRadialExtension", _wrap_FormFactorTrivial_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorTrivial_getRadialExtension(FormFactorTrivial self) -> double\n"
 		"\n"
-		"double FormFactorTrivial::getRadialExtension() const final\n"
+		"double FormFactorTrivial::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -107132,9 +107185,9 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTrivial_evaluate_for_q", _wrap_FormFactorTrivial_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorTrivial_evaluate_for_q(FormFactorTrivial self, cvector_t arg3) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const final\n"
+		"complex_t FormFactorTrivial::evaluate_for_q(const cvector_t) const overridefinal\n"
 		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
 	 { (char *)"delete_FormFactorTrivial", _wrap_delete_FormFactorTrivial, METH_VARARGS, (char *)"delete_FormFactorTrivial(FormFactorTrivial self)"},
@@ -107157,7 +107210,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedCube_clone", _wrap_FormFactorTruncatedCube_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_clone(FormFactorTruncatedCube self) -> FormFactorTruncatedCube\n"
 		"\n"
-		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const final\n"
+		"FormFactorTruncatedCube* FormFactorTruncatedCube::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107165,7 +107218,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedCube_accept", _wrap_FormFactorTruncatedCube_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedCube_accept(FormFactorTruncatedCube self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorTruncatedCube::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107193,7 +107246,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_clone", _wrap_FormFactorTruncatedSphere_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_clone(FormFactorTruncatedSphere self) -> FormFactorTruncatedSphere\n"
 		"\n"
-		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const\n"
+		"FormFactorTruncatedSphere* FormFactorTruncatedSphere::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107201,7 +107254,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_accept", _wrap_FormFactorTruncatedSphere_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_accept(FormFactorTruncatedSphere self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorTruncatedSphere::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107221,7 +107274,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_getRadialExtension", _wrap_FormFactorTruncatedSphere_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_getRadialExtension(FormFactorTruncatedSphere self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSphere::getRadialExtension() const final\n"
+		"double FormFactorTruncatedSphere::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -107229,17 +107282,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSphere_evaluate_for_q", _wrap_FormFactorTruncatedSphere_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSphere_evaluate_for_q(FormFactorTruncatedSphere self, cvector_t q) -> complex_t\n"
 		"\n"
-		"virtual complex_t IFormFactorBorn::evaluate_for_q(const cvector_t q) const =0\n"
-		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
-		"\n"
-		""},
-	 { (char *)"delete_FormFactorTruncatedSphere", _wrap_delete_FormFactorTruncatedSphere, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorTruncatedSphere(FormFactorTruncatedSphere self)\n"
+		"complex_t FormFactorTruncatedSphere::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"FormFactorTruncatedSphere::~FormFactorTruncatedSphere()\n"
+		"Complex formfactor. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorTruncatedSphere", _wrap_delete_FormFactorTruncatedSphere, METH_VARARGS, (char *)"delete_FormFactorTruncatedSphere(FormFactorTruncatedSphere self)"},
 	 { (char *)"FormFactorTruncatedSphere_swigregister", FormFactorTruncatedSphere_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorTruncatedSpheroid", _wrap_new_FormFactorTruncatedSpheroid, METH_VARARGS, (char *)"\n"
 		"new_FormFactorTruncatedSpheroid(double radius, double height, double height_flattening) -> FormFactorTruncatedSpheroid\n"
@@ -107250,7 +107298,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_clone", _wrap_FormFactorTruncatedSpheroid_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_clone(FormFactorTruncatedSpheroid self) -> FormFactorTruncatedSpheroid\n"
 		"\n"
-		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const\n"
+		"FormFactorTruncatedSpheroid* FormFactorTruncatedSpheroid::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107258,7 +107306,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_accept", _wrap_FormFactorTruncatedSpheroid_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_accept(FormFactorTruncatedSpheroid self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorTruncatedSpheroid::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107284,7 +107332,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_getRadialExtension", _wrap_FormFactorTruncatedSpheroid_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_getRadialExtension(FormFactorTruncatedSpheroid self) -> double\n"
 		"\n"
-		"double FormFactorTruncatedSpheroid::getRadialExtension() const final\n"
+		"double FormFactorTruncatedSpheroid::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -107292,17 +107340,12 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorTruncatedSpheroid_evaluate_for_q", _wrap_FormFactorTruncatedSpheroid_evaluate_for_q, METH_VARARGS, (char *)"\n"
 		"FormFactorTruncatedSpheroid_evaluate_for_q(FormFactorTruncatedSpheroid self, cvector_t q) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const final\n"
-		"\n"
-		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. \n"
-		"\n"
-		""},
-	 { (char *)"delete_FormFactorTruncatedSpheroid", _wrap_delete_FormFactorTruncatedSpheroid, METH_VARARGS, (char *)"\n"
-		"delete_FormFactorTruncatedSpheroid(FormFactorTruncatedSpheroid self)\n"
+		"complex_t FormFactorTruncatedSpheroid::evaluate_for_q(const cvector_t q) const overridefinal\n"
 		"\n"
-		"virtual FormFactorTruncatedSpheroid::~FormFactorTruncatedSpheroid()\n"
+		"Returns scattering amplitude for complex scattering wavevector q=k_i-k_f. This method is public only for convenience of plotting form factors in Python. \n"
 		"\n"
 		""},
+	 { (char *)"delete_FormFactorTruncatedSpheroid", _wrap_delete_FormFactorTruncatedSpheroid, METH_VARARGS, (char *)"delete_FormFactorTruncatedSpheroid(FormFactorTruncatedSpheroid self)"},
 	 { (char *)"FormFactorTruncatedSpheroid_swigregister", FormFactorTruncatedSpheroid_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_FormFactorWeighted", _wrap_new_FormFactorWeighted, METH_VARARGS, (char *)"\n"
 		"new_FormFactorWeighted() -> FormFactorWeighted\n"
@@ -107313,13 +107356,13 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"delete_FormFactorWeighted", _wrap_delete_FormFactorWeighted, METH_VARARGS, (char *)"\n"
 		"delete_FormFactorWeighted(FormFactorWeighted self)\n"
 		"\n"
-		"FormFactorWeighted::~FormFactorWeighted() final\n"
+		"FormFactorWeighted::~FormFactorWeighted() overridefinal\n"
 		"\n"
 		""},
 	 { (char *)"FormFactorWeighted_clone", _wrap_FormFactorWeighted_clone, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_clone(FormFactorWeighted self) -> FormFactorWeighted\n"
 		"\n"
-		"FormFactorWeighted * FormFactorWeighted::clone() const final\n"
+		"FormFactorWeighted * FormFactorWeighted::clone() const overridefinal\n"
 		"\n"
 		"Returns a clone of this  ISample object. \n"
 		"\n"
@@ -107327,7 +107370,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_accept", _wrap_FormFactorWeighted_accept, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_accept(FormFactorWeighted self, ISampleVisitor visitor)\n"
 		"\n"
-		"void FormFactorWeighted::accept(ISampleVisitor *visitor) const final\n"
+		"void FormFactorWeighted::accept(ISampleVisitor *visitor) const overridefinal\n"
 		"\n"
 		"Calls the  ISampleVisitor's visit method. \n"
 		"\n"
@@ -107335,7 +107378,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_getRadialExtension", _wrap_FormFactorWeighted_getRadialExtension, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_getRadialExtension(FormFactorWeighted self) -> double\n"
 		"\n"
-		"double FormFactorWeighted::getRadialExtension() const final\n"
+		"double FormFactorWeighted::getRadialExtension() const overridefinal\n"
 		"\n"
 		"Returns the (approximate in some cases) radial size of the particle of this form factor's shape. This is used for SSCA calculations \n"
 		"\n"
@@ -107350,7 +107393,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_setAmbientMaterial", _wrap_FormFactorWeighted_setAmbientMaterial, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_setAmbientMaterial(FormFactorWeighted self, IMaterial material)\n"
 		"\n"
-		"void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) final\n"
+		"void FormFactorWeighted::setAmbientMaterial(const IMaterial &material) overridefinal\n"
 		"\n"
 		"Passes the refractive index of the ambient material in which this particle is embedded. \n"
 		"\n"
@@ -107358,7 +107401,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"FormFactorWeighted_evaluate", _wrap_FormFactorWeighted_evaluate, METH_VARARGS, (char *)"\n"
 		"FormFactorWeighted_evaluate(FormFactorWeighted self, WavevectorInfo wavevectors) -> complex_t\n"
 		"\n"
-		"complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const final\n"
+		"complex_t FormFactorWeighted::evaluate(const WavevectorInfo &wavevectors) const overridefinal\n"
 		"\n"
 		"Returns scattering amplitude for complex wavevectors ki, kf. \n"
 		"\n"
@@ -107629,6 +107672,8 @@ static PyMethodDef SwigMethods[] = {
 		"double SimulationOptions::getDefaultVariability() const \n"
 		"\n"
 		""},
+	 { (char *)"SimulationOptions_setIncludeSpecular", _wrap_SimulationOptions_setIncludeSpecular, METH_VARARGS, (char *)"SimulationOptions_setIncludeSpecular(SimulationOptions self, bool include_specular)"},
+	 { (char *)"SimulationOptions_includeSpecular", _wrap_SimulationOptions_includeSpecular, METH_VARARGS, (char *)"SimulationOptions_includeSpecular(SimulationOptions self) -> bool"},
 	 { (char *)"delete_SimulationOptions", _wrap_delete_SimulationOptions, METH_VARARGS, (char *)"delete_SimulationOptions(SimulationOptions self)"},
 	 { (char *)"SimulationOptions_swigregister", SimulationOptions_swigregister, METH_VARARGS, NULL},
 	 { (char *)"new_GISASSimulation", _wrap_new_GISASSimulation, METH_VARARGS, (char *)"\n"
diff --git a/auto/Wrap/libBornAgainFit.py b/auto/Wrap/libBornAgainFit.py
index ff3aa107c8a2be2a4d642dfbb773dd8d0311eea7..e8c715088c3b5850ba914a58227c5de19a9db0b7 100644
--- a/auto/Wrap/libBornAgainFit.py
+++ b/auto/Wrap/libBornAgainFit.py
@@ -1866,7 +1866,7 @@ class IMinimizer(_object):
         """
         setParameters(IMinimizer self, FitParameterSet parameters)
 
-        void IMinimizer::setParameters(const FitSuiteParameters &parameters)
+        void IMinimizer::setParameters(const FitParameterSet &parameters)
 
         Sets internal minimizer parameters using external parameter list. 
 
@@ -1875,7 +1875,12 @@ class IMinimizer(_object):
 
 
     def setObjectiveFunction(self, arg2):
-        """setObjectiveFunction(IMinimizer self, objective_function_t arg2)"""
+        """
+        setObjectiveFunction(IMinimizer self, objective_function_t arg2)
+
+        virtual void IMinimizer::setObjectiveFunction(objective_function_t)
+
+        """
         return _libBornAgainFit.IMinimizer_setObjectiveFunction(self, arg2)
 
 
@@ -1883,9 +1888,7 @@ class IMinimizer(_object):
         """
         setGradientFunction(IMinimizer self, gradient_function_t arg2, int arg3)
 
-        void IMinimizer::setGradientFunction(function_gradient_t fun_gradient, size_t nparameters, size_t ndatasize)
-
-        Sets gradient function to minimize. 
+        virtual void IMinimizer::setGradientFunction(gradient_function_t, int)
 
         """
         return _libBornAgainFit.IMinimizer_setGradientFunction(self, arg2, arg3)
@@ -1919,7 +1922,7 @@ class IMinimizer(_object):
         """
         propagateResults(IMinimizer self, FitParameterSet parameters)
 
-        void IMinimizer::propagateResults(FitSuiteParameters &parameters)
+        void IMinimizer::propagateResults(FitParameterSet &parameters)
 
         Propagates results of minimization to fit parameter set. 
 
@@ -2062,7 +2065,14 @@ FitParameter_swigregister = _libBornAgainFit.FitParameter_swigregister
 FitParameter_swigregister(FitParameter)
 
 class FitParameterSet(_object):
-    """Proxy of C++ FitParameterSet class."""
+    """
+
+
+    The  FitParameterSet represents collection of fit parameters for the minimizer.
+
+    C++ includes: FitParameterSet.h
+
+    """
 
     __swig_setmethods__ = {}
     __setattr__ = lambda self, name, value: _swig_setattr(self, FitParameterSet, name, value)
@@ -2071,7 +2081,12 @@ class FitParameterSet(_object):
     __repr__ = _swig_repr
 
     def __init__(self):
-        """__init__(FitParameterSet self) -> FitParameterSet"""
+        """
+        __init__(FitParameterSet self) -> FitParameterSet
+
+        FitParameterSet::FitParameterSet()
+
+        """
         this = _libBornAgainFit.new_FitParameterSet()
         try:
             self.this.append(this)
@@ -2081,12 +2096,28 @@ class FitParameterSet(_object):
     __del__ = lambda self: None
 
     def clear(self):
-        """clear(FitParameterSet self)"""
+        """
+        clear(FitParameterSet self)
+
+        void FitParameterSet::clear()
+
+        container specific
+
+        Clears all defined parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_clear(self)
 
 
     def size(self):
-        """size(FitParameterSet self) -> size_t"""
+        """
+        size(FitParameterSet self) -> size_t
+
+        size_t FitParameterSet::size() const
+
+        Returns number of parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_size(self)
 
 
@@ -2094,6 +2125,9 @@ class FitParameterSet(_object):
         """
         begin(FitParameterSet self) -> FitParameterSet::iterator
         begin(FitParameterSet self) -> FitParameterSet::const_iterator
+
+        FitParameterSet::const_iterator FitParameterSet::begin() const 
+
         """
         return _libBornAgainFit.FitParameterSet_begin(self, *args)
 
@@ -2102,12 +2136,24 @@ class FitParameterSet(_object):
         """
         end(FitParameterSet self) -> FitParameterSet::iterator
         end(FitParameterSet self) -> FitParameterSet::const_iterator
+
+        FitParameterSet::const_iterator FitParameterSet::end() const 
+
         """
         return _libBornAgainFit.FitParameterSet_end(self, *args)
 
 
     def addFitParameter(self, par):
-        """addFitParameter(FitParameterSet self, FitParameter par)"""
+        """
+        addFitParameter(FitParameterSet self, FitParameter par)
+
+        void FitParameterSet::addFitParameter(FitParameter *par)
+
+        adding fit parameters
+
+        Adds fit parameter. 
+
+        """
         return _libBornAgainFit.FitParameterSet_addFitParameter(self, par)
 
 
@@ -2115,17 +2161,36 @@ class FitParameterSet(_object):
         """
         fitParameter(FitParameterSet self, std::string const & name) -> FitParameter
         fitParameter(FitParameterSet self, std::string const & name) -> FitParameter
+
+        FitParameter * FitParameterSet::fitParameter(const std::string &name)
+
         """
         return _libBornAgainFit.FitParameterSet_fitParameter(self, *args)
 
 
     def values(self):
-        """values(FitParameterSet self) -> vdouble1d_t"""
+        """
+        values(FitParameterSet self) -> vdouble1d_t
+
+        std::vector< double > FitParameterSet::values() const
+
+        fit parameter's values and errors
+
+        Returns values of all defined parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_values(self)
 
 
     def setValues(self, pars_values):
-        """setValues(FitParameterSet self, vdouble1d_t pars_values)"""
+        """
+        setValues(FitParameterSet self, vdouble1d_t pars_values)
+
+        void FitParameterSet::setValues(const std::vector< double > &pars_values)
+
+        Sets values for all defined parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_setValues(self, pars_values)
 
 
@@ -2133,62 +2198,140 @@ class FitParameterSet(_object):
         """
         valuesDifferFrom(FitParameterSet self, vdouble1d_t par_values, double tolerance=2.0) -> bool
         valuesDifferFrom(FitParameterSet self, vdouble1d_t par_values) -> bool
+
+        bool FitParameterSet::valuesDifferFrom(const std::vector< double > &par_values, double tolerance=2.0) const
+
+        Returns true if parameters already have the given values. 
+
         """
         return _libBornAgainFit.FitParameterSet_valuesDifferFrom(self, par_values, tolerance)
 
 
     def errors(self):
-        """errors(FitParameterSet self) -> vdouble1d_t"""
+        """
+        errors(FitParameterSet self) -> vdouble1d_t
+
+        std::vector< double > FitParameterSet::errors() const
+
+        Returns errors of all defined parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_errors(self)
 
 
     def setErrors(self, pars_errors):
-        """setErrors(FitParameterSet self, vdouble1d_t pars_errors)"""
+        """
+        setErrors(FitParameterSet self, vdouble1d_t pars_errors)
+
+        void FitParameterSet::setErrors(const std::vector< double > &pars_errors)
+
+        Sets errors to all parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_setErrors(self, pars_errors)
 
 
     def freeFitParameterCount(self):
-        """freeFitParameterCount(FitParameterSet self) -> size_t"""
+        """
+        freeFitParameterCount(FitParameterSet self) -> size_t
+
+        size_t FitParameterSet::freeFitParameterCount() const
+
+        Make parameters fixed and free.
+
+        Returns number of free parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_freeFitParameterCount(self)
 
 
     def fixAll(self):
-        """fixAll(FitParameterSet self)"""
+        """
+        fixAll(FitParameterSet self)
+
+        void FitParameterSet::fixAll()
+
+        Fix all parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_fixAll(self)
 
 
     def releaseAll(self):
-        """releaseAll(FitParameterSet self)"""
+        """
+        releaseAll(FitParameterSet self)
+
+        void FitParameterSet::releaseAll()
+
+        Release all parameters. 
+
+        """
         return _libBornAgainFit.FitParameterSet_releaseAll(self)
 
 
     def setFixed(self, pars, is_fixed):
-        """setFixed(FitParameterSet self, vector_string_t pars, bool is_fixed)"""
+        """
+        setFixed(FitParameterSet self, vector_string_t pars, bool is_fixed)
+
+        void FitParameterSet::setFixed(const std::vector< std::string > &pars, bool is_fixed)
+
+        Set fixed flag for parameters from the list. 
+
+        """
         return _libBornAgainFit.FitParameterSet_setFixed(self, pars, is_fixed)
 
 
     def parametersToString(self):
-        """parametersToString(FitParameterSet self) -> std::string"""
+        """
+        parametersToString(FitParameterSet self) -> std::string
+
+        std::string FitParameterSet::parametersToString() const
+
+        Printing and reporting. 
+
+        """
         return _libBornAgainFit.FitParameterSet_parametersToString(self)
 
 
     def reportResults(self):
-        """reportResults(FitParameterSet self) -> std::string"""
+        """
+        reportResults(FitParameterSet self) -> std::string
+
+        std::string FitParameterSet::reportResults() const 
+
+        """
         return _libBornAgainFit.FitParameterSet_reportResults(self)
 
 
     def correlationMatrix(self):
-        """correlationMatrix(FitParameterSet self) -> vdouble2d_t"""
+        """
+        correlationMatrix(FitParameterSet self) -> vdouble2d_t
+
+        corr_matrix_t FitParameterSet::correlationMatrix() const 
+
+        """
         return _libBornAgainFit.FitParameterSet_correlationMatrix(self)
 
 
     def setCorrelationMatrix(self, matrix):
-        """setCorrelationMatrix(FitParameterSet self, vdouble2d_t matrix)"""
+        """
+        setCorrelationMatrix(FitParameterSet self, vdouble2d_t matrix)
+
+        void FitParameterSet::setCorrelationMatrix(const corr_matrix_t &matrix)
+
+        """
         return _libBornAgainFit.FitParameterSet_setCorrelationMatrix(self, matrix)
 
 
     def isExistingName(self, name):
-        """isExistingName(FitParameterSet self, std::string const & name) -> bool"""
+        """
+        isExistingName(FitParameterSet self, std::string const & name) -> bool
+
+        bool FitParameterSet::isExistingName(const std::string &name) const
+
+        Returns true if parameter with such name exists. 
+
+        """
         return _libBornAgainFit.FitParameterSet_isExistingName(self, name)
 
 
diff --git a/auto/Wrap/libBornAgainFit_wrap.cpp b/auto/Wrap/libBornAgainFit_wrap.cpp
index 198a83a398efcd0cc91b83d3cc6ce4fedcabc046..b4d5ba6bd7246b791903121e9173cf34d519f11f 100644
--- a/auto/Wrap/libBornAgainFit_wrap.cpp
+++ b/auto/Wrap/libBornAgainFit_wrap.cpp
@@ -5627,7 +5627,7 @@ SWIG_AsVal_std_complex_Sl_double_Sg_  (PyObject *o, std::complex<double>* val)
 
 
 SWIGINTERNINLINE PyObject*
-SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/home/pospelov/software/local/share/swig/3.0.8/typemaps/swigmacros.swg,104,%ifcplusplus@*/
+SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/share/swig3.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/
 
 const std::complex<double>&
 
@@ -22345,18 +22345,21 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IMinimizer_setParameters", _wrap_IMinimizer_setParameters, METH_VARARGS, (char *)"\n"
 		"IMinimizer_setParameters(IMinimizer self, FitParameterSet parameters)\n"
 		"\n"
-		"void IMinimizer::setParameters(const FitSuiteParameters &parameters)\n"
+		"void IMinimizer::setParameters(const FitParameterSet &parameters)\n"
 		"\n"
 		"Sets internal minimizer parameters using external parameter list. \n"
 		"\n"
 		""},
-	 { (char *)"IMinimizer_setObjectiveFunction", _wrap_IMinimizer_setObjectiveFunction, METH_VARARGS, (char *)"IMinimizer_setObjectiveFunction(IMinimizer self, objective_function_t arg3)"},
+	 { (char *)"IMinimizer_setObjectiveFunction", _wrap_IMinimizer_setObjectiveFunction, METH_VARARGS, (char *)"\n"
+		"IMinimizer_setObjectiveFunction(IMinimizer self, objective_function_t arg3)\n"
+		"\n"
+		"virtual void IMinimizer::setObjectiveFunction(objective_function_t)\n"
+		"\n"
+		""},
 	 { (char *)"IMinimizer_setGradientFunction", _wrap_IMinimizer_setGradientFunction, METH_VARARGS, (char *)"\n"
 		"IMinimizer_setGradientFunction(IMinimizer self, gradient_function_t arg3, int arg4)\n"
 		"\n"
-		"void IMinimizer::setGradientFunction(function_gradient_t fun_gradient, size_t nparameters, size_t ndatasize)\n"
-		"\n"
-		"Sets gradient function to minimize. \n"
+		"virtual void IMinimizer::setGradientFunction(gradient_function_t, int)\n"
 		"\n"
 		""},
 	 { (char *)"IMinimizer_getMinValue", _wrap_IMinimizer_getMinValue, METH_VARARGS, (char *)"\n"
@@ -22378,7 +22381,7 @@ static PyMethodDef SwigMethods[] = {
 	 { (char *)"IMinimizer_propagateResults", _wrap_IMinimizer_propagateResults, METH_VARARGS, (char *)"\n"
 		"IMinimizer_propagateResults(IMinimizer self, FitParameterSet parameters)\n"
 		"\n"
-		"void IMinimizer::propagateResults(FitSuiteParameters &parameters)\n"
+		"void IMinimizer::propagateResults(FitParameterSet &parameters)\n"
 		"\n"
 		"Propagates results of minimization to fit parameter set. \n"
 		"\n"
@@ -22456,40 +22459,178 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"FitParameter_swigregister", FitParameter_swigregister, METH_VARARGS, NULL},
-	 { (char *)"new_FitParameterSet", _wrap_new_FitParameterSet, METH_VARARGS, (char *)"new_FitParameterSet() -> FitParameterSet"},
-	 { (char *)"delete_FitParameterSet", _wrap_delete_FitParameterSet, METH_VARARGS, (char *)"delete_FitParameterSet(FitParameterSet self)"},
-	 { (char *)"FitParameterSet_clear", _wrap_FitParameterSet_clear, METH_VARARGS, (char *)"FitParameterSet_clear(FitParameterSet self)"},
-	 { (char *)"FitParameterSet_size", _wrap_FitParameterSet_size, METH_VARARGS, (char *)"FitParameterSet_size(FitParameterSet self) -> size_t"},
+	 { (char *)"new_FitParameterSet", _wrap_new_FitParameterSet, METH_VARARGS, (char *)"\n"
+		"new_FitParameterSet() -> FitParameterSet\n"
+		"\n"
+		"FitParameterSet::FitParameterSet()\n"
+		"\n"
+		""},
+	 { (char *)"delete_FitParameterSet", _wrap_delete_FitParameterSet, METH_VARARGS, (char *)"\n"
+		"delete_FitParameterSet(FitParameterSet self)\n"
+		"\n"
+		"FitParameterSet::~FitParameterSet()\n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_clear", _wrap_FitParameterSet_clear, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_clear(FitParameterSet self)\n"
+		"\n"
+		"void FitParameterSet::clear()\n"
+		"\n"
+		"container specific\n"
+		"\n"
+		"Clears all defined parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_size", _wrap_FitParameterSet_size, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_size(FitParameterSet self) -> size_t\n"
+		"\n"
+		"size_t FitParameterSet::size() const\n"
+		"\n"
+		"Returns number of parameters. \n"
+		"\n"
+		""},
 	 { (char *)"FitParameterSet_begin", _wrap_FitParameterSet_begin, METH_VARARGS, (char *)"\n"
 		"begin() -> FitParameterSet::iterator\n"
 		"FitParameterSet_begin(FitParameterSet self) -> FitParameterSet::const_iterator\n"
+		"\n"
+		"FitParameterSet::const_iterator FitParameterSet::begin() const \n"
+		"\n"
 		""},
 	 { (char *)"FitParameterSet_end", _wrap_FitParameterSet_end, METH_VARARGS, (char *)"\n"
 		"end() -> FitParameterSet::iterator\n"
 		"FitParameterSet_end(FitParameterSet self) -> FitParameterSet::const_iterator\n"
+		"\n"
+		"FitParameterSet::const_iterator FitParameterSet::end() const \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_addFitParameter", _wrap_FitParameterSet_addFitParameter, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_addFitParameter(FitParameterSet self, FitParameter par)\n"
+		"\n"
+		"void FitParameterSet::addFitParameter(FitParameter *par)\n"
+		"\n"
+		"adding fit parameters\n"
+		"\n"
+		"Adds fit parameter. \n"
+		"\n"
 		""},
-	 { (char *)"FitParameterSet_addFitParameter", _wrap_FitParameterSet_addFitParameter, METH_VARARGS, (char *)"FitParameterSet_addFitParameter(FitParameterSet self, FitParameter par)"},
 	 { (char *)"FitParameterSet_fitParameter", _wrap_FitParameterSet_fitParameter, METH_VARARGS, (char *)"\n"
 		"fitParameter(std::string const & name) -> FitParameter\n"
 		"FitParameterSet_fitParameter(FitParameterSet self, std::string const & name) -> FitParameter\n"
+		"\n"
+		"FitParameter * FitParameterSet::fitParameter(const std::string &name)\n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_values", _wrap_FitParameterSet_values, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_values(FitParameterSet self) -> vdouble1d_t\n"
+		"\n"
+		"std::vector< double > FitParameterSet::values() const\n"
+		"\n"
+		"fit parameter's values and errors\n"
+		"\n"
+		"Returns values of all defined parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_setValues", _wrap_FitParameterSet_setValues, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_setValues(FitParameterSet self, vdouble1d_t pars_values)\n"
+		"\n"
+		"void FitParameterSet::setValues(const std::vector< double > &pars_values)\n"
+		"\n"
+		"Sets values for all defined parameters. \n"
+		"\n"
 		""},
-	 { (char *)"FitParameterSet_values", _wrap_FitParameterSet_values, METH_VARARGS, (char *)"FitParameterSet_values(FitParameterSet self) -> vdouble1d_t"},
-	 { (char *)"FitParameterSet_setValues", _wrap_FitParameterSet_setValues, METH_VARARGS, (char *)"FitParameterSet_setValues(FitParameterSet self, vdouble1d_t pars_values)"},
 	 { (char *)"FitParameterSet_valuesDifferFrom", _wrap_FitParameterSet_valuesDifferFrom, METH_VARARGS, (char *)"\n"
 		"valuesDifferFrom(vdouble1d_t par_values, double tolerance=2.0) -> bool\n"
 		"FitParameterSet_valuesDifferFrom(FitParameterSet self, vdouble1d_t par_values) -> bool\n"
+		"\n"
+		"bool FitParameterSet::valuesDifferFrom(const std::vector< double > &par_values, double tolerance=2.0) const\n"
+		"\n"
+		"Returns true if parameters already have the given values. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_errors", _wrap_FitParameterSet_errors, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_errors(FitParameterSet self) -> vdouble1d_t\n"
+		"\n"
+		"std::vector< double > FitParameterSet::errors() const\n"
+		"\n"
+		"Returns errors of all defined parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_setErrors", _wrap_FitParameterSet_setErrors, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_setErrors(FitParameterSet self, vdouble1d_t pars_errors)\n"
+		"\n"
+		"void FitParameterSet::setErrors(const std::vector< double > &pars_errors)\n"
+		"\n"
+		"Sets errors to all parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_freeFitParameterCount", _wrap_FitParameterSet_freeFitParameterCount, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_freeFitParameterCount(FitParameterSet self) -> size_t\n"
+		"\n"
+		"size_t FitParameterSet::freeFitParameterCount() const\n"
+		"\n"
+		"Make parameters fixed and free.\n"
+		"\n"
+		"Returns number of free parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_fixAll", _wrap_FitParameterSet_fixAll, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_fixAll(FitParameterSet self)\n"
+		"\n"
+		"void FitParameterSet::fixAll()\n"
+		"\n"
+		"Fix all parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_releaseAll", _wrap_FitParameterSet_releaseAll, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_releaseAll(FitParameterSet self)\n"
+		"\n"
+		"void FitParameterSet::releaseAll()\n"
+		"\n"
+		"Release all parameters. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_setFixed", _wrap_FitParameterSet_setFixed, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_setFixed(FitParameterSet self, vector_string_t pars, bool is_fixed)\n"
+		"\n"
+		"void FitParameterSet::setFixed(const std::vector< std::string > &pars, bool is_fixed)\n"
+		"\n"
+		"Set fixed flag for parameters from the list. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_parametersToString", _wrap_FitParameterSet_parametersToString, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_parametersToString(FitParameterSet self) -> std::string\n"
+		"\n"
+		"std::string FitParameterSet::parametersToString() const\n"
+		"\n"
+		"Printing and reporting. \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_reportResults", _wrap_FitParameterSet_reportResults, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_reportResults(FitParameterSet self) -> std::string\n"
+		"\n"
+		"std::string FitParameterSet::reportResults() const \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_correlationMatrix", _wrap_FitParameterSet_correlationMatrix, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_correlationMatrix(FitParameterSet self) -> vdouble2d_t\n"
+		"\n"
+		"corr_matrix_t FitParameterSet::correlationMatrix() const \n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_setCorrelationMatrix", _wrap_FitParameterSet_setCorrelationMatrix, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_setCorrelationMatrix(FitParameterSet self, vdouble2d_t matrix)\n"
+		"\n"
+		"void FitParameterSet::setCorrelationMatrix(const corr_matrix_t &matrix)\n"
+		"\n"
+		""},
+	 { (char *)"FitParameterSet_isExistingName", _wrap_FitParameterSet_isExistingName, METH_VARARGS, (char *)"\n"
+		"FitParameterSet_isExistingName(FitParameterSet self, std::string const & name) -> bool\n"
+		"\n"
+		"bool FitParameterSet::isExistingName(const std::string &name) const\n"
+		"\n"
+		"Returns true if parameter with such name exists. \n"
+		"\n"
 		""},
-	 { (char *)"FitParameterSet_errors", _wrap_FitParameterSet_errors, METH_VARARGS, (char *)"FitParameterSet_errors(FitParameterSet self) -> vdouble1d_t"},
-	 { (char *)"FitParameterSet_setErrors", _wrap_FitParameterSet_setErrors, METH_VARARGS, (char *)"FitParameterSet_setErrors(FitParameterSet self, vdouble1d_t pars_errors)"},
-	 { (char *)"FitParameterSet_freeFitParameterCount", _wrap_FitParameterSet_freeFitParameterCount, METH_VARARGS, (char *)"FitParameterSet_freeFitParameterCount(FitParameterSet self) -> size_t"},
-	 { (char *)"FitParameterSet_fixAll", _wrap_FitParameterSet_fixAll, METH_VARARGS, (char *)"FitParameterSet_fixAll(FitParameterSet self)"},
-	 { (char *)"FitParameterSet_releaseAll", _wrap_FitParameterSet_releaseAll, METH_VARARGS, (char *)"FitParameterSet_releaseAll(FitParameterSet self)"},
-	 { (char *)"FitParameterSet_setFixed", _wrap_FitParameterSet_setFixed, METH_VARARGS, (char *)"FitParameterSet_setFixed(FitParameterSet self, vector_string_t pars, bool is_fixed)"},
-	 { (char *)"FitParameterSet_parametersToString", _wrap_FitParameterSet_parametersToString, METH_VARARGS, (char *)"FitParameterSet_parametersToString(FitParameterSet self) -> std::string"},
-	 { (char *)"FitParameterSet_reportResults", _wrap_FitParameterSet_reportResults, METH_VARARGS, (char *)"FitParameterSet_reportResults(FitParameterSet self) -> std::string"},
-	 { (char *)"FitParameterSet_correlationMatrix", _wrap_FitParameterSet_correlationMatrix, METH_VARARGS, (char *)"FitParameterSet_correlationMatrix(FitParameterSet self) -> vdouble2d_t"},
-	 { (char *)"FitParameterSet_setCorrelationMatrix", _wrap_FitParameterSet_setCorrelationMatrix, METH_VARARGS, (char *)"FitParameterSet_setCorrelationMatrix(FitParameterSet self, vdouble2d_t matrix)"},
-	 { (char *)"FitParameterSet_isExistingName", _wrap_FitParameterSet_isExistingName, METH_VARARGS, (char *)"FitParameterSet_isExistingName(FitParameterSet self, std::string const & name) -> bool"},
 	 { (char *)"FitParameterSet___getitem__", _wrap_FitParameterSet___getitem__, METH_VARARGS, (char *)"\n"
 		"__getitem__(std::string name) -> FitParameter\n"
 		"FitParameterSet___getitem__(FitParameterSet self, size_t index) -> FitParameter\n"