diff --git a/Core/Algorithms/src/DiffuseDWBASimulation.cpp b/Core/Algorithms/src/DiffuseDWBASimulation.cpp
index 680004d6d6eead18bc89b0d81df122bb36fc10d1..2e076388ae9d76fd184f53f8a0b12fce4960f6df 100644
--- a/Core/Algorithms/src/DiffuseDWBASimulation.cpp
+++ b/Core/Algorithms/src/DiffuseDWBASimulation.cpp
@@ -14,11 +14,11 @@
 // ************************************************************************** //
 
 #include "DiffuseDWBASimulation.h"
-#include "FormFactorDWBAConstZ.h"
 #include "MessageService.h"
 #include "FormFactorTools.h"
 #include "MathFunctions.h"
 #include "BornAgainNamespace.h"
+#include "FormFactorDecoratorPositionFactor.h"
 #include "Layer.h"
 
 //! Carry out one simulation thread.
@@ -165,7 +165,7 @@ void DiffuseDWBASimulation::setMaterial(const IMaterial* p_material)
 //! Collect one entry (p_diffuse_term) per particle type and layer[?].
 //! For each entry, set
 //! - m_factor
-//! - m_form_factors <- vector<FormFactorDWBAConstZ*>
+//! - m_form_factors <- vector<IFormFactor*>
 //!
 void DiffuseDWBASimulation::initDiffuseFormFactorTerms(
         SafePointerVector<DiffuseFormFactorTerm>& terms,
@@ -182,8 +182,9 @@ void DiffuseDWBASimulation::initDiffuseFormFactorTerms(
         for (size_t j=0; j<nbr_heights; ++j) {
             DiffuseFormFactorTerm *p_diffuse_term = new DiffuseFormFactorTerm;
             p_diffuse_term->m_factor = density_per_height_per_particle;
-            double depth = p_diff_info->getDepth() -
-                j*p_diff_info->getHeightRange()/(nbr_heights-1.0);
+            kvector_t position(0.0, 0.0, 0.0);
+            position.setZ(- p_diff_info->getDepth() +
+                          j*p_diff_info->getHeightRange()/(nbr_heights-1.0));
             std::vector<IFormFactor*> form_factors;
             p_diff_info->getParticle()->getSimpleFormFactor()
                 ->createDistributedFormFactors(
@@ -191,16 +192,17 @@ void DiffuseDWBASimulation::initDiffuseFormFactorTerms(
                     samples_per_particle);
             for (size_t ff_index=0; ff_index<form_factors.size(); ++ff_index) {
                 p_particle->setSimpleFormFactor(form_factors[ff_index]);
-                IFormFactor *p_ff_particle = p_particle->createFormFactor(
-                        wavevector_scattering_factor);
+                boost::scoped_ptr<IFormFactor> p_clone(
+                   p_particle->createFormFactor(wavevector_scattering_factor) );
+                IFormFactor *p_ff_particle = new FormFactorDecoratorPositionFactor(*p_clone, position);
                 IFormFactor *p_dwba_ff(p_ff_particle);
                 if (checkPolarizationPresent()) {
                     p_dwba_ff = FormFactorTools::createDWBAMatrixFormFactor(
-                            p_ff_particle, depth);
+                            p_ff_particle);
                 }
                 else {
                     p_dwba_ff = FormFactorTools::createDWBAScalarFormFactor(
-                            p_ff_particle, depth);
+                            p_ff_particle);
                 }
                 p_diffuse_term->m_form_factors.push_back(p_dwba_ff);
             }
diff --git a/Core/Algorithms/src/LayerStrategyBuilder.cpp b/Core/Algorithms/src/LayerStrategyBuilder.cpp
index 71ebf03a6b534963f151444a7317cafa5f3e0994..a3bcc269536cb46d58fd7e8f1db2217e33c4d61a 100644
--- a/Core/Algorithms/src/LayerStrategyBuilder.cpp
+++ b/Core/Algorithms/src/LayerStrategyBuilder.cpp
@@ -153,8 +153,6 @@ FormFactorInfo *LayerStrategyBuilder::createFormFactorInfo(
     // formfactor
     IFormFactor *p_ff_particle=0;
     kvector_t position = p_particle_info->getPosition();
-    // TODO: remove this later:
-    position.setZ(0.0);
     if (position==kvector_t(0.0, 0.0, 0.0)) {
         p_ff_particle = P_particle_clone->createFormFactor(factor);
     }
@@ -167,14 +165,13 @@ FormFactorInfo *LayerStrategyBuilder::createFormFactorInfo(
     IFormFactor *p_ff_framework(p_ff_particle);
     size_t n_layers = mp_layer->getNumberOfLayers();
     if (n_layers>1) {
-        double depth = p_particle_info->getDepth();
         if (requiresMatrixFFs()) {
             p_ff_framework = FormFactorTools::createDWBAMatrixFormFactor(
-                    p_ff_particle, depth);
+                    p_ff_particle);
         }
         else {
             p_ff_framework = FormFactorTools::createDWBAScalarFormFactor(
-                    p_ff_particle, depth);
+                    p_ff_particle);
         }
     }
     p_result->mp_ff = p_ff_framework;
diff --git a/Core/FormFactors/inc/FormFactorDWBAConstZ.h b/Core/FormFactors/inc/FormFactorDWBAConstZ.h
deleted file mode 100644
index ce87952eafa3787281476fb458bb547b18b5fccb..0000000000000000000000000000000000000000
--- a/Core/FormFactors/inc/FormFactorDWBAConstZ.h
+++ /dev/null
@@ -1,49 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FormFactors/inc/FormFactorDWBAConstZ.h
-//! @brief     Defines class FormFactorDWBAConstZ.
-//!
-//! @homepage  http://apps.jcns.fz-juelich.de/BornAgain
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#ifndef FORMFACTORDWBACONSTZ_H_
-#define FORMFACTORDWBACONSTZ_H_
-
-#include "FormFactorDWBA.h"
-
-//! @class FormFactorDWBAConstZ
-//! @ingroup formfactors_internal
-//! @brief Calculates a DWBA formfactor for particles at fixed depth.
-
-class BA_CORE_API_ FormFactorDWBAConstZ : public FormFactorDWBA
-{
-public:
-    FormFactorDWBAConstZ(IFormFactor* p_form_factor, double depth=0.0);
-    virtual ~FormFactorDWBAConstZ() {}
-    virtual FormFactorDWBAConstZ *clone() const;
-    virtual void accept(ISampleVisitor *visitor) const { visitor->visit(this); }
-
-    virtual complex_t evaluate(const cvector_t& k_i,
-            const Bin1DCVector& k_f_bin, const Bin1D &alpha_f_bin) const;
-protected:
-    double m_depth;
-
-private:
-    inline complex_t getDepthPhase(const complex_t& q_z) const
-    {
-        complex_t exponent = -complex_t(0.0,1.0)*q_z*m_depth;
-                             // Minus sign for depth (m_depth > 0)
-        return std::exp(exponent);
-    }
-};
-
-#endif /* FORMFACTORDWBACONSTZ_H_ */
-
-
diff --git a/Core/FormFactors/inc/FormFactorDWBAPolConstZ.h b/Core/FormFactors/inc/FormFactorDWBAPolConstZ.h
deleted file mode 100644
index 2000380986c3da61fc228fc5d0643eff97918145..0000000000000000000000000000000000000000
--- a/Core/FormFactors/inc/FormFactorDWBAPolConstZ.h
+++ /dev/null
@@ -1,53 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FormFactors/inc/FormFactorDWBAPolConstZ.h
-//! @brief     Defines class FormFactorDWBAPolConstZ.
-//!
-//! @homepage  http://apps.jcns.fz-juelich.de/BornAgain
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#ifndef FORMFACTORDWBAPOLCONSTZ_H_
-#define FORMFACTORDWBAPOLCONSTZ_H_
-
-#include "FormFactorDWBAPol.h"
-
-//! @class FormFactorDWBAPolConstZ
-//! @ingroup formfactors_internal
-//! @brief Calculates a polarized DWBA formfactor for particles at fixed depth.
-
-class BA_CORE_API_ FormFactorDWBAPolConstZ : public FormFactorDWBAPol
-{
-public:
-    FormFactorDWBAPolConstZ(IFormFactor *p_formfactor, double depth=0.0);
-    virtual ~FormFactorDWBAPolConstZ();
-
-    virtual FormFactorDWBAPolConstZ *clone() const;
-
-    //! calls the ISampleVisitor's visit method
-    virtual void accept(ISampleVisitor *visitor) const { visitor->visit(this); }
-
-    //! Calculates and returns a polarized form factor calculation in DWBA
-    virtual Eigen::Matrix2cd evaluatePol(const cvector_t& k_i,
-            const Bin1DCVector& k_f_bin, const Bin1D &alpha_f, const Bin1D &phi_f) const;
-
-protected:
-    double m_depth;
-
-private:
-    inline complex_t getDepthPhase(const complex_t& q_z) const
-    {
-        complex_t exponent = -complex_t(0.0,1.0)*q_z*m_depth;
-                             // Minus sign for depth (m_depth > 0)
-        return std::exp(exponent);
-    }
-};
-
-
-#endif /* FORMFACTORDWBAPOLCONSTZ_H_ */
diff --git a/Core/FormFactors/inc/FormFactorTools.h b/Core/FormFactors/inc/FormFactorTools.h
index d3852936845d59c3b03f3e653e44baeab6645dc7..0925f3e73b016dc0ba6eba74cdeae7bb76d1f504 100644
--- a/Core/FormFactors/inc/FormFactorTools.h
+++ b/Core/FormFactors/inc/FormFactorTools.h
@@ -24,13 +24,11 @@ namespace FormFactorTools {
 
 //! Decorates the given formfactor with a scalar dwba formfactor and returns
 //! this form factor
-IFormFactor* createDWBAScalarFormFactor(IFormFactor* p_form_factor,
-        double depth=0.0);
+IFormFactor* createDWBAScalarFormFactor(IFormFactor* p_form_factor);
 
 //! Decorates the given formfactor with a matrix dwba formfactor and returns
 //! this form factor
-IFormFactor* createDWBAMatrixFormFactor(IFormFactor* p_form_factor,
-        double depth=0.0);
+IFormFactor* createDWBAMatrixFormFactor(IFormFactor* p_form_factor);
 }
 
 
diff --git a/Core/FormFactors/inc/FormFactors.h b/Core/FormFactors/inc/FormFactors.h
index cd787ecf909ecb64b2512e00fa42e42187d4f8b4..220811e4c105fe5d23a14b93d4d1f272c95ffc53 100644
--- a/Core/FormFactors/inc/FormFactors.h
+++ b/Core/FormFactors/inc/FormFactors.h
@@ -30,9 +30,7 @@
 #include "FormFactorDecoratorMaterial.h"
 #include "FormFactorDecoratorTransformation.h"
 #include "FormFactorDWBA.h"
-#include "FormFactorDWBAConstZ.h"
 #include "FormFactorDWBAPol.h"
-#include "FormFactorDWBAPolConstZ.h"
 #include "FormFactorEllipsoidalCylinder.h"
 #include "FormFactorFullSphere.h"
 #include "FormFactorFullSpheroid.h"
diff --git a/Core/FormFactors/src/FormFactorDWBAConstZ.cpp b/Core/FormFactors/src/FormFactorDWBAConstZ.cpp
deleted file mode 100644
index db9fa9910a62e94fe9caa7ec62df090b4a83588d..0000000000000000000000000000000000000000
--- a/Core/FormFactors/src/FormFactorDWBAConstZ.cpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FormFactors/src/FormFactorDWBAConstZ.cpp
-//! @brief     Implements class FormFactorDWBAConstZ.
-//!
-//! @homepage  http://apps.jcns.fz-juelich.de/BornAgain
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#include "FormFactorDWBAConstZ.h"
-
-#include <boost/scoped_ptr.hpp>
-
-FormFactorDWBAConstZ::FormFactorDWBAConstZ(
-    IFormFactor* p_form_factor, double depth)
-  : FormFactorDWBA(p_form_factor)
-  , m_depth(depth)
-{
-    setName("FormFactorDWBAConstZ");
-}
-
-complex_t FormFactorDWBAConstZ::evaluate(
-    const cvector_t& k_i, const Bin1DCVector& k_f_bin, const Bin1D &alpha_f_bin) const
-{
-    calculateTerms(k_i, k_f_bin, alpha_f_bin);
-
-    complex_t k_iz = k_i.z();
-    complex_t k_fz = mp_out_coeffs->getScalarKz();
-    m_term_S *= getDepthPhase(k_iz-k_fz);
-    m_term_RS *= getDepthPhase(-k_iz-k_fz);
-    m_term_SR *= getDepthPhase(k_iz+k_fz);
-    m_term_RSR *= getDepthPhase(-k_iz+k_fz);
-
-    return m_term_S + m_term_RS + m_term_SR + m_term_RSR;
-}
-
-FormFactorDWBAConstZ* FormFactorDWBAConstZ::clone() const
-{
-    FormFactorDWBAConstZ *p_clone =
-        new FormFactorDWBAConstZ(mp_form_factor->clone(), m_depth);
-    p_clone->setSpecularInfo(mp_in_coeffs, mp_out_coeffs);
-    return p_clone;
-}
-
-
diff --git a/Core/FormFactors/src/FormFactorDWBAPolConstZ.cpp b/Core/FormFactors/src/FormFactorDWBAPolConstZ.cpp
deleted file mode 100644
index 0866281664dceb1c470f0b55f1bc3fe6a6088af6..0000000000000000000000000000000000000000
--- a/Core/FormFactors/src/FormFactorDWBAPolConstZ.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// ************************************************************************** //
-//
-//  BornAgain: simulate and fit scattering at grazing incidence
-//
-//! @file      FormFactors/src/FormFactorDWBAPolConstZ.cpp
-//! @brief     Implements class FormFactorDWBAPolConstZ.
-//!
-//! @homepage  http://apps.jcns.fz-juelich.de/BornAgain
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2013
-//! @authors   Scientific Computing Group at MLZ Garching
-//! @authors   C. Durniak, G. Pospelov, W. Van Herck, J. Wuttke
-//
-// ************************************************************************** //
-
-#include "FormFactorDWBAPolConstZ.h"
-#include <boost/scoped_ptr.hpp>
-
-FormFactorDWBAPolConstZ::FormFactorDWBAPolConstZ(IFormFactor* p_formfactor,
-        double depth)
-: FormFactorDWBAPol(p_formfactor)
-, m_depth(depth)
-{
-    setName("FormFactorDWBAPolConstZ");
-}
-
-FormFactorDWBAPolConstZ::~FormFactorDWBAPolConstZ()
-{
-}
-
-FormFactorDWBAPolConstZ* FormFactorDWBAPolConstZ::clone() const
-{
-    FormFactorDWBAPolConstZ *p_result = new FormFactorDWBAPolConstZ(
-            mp_form_factor->clone(), m_depth);
-    p_result->setSpecularInfo(mp_in_coeffs, mp_out_coeffs);
-    p_result->setName(getName());
-    return p_result;
-}
-
-Eigen::Matrix2cd FormFactorDWBAPolConstZ::evaluatePol(const cvector_t& k_i,
-        const Bin1DCVector& k_f_bin, const Bin1D &alpha_f_bin, const Bin1D &phi_f_bin) const
-{
-    complex_t kiz_1R = mp_in_coeffs->getKz()(0);
-    complex_t kiz_1T = -mp_in_coeffs->getKz()(0);
-    complex_t kiz_2R = mp_in_coeffs->getKz()(1);
-    complex_t kiz_2T = -mp_in_coeffs->getKz()(1);
-    complex_t kfz_1R = mp_out_coeffs->getKz()(0);
-    complex_t kfz_1T = -kfz_1R;
-    complex_t kfz_2R = mp_out_coeffs->getKz()(1);;
-    complex_t kfz_2T = -kfz_2R;
-    calculateTerms(k_i, k_f_bin, alpha_f_bin, phi_f_bin);
-
-    // multiply with correct phases from depth of particle
-    // eigenmode 1 -> eigenmode 1
-    m_M11_S *= getDepthPhase(kiz_1T - kfz_1T);
-    m_M11_RS *= getDepthPhase(kiz_1R - kfz_1T);
-    m_M11_SR *= getDepthPhase(kiz_1T - kfz_1R);
-    m_M11_RSR *= getDepthPhase(kiz_1R - kfz_1R);
-    // eigenmode 1 -> eigenmode 2
-    m_M12_S *= getDepthPhase(kiz_1T - kfz_2T);
-    m_M12_RS *= getDepthPhase(kiz_1R - kfz_2T);
-    m_M12_SR *= getDepthPhase(kiz_1T - kfz_2R);
-    m_M12_RSR *= getDepthPhase(kiz_1R - kfz_2R);
-    // eigenmode 2 -> eigenmode 1
-    m_M21_S *= getDepthPhase(kiz_2T - kfz_1T);
-    m_M21_RS *= getDepthPhase(kiz_2R - kfz_1T);
-    m_M21_SR *= getDepthPhase(kiz_2T - kfz_1R);
-    m_M21_RSR *= getDepthPhase(kiz_2R - kfz_1R);
-    // eigenmode 2 -> eigenmode 2
-    m_M22_S *= getDepthPhase(kiz_2T - kfz_2T);
-    m_M22_RS *= getDepthPhase(kiz_2R - kfz_2T);
-    m_M22_SR *= getDepthPhase(kiz_2T - kfz_2R);
-    m_M22_RSR *= getDepthPhase(kiz_2R - kfz_2R);
-
-    // sum up all 16 DWBA terms
-    Eigen::Matrix2cd result =
-            m_M11_S + m_M11_RS + m_M11_SR + m_M11_RSR +
-            m_M12_S + m_M12_RS + m_M12_SR + m_M12_RSR +
-            m_M21_S + m_M21_RS + m_M21_SR + m_M21_RSR +
-            m_M22_S + m_M22_RS + m_M22_SR + m_M22_RSR;
-    return result;
-}
diff --git a/Core/FormFactors/src/FormFactorTools.cpp b/Core/FormFactors/src/FormFactorTools.cpp
index 3b2b3f6b57151215d0ddb18ca68f48768d018b20..db3f522f3b4ce6682f733f3e454478bf8b87cac1 100644
--- a/Core/FormFactors/src/FormFactorTools.cpp
+++ b/Core/FormFactors/src/FormFactorTools.cpp
@@ -14,26 +14,20 @@
 // ************************************************************************** //
 
 #include "FormFactorTools.h"
-#include "FormFactorDWBAConstZ.h"
-#include "FormFactorDWBAPolConstZ.h"
+#include "FormFactorDWBA.h"
+#include "FormFactorDWBAPol.h"
 
 IFormFactor* FormFactorTools::createDWBAScalarFormFactor(
-        IFormFactor* p_form_factor, double depth)
+        IFormFactor* p_form_factor)
 {
-    FormFactorDWBAConstZ *p_result =
-        new FormFactorDWBAConstZ(p_form_factor, depth);
+    FormFactorDWBA *p_result =
+        new FormFactorDWBA(p_form_factor);
     return p_result;
 }
 
 IFormFactor* FormFactorTools::createDWBAMatrixFormFactor(
-        IFormFactor* p_form_factor, double depth)
+        IFormFactor* p_form_factor)
 {
-    FormFactorDWBAPol *p_result(0);
-    if (depth) {
-        p_result = new FormFactorDWBAPolConstZ(p_form_factor, depth);
-    }
-    else {
-        p_result = new FormFactorDWBAPol(p_form_factor);
-    }
+    FormFactorDWBAPol *p_result = new FormFactorDWBAPol(p_form_factor);
     return p_result;
 }
diff --git a/Core/PythonAPI/src/PythonModule.cpp b/Core/PythonAPI/src/PythonModule.cpp
index 2f396440e55cf2f31a4fef7c387d4e61a89694d6..8ebc8fbd07a44d8e224b4d3d710970612411f5e9 100644
--- a/Core/PythonAPI/src/PythonModule.cpp
+++ b/Core/PythonAPI/src/PythonModule.cpp
@@ -10,127 +10,127 @@ GCC_DIAG_ON(missing-field-initializers)
 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
 #define PY_ARRAY_UNIQUE_SYMBOL BORNAGAIN_PYTHONAPI_ARRAY
 #include "numpy/arrayobject.h"
-#include "FormFactorFullSphere.pypp.h"
-#include "Lattice.pypp.h"
-#include "FormFactorInfLongBox.pypp.h"
-#include "Layer.pypp.h"
-#include "FormFactorHemiEllipsoid.pypp.h"
-#include "FormFactorPrism3.pypp.h"
+#include "FormFactorFullSpheroid.pypp.h"
+#include "DistributionGate.pypp.h"
+#include "SimpleSelectionRule.pypp.h"
+#include "RealParameterWrapper.pypp.h"
+#include "vdouble1d_t.pypp.h"
 #include "SimulationParameters.pypp.h"
-#include "FormFactorInfLongRipple1.pypp.h"
-#include "FTDistribution1DVoigt.pypp.h"
-#include "FormFactorRipple1.pypp.h"
-#include "ParticleInfo.pypp.h"
-#include "ICompositeSample.pypp.h"
-#include "OffSpecSimulation.pypp.h"
-#include "IResolutionFunction2D.pypp.h"
-#include "vector_kvector_t.pypp.h"
-#include "FTDistribution1DGate.pypp.h"
-#include "LatticeBasis.pypp.h"
-#include "FormFactorRipple2.pypp.h"
-#include "FTDistribution2DVoigt.pypp.h"
-#include "IFormFactorBorn.pypp.h"
-#include "FormFactorPyramid.pypp.h"
-#include "ISample.pypp.h"
+#include "Transform3D.pypp.h"
+#include "ThreadInfo.pypp.h"
+#include "InterferenceFunction2DLattice.pypp.h"
+#include "LayerInterface.pypp.h"
 #include "ILayout.pypp.h"
+#include "FormFactorCone6.pypp.h"
 #include "FormFactorTetrahedron.pypp.h"
-#include "InterferenceFunction1DParaCrystal.pypp.h"
-#include "Simulation.pypp.h"
-#include "ParticleLayout.pypp.h"
-#include "FTDistribution2DCone.pypp.h"
-#include "FormFactorEllipsoidalCylinder.pypp.h"
-#include "vector_IFormFactorPtr_t.pypp.h"
-#include "FTDistribution1DGauss.pypp.h"
-#include "HomogeneousMaterial.pypp.h"
-#include "cvector_t.pypp.h"
-#include "FTDistribution2DGauss.pypp.h"
-#include "IObservable.pypp.h"
-#include "FormFactorBox.pypp.h"
-#include "DistributionLogNormal.pypp.h"
-#include "FormFactorCylinder.pypp.h"
-#include "Detector.pypp.h"
-#include "IObserver.pypp.h"
-#include "ResolutionFunction2DGaussian.pypp.h"
-#include "IParameterized.pypp.h"
-#include "FormFactorGauss.pypp.h"
-#include "FormFactorDecoratorDebyeWaller.pypp.h"
-#include "IDetectorResolution.pypp.h"
+#include "FTDistribution1DCosine.pypp.h"
+#include "FTDistribution1DTriangle.pypp.h"
 #include "FormFactorWeighted.pypp.h"
-#include "InterferenceFunction2DLattice.pypp.h"
-#include "RealParameterWrapper.pypp.h"
-#include "LayerInterface.pypp.h"
-#include "ParticleCoreShell.pypp.h"
-#include "InterferenceFunction1DLattice.pypp.h"
-#include "FormFactorCrystal.pypp.h"
-#include "Instrument.pypp.h"
-#include "PythonInterface_global_variables.pypp.h"
-#include "IFTDistribution1D.pypp.h"
-#include "FormFactorTrivial.pypp.h"
 #include "DistributionGaussian.pypp.h"
-#include "Lattice1DIFParameters.pypp.h"
-#include "DistributionCosine.pypp.h"
-#include "IClusteredParticles.pypp.h"
-#include "FormFactorLorentz.pypp.h"
-#include "Bin1DCVector.pypp.h"
+#include "IDetectorResolution.pypp.h"
+#include "FormFactorCylinder.pypp.h"
+#include "Crystal.pypp.h"
+#include "FTDistribution1DCauchy.pypp.h"
+#include "IFormFactorBorn.pypp.h"
+#include "FormFactorEllipsoidalCylinder.pypp.h"
 #include "InterferenceFunctionNone.pypp.h"
-#include "IFormFactorDecorator.pypp.h"
-#include "Bin1D.pypp.h"
-#include "ISampleBuilder.pypp.h"
-#include "IntensityDataIOFactory.pypp.h"
 #include "FTDistribution2DGate.pypp.h"
-#include "FormFactorInfLongRipple2.pypp.h"
-#include "IMaterial.pypp.h"
-#include "InterferenceFunction2DParaCrystal.pypp.h"
-#include "Particle.pypp.h"
+#include "vector_kvector_t.pypp.h"
 #include "FormFactorTruncatedSpheroid.pypp.h"
-#include "MesoCrystal.pypp.h"
-#include "ParticleCollection.pypp.h"
+#include "Particle.pypp.h"
+#include "FormFactorTrivial.pypp.h"
+#include "ConstKBinAxis.pypp.h"
 #include "FTDistribution2DCauchy.pypp.h"
-#include "IInterferenceFunction.pypp.h"
-#include "FTDistribution1DCosine.pypp.h"
-#include "IParticle.pypp.h"
-#include "FTDistribution1DTriangle.pypp.h"
-#include "FormFactorPrism6.pypp.h"
-#include "HomogeneousMagneticMaterial.pypp.h"
-#include "FormFactorFullSpheroid.pypp.h"
-#include "Transform3D.pypp.h"
-#include "IntensityData.pypp.h"
-#include "DistributionGate.pypp.h"
-#include "ThreadInfo.pypp.h"
-#include "IAxis.pypp.h"
-#include "CustomBinAxis.pypp.h"
-#include "FormFactorCone6.pypp.h"
-#include "ICloneable.pypp.h"
-#include "PythonInterface_free_functions.pypp.h"
+#include "FormFactorCrystal.pypp.h"
 #include "vector_longinteger_t.pypp.h"
-#include "FormFactorSphereLogNormalRadius.pypp.h"
-#include "FormFactorSphereGaussianRadius.pypp.h"
-#include "FormFactorTruncatedSphere.pypp.h"
-#include "IntensityDataFunctions.pypp.h"
-#include "DistributionLorentz.pypp.h"
-#include "ConstKBinAxis.pypp.h"
-#include "ParameterDistribution.pypp.h"
-#include "ParameterPool.pypp.h"
+#include "ResolutionFunction2DGaussian.pypp.h"
+#include "FTDistribution1DGauss.pypp.h"
+#include "FTDistribution1DGate.pypp.h"
 #include "FormFactorAnisoPyramid.pypp.h"
-#include "FormFactorCuboctahedron.pypp.h"
-#include "MultiLayer.pypp.h"
-#include "FormFactorCone.pypp.h"
-#include "IDistribution1D.pypp.h"
-#include "LayerRoughness.pypp.h"
-#include "VariableBinAxis.pypp.h"
-#include "SimpleSelectionRule.pypp.h"
 #include "FixedBinAxis.pypp.h"
-#include "Lattice2DIFParameters.pypp.h"
+#include "MultiLayer.pypp.h"
 #include "IFormFactor.pypp.h"
-#include "vdouble1d_t.pypp.h"
-#include "IFTDistribution2D.pypp.h"
-#include "Beam.pypp.h"
-#include "FormFactorSphereUniformRadius.pypp.h"
-#include "FTDistribution1DCauchy.pypp.h"
 #include "kvector_t.pypp.h"
-#include "Crystal.pypp.h"
+#include "FormFactorSphereUniformRadius.pypp.h"
+#include "OffSpecSimulation.pypp.h"
+#include "FormFactorRipple1.pypp.h"
+#include "InterferenceFunction1DParaCrystal.pypp.h"
+#include "Simulation.pypp.h"
+#include "IObservable.pypp.h"
+#include "FormFactorLorentz.pypp.h"
 #include "ISelectionRule.pypp.h"
+#include "FormFactorRipple2.pypp.h"
+#include "LayerRoughness.pypp.h"
+#include "Bin1DCVector.pypp.h"
+#include "FormFactorSphereGaussianRadius.pypp.h"
+#include "ParameterPool.pypp.h"
+#include "FormFactorPrism3.pypp.h"
+#include "IMaterial.pypp.h"
+#include "FTDistribution1DVoigt.pypp.h"
+#include "IntensityDataFunctions.pypp.h"
+#include "FormFactorPrism6.pypp.h"
+#include "IClusteredParticles.pypp.h"
+#include "VariableBinAxis.pypp.h"
+#include "IParticle.pypp.h"
+#include "DistributionCosine.pypp.h"
+#include "FormFactorHemiEllipsoid.pypp.h"
+#include "IAxis.pypp.h"
 #include "vector_integer_t.pypp.h"
+#include "IntensityDataIOFactory.pypp.h"
+#include "ParameterDistribution.pypp.h"
+#include "Layer.pypp.h"
+#include "FormFactorPyramid.pypp.h"
+#include "CustomBinAxis.pypp.h"
+#include "FTDistribution2DCone.pypp.h"
+#include "IFTDistribution1D.pypp.h"
+#include "DistributionLorentz.pypp.h"
+#include "IDistribution1D.pypp.h"
+#include "HomogeneousMagneticMaterial.pypp.h"
+#include "FormFactorCuboctahedron.pypp.h"
+#include "cvector_t.pypp.h"
+#include "PythonInterface_free_functions.pypp.h"
+#include "FormFactorSphereLogNormalRadius.pypp.h"
+#include "FormFactorInfLongRipple1.pypp.h"
+#include "IResolutionFunction2D.pypp.h"
+#include "vector_IFormFactorPtr_t.pypp.h"
+#include "FormFactorFullSphere.pypp.h"
+#include "ParticleLayout.pypp.h"
+#include "FormFactorBox.pypp.h"
+#include "IParameterized.pypp.h"
+#include "Lattice2DIFParameters.pypp.h"
+#include "IFormFactorDecorator.pypp.h"
+#include "InterferenceFunction1DLattice.pypp.h"
+#include "ISample.pypp.h"
+#include "ISampleBuilder.pypp.h"
+#include "PythonInterface_global_variables.pypp.h"
+#include "Beam.pypp.h"
+#include "HomogeneousMaterial.pypp.h"
+#include "ICloneable.pypp.h"
+#include "ParticleCoreShell.pypp.h"
+#include "FormFactorDecoratorDebyeWaller.pypp.h"
+#include "MesoCrystal.pypp.h"
+#include "Lattice1DIFParameters.pypp.h"
+#include "IObserver.pypp.h"
+#include "IntensityData.pypp.h"
+#include "Lattice.pypp.h"
+#include "IInterferenceFunction.pypp.h"
+#include "ParticleInfo.pypp.h"
+#include "Instrument.pypp.h"
+#include "FormFactorInfLongBox.pypp.h"
+#include "FormFactorCone.pypp.h"
+#include "FTDistribution2DGauss.pypp.h"
+#include "FormFactorTruncatedSphere.pypp.h"
+#include "FTDistribution2DVoigt.pypp.h"
+#include "FormFactorGauss.pypp.h"
+#include "InterferenceFunction2DParaCrystal.pypp.h"
+#include "Detector.pypp.h"
+#include "FormFactorInfLongRipple2.pypp.h"
+#include "LatticeBasis.pypp.h"
+#include "ICompositeSample.pypp.h"
+#include "Bin1D.pypp.h"
+#include "ParticleCollection.pypp.h"
+#include "DistributionLogNormal.pypp.h"
+#include "IFTDistribution2D.pypp.h"
 #include "__call_policies.pypp.hpp"
 #include "__convenience.pypp.hpp"
 #include "__call_policies.pypp.hpp"
diff --git a/Core/Samples/inc/ISampleVisitor.h b/Core/Samples/inc/ISampleVisitor.h
index 9c3d3a4e22d9ba74775789ab014015a73fdc301e..849f38a57431dc0cb3991150a86addd63e4b85f2 100644
--- a/Core/Samples/inc/ISampleVisitor.h
+++ b/Core/Samples/inc/ISampleVisitor.h
@@ -47,7 +47,6 @@ class DiffuseParticleInfo;
 class IFormFactor;
 // -
 class FormFactorDWBAPol;
-class FormFactorDWBAPolConstZ;
 // -
 class FormFactorWeighted;
 // -
@@ -85,7 +84,6 @@ class IFormFactorBornSeparable;
 class IFormFactorDecorator;
 // -
 class FormFactorDWBA;
-class FormFactorDWBAConstZ;
 class FormFactorDecoratorDebyeWaller;
 class FormFactorDecoratorFactor;
 class FormFactorDecoratorMaterial;
@@ -146,7 +144,6 @@ public:
     virtual void visit(const IFormFactor *);
 
     virtual void visit(const FormFactorDWBAPol *);
-    virtual void visit(const FormFactorDWBAPolConstZ *);
 
     virtual void visit(const FormFactorWeighted *);
 
@@ -184,7 +181,6 @@ public:
     virtual void visit(const IFormFactorDecorator *);
 
     virtual void visit(const FormFactorDWBA *);
-    virtual void visit(const FormFactorDWBAConstZ *);
     virtual void visit(const FormFactorDecoratorDebyeWaller *);
     virtual void visit(const FormFactorDecoratorFactor *);
     virtual void visit(const FormFactorDecoratorMaterial *);
diff --git a/Core/Samples/src/ISampleVisitor.cpp b/Core/Samples/src/ISampleVisitor.cpp
index cb84fe8d9cc76443418b44e20307a994799a80b4..3cca50385e2d7652ffdce5c48a29ae2eae27022f 100644
--- a/Core/Samples/src/ISampleVisitor.cpp
+++ b/Core/Samples/src/ISampleVisitor.cpp
@@ -149,12 +149,6 @@ void ISampleVisitor::visit(const FormFactorDWBAPol *)
 }
 
 
-void ISampleVisitor::visit(const FormFactorDWBAPolConstZ *)
-{
-    throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented.");
-}
-
-
 void ISampleVisitor::visit(const FormFactorWeighted *)
 {
     throw NotImplementedException("ISampleVisitor::visit(const FormFactorWeighted *) -> Error. Not implemented.");
@@ -342,12 +336,6 @@ void ISampleVisitor::visit(const FormFactorDWBA *)
 }
 
 
-void ISampleVisitor::visit(const FormFactorDWBAConstZ *)
-{
-    throw NotImplementedException("ISampleVisitor::visit(const FormFactorDWBAConstZ *) -> Error. Not implemented.");
-}
-
-
 void ISampleVisitor::visit(const FormFactorDecoratorDebyeWaller *)
 {
     throw NotImplementedException("ISampleVisitor::visit(const FormFactorDecoratorDebyeWaller *) -> Error. Not implemented.");
diff --git a/Core/Tools/inc/SampleMaterialVisitor.h b/Core/Tools/inc/SampleMaterialVisitor.h
index 4675c6a109845911659963924f5ddbf16c7723b4..e56d0e5c0d8759fa7ff0274d2158b628c28b41e6 100644
--- a/Core/Tools/inc/SampleMaterialVisitor.h
+++ b/Core/Tools/inc/SampleMaterialVisitor.h
@@ -61,7 +61,6 @@ public:
     virtual void visit(const IFormFactor *sample);
 
     virtual void visit(const FormFactorDWBAPol *sample);
-    virtual void visit(const FormFactorDWBAPolConstZ *sample);
 
     virtual void visit(const FormFactorWeighted *sample);
 
@@ -100,7 +99,6 @@ public:
     virtual void visit(const IFormFactorDecorator *sample);
 
     virtual void visit(const FormFactorDWBA *sample);
-    virtual void visit(const FormFactorDWBAConstZ *sample);
     virtual void visit(const FormFactorDecoratorDebyeWaller *sample);
     virtual void visit(const FormFactorDecoratorFactor *sample);
     virtual void visit(const FormFactorDecoratorMaterial *sample);
diff --git a/Core/Tools/inc/SamplePrintVisitor.h b/Core/Tools/inc/SamplePrintVisitor.h
index ad3d0b497db00bb904f2462baa2cf0fbe4d07e97..30b0bcca0aebb3faa06aa08c38d4e28f7292c6a3 100644
--- a/Core/Tools/inc/SamplePrintVisitor.h
+++ b/Core/Tools/inc/SamplePrintVisitor.h
@@ -58,7 +58,6 @@ public:
     virtual void visit(const IFormFactor *sample);
 
     virtual void visit(const FormFactorDWBAPol *sample);
-    virtual void visit(const FormFactorDWBAPolConstZ *sample);
 
     virtual void visit(const FormFactorWeighted *sample);
 
@@ -97,7 +96,6 @@ public:
     virtual void visit(const IFormFactorDecorator *sample);
 
     virtual void visit(const FormFactorDWBA *sample);
-    virtual void visit(const FormFactorDWBAConstZ *sample);
     virtual void visit(const FormFactorDecoratorDebyeWaller *sample);
     virtual void visit(const FormFactorDecoratorFactor *sample);
     virtual void visit(const FormFactorDecoratorMaterial *sample);
diff --git a/Core/Tools/src/SampleMaterialVisitor.cpp b/Core/Tools/src/SampleMaterialVisitor.cpp
index 9e3f1c2f9465d6b0dd0285b0eab1498fffe64381..4d879a70d262db4094fbb232555b0b856953c0b6 100644
--- a/Core/Tools/src/SampleMaterialVisitor.cpp
+++ b/Core/Tools/src/SampleMaterialVisitor.cpp
@@ -127,10 +127,6 @@ void SampleMaterialVisitor::visit(const FormFactorDWBAPol *)
 {
 }
 
-void SampleMaterialVisitor::visit(const FormFactorDWBAPolConstZ *)
-{
-}
-
 void SampleMaterialVisitor::visit(const FormFactorWeighted *)
 {
 }
@@ -259,10 +255,6 @@ void SampleMaterialVisitor::visit(const FormFactorDWBA *)
 {
 }
 
-void SampleMaterialVisitor::visit(const FormFactorDWBAConstZ *)
-{
-}
-
 void SampleMaterialVisitor::visit(const FormFactorDecoratorDebyeWaller *)
 {
 }
diff --git a/Core/Tools/src/SamplePrintVisitor.cpp b/Core/Tools/src/SamplePrintVisitor.cpp
index e1076733f73135e0d6c8cf35c96c42a9a2b13a89..acbe5e098f5228f99e29ffd72b15f4348dcced8f 100644
--- a/Core/Tools/src/SamplePrintVisitor.cpp
+++ b/Core/Tools/src/SamplePrintVisitor.cpp
@@ -163,13 +163,6 @@ void SamplePrintVisitor::visit(const FormFactorDWBAPol *)
 }
 
 
-void SamplePrintVisitor::visit(const FormFactorDWBAPolConstZ *)
-{
-    throw NotImplementedException("SamplePrintVisitor::"
-        "visit(const FormFactorDWBAPolConstZ *) -> Error. Not implemented.");
-}
-
-
 void SamplePrintVisitor::visit(const FormFactorWeighted *)
 {
     throw NotImplementedException("SamplePrintVisitor::"
@@ -352,13 +345,6 @@ void SamplePrintVisitor::visit(const FormFactorDWBA *)
 }
 
 
-void SamplePrintVisitor::visit(const FormFactorDWBAConstZ *)
-{
-    throw NotImplementedException("SamplePrintVisitor::"
-        "visit(const FormFactorDWBAConstZ *) -> Error. Not implemented.");
-}
-
-
 void SamplePrintVisitor::visit(const FormFactorDecoratorDebyeWaller *sample)
 {
     print_default(sample);
diff --git a/Fit/PythonAPI/src/PythonModule.cpp b/Fit/PythonAPI/src/PythonModule.cpp
index 9e316599b4cf7992d66a9756e63a29a6c5020ac4..ef8312b19c0e5f34a1dd036a15ac8689fdb68a4c 100644
--- a/Fit/PythonAPI/src/PythonModule.cpp
+++ b/Fit/PythonAPI/src/PythonModule.cpp
@@ -5,38 +5,38 @@ GCC_DIAG_OFF(missing-field-initializers)
 #include "boost/python.hpp"
 GCC_DIAG_ON(unused-parameter)
 GCC_DIAG_ON(missing-field-initializers)
-#include "FitObject.pypp.h"
-#include "IntensityFunctionLog.pypp.h"
 #include "IntensityFunctionSqrt.pypp.h"
-#include "FitStrategyDefault.pypp.h"
-#include "IChiSquaredModule.pypp.h"
+#include "MinimizerFactory.pypp.h"
+#include "IMinimizer.pypp.h"
+#include "vector_string_t.pypp.h"
+#include "SquaredFunctionSystematicError.pypp.h"
+#include "IntensityNormalizer.pypp.h"
+#include "IIntensityFunction.pypp.h"
+#include "INamed.pypp.h"
+#include "IntensityFunctionLog.pypp.h"
+#include "FitSuiteParameters.pypp.h"
 #include "AttFitting.pypp.h"
-#include "FitStrategyAdjustParameters.pypp.h"
+#include "FitParameter.pypp.h"
+#include "IntensityScaleAndShiftNormalizer.pypp.h"
+#include "IChiSquaredModule.pypp.h"
 #include "FitStrategyAdjustMinimizer.pypp.h"
-#include "ISquaredFunction.pypp.h"
+#include "IFitStrategy.pypp.h"
+#include "FitStrategyFixParameters.pypp.h"
 #include "SquaredFunctionGaussianError.pypp.h"
-#include "IIntensityFunction.pypp.h"
-#include "IntensityScaleAndShiftNormalizer.pypp.h"
-#include "SquaredFunctionMeanSquaredError.pypp.h"
-#include "FitSuiteParameters.pypp.h"
-#include "IMinimizer.pypp.h"
 #include "IIntensityNormalizer.pypp.h"
-#include "FitParameter.pypp.h"
-#include "INamed.pypp.h"
-#include "FitStrategyReleaseParameters.pypp.h"
 #include "FitSuite.pypp.h"
-#include "IntensityNormalizer.pypp.h"
-#include "FitStrategyFixParameters.pypp.h"
-#include "FitSuiteObjects.pypp.h"
-#include "SquaredFunctionSystematicError.pypp.h"
-#include "MinimizerFactory.pypp.h"
+#include "FitStrategyAdjustParameters.pypp.h"
 #include "ChiSquaredModule.pypp.h"
-#include "SquaredFunctionSimError.pypp.h"
 #include "MinimizerOptions.pypp.h"
-#include "AttLimits.pypp.h"
 #include "SquaredFunctionDefault.pypp.h"
-#include "vector_string_t.pypp.h"
-#include "IFitStrategy.pypp.h"
+#include "SquaredFunctionMeanSquaredError.pypp.h"
+#include "ISquaredFunction.pypp.h"
+#include "FitStrategyDefault.pypp.h"
+#include "AttLimits.pypp.h"
+#include "FitObject.pypp.h"
+#include "FitSuiteObjects.pypp.h"
+#include "SquaredFunctionSimError.pypp.h"
+#include "FitStrategyReleaseParameters.pypp.h"
 
 BOOST_PYTHON_MODULE(libBornAgainFit){
     boost::python::docstring_options doc_options(true, true, false);