diff --git a/Core/Aggregate/ILayout.cpp b/Core/Aggregate/ILayout.cpp
index e16677e573fab185517d7b4dce636de17667e538..d77d99454c610615eb9e2b3f6ec437cb91442ce6 100644
--- a/Core/Aggregate/ILayout.cpp
+++ b/Core/Aggregate/ILayout.cpp
@@ -14,4 +14,6 @@
 
 #include "ILayout.h"
 
-ILayout::~ILayout() =default;
+ILayout::ILayout() : m_weight(1.0) {}
+
+ILayout::~ILayout() = default;
diff --git a/Core/Aggregate/ILayout.h b/Core/Aggregate/ILayout.h
index c3cde085ea539485a012a4cb7430023d986ab36c..a019229c78784bc96d075460451187f20070546e 100644
--- a/Core/Aggregate/ILayout.h
+++ b/Core/Aggregate/ILayout.h
@@ -31,9 +31,7 @@ class IInterferenceFunction;
 class BA_CORE_API_ ILayout : public ISample
 {
 public:
-    enum EInterferenceApproximation { DA, SSCA };
-
-    ILayout() : m_weight(1.0), me_approx(DA) {}
+    ILayout();
     virtual ~ILayout();
 
     virtual ILayout* clone() const = 0;
@@ -63,18 +61,8 @@ public:
     //! Sets the relative weight of this layout
     void setWeight(double weight) { m_weight = weight; }
 
-    //! Gets the used approximation for particles and interference functions
-    EInterferenceApproximation getApproximation() const { return me_approx; }
-
-    //! Sets the used approximation for particles and interference functions
-    void setApproximation(EInterferenceApproximation approximation) { me_approx = approximation; }
-
 protected:
     double m_weight;
-
-private:
-    //! Approximation used for combining particles and interference functions
-    EInterferenceApproximation me_approx;
 };
 
 #endif // ILAYOUT_H
diff --git a/Core/Aggregate/ParticleLayout.cpp b/Core/Aggregate/ParticleLayout.cpp
index 9992bfc75303f715b49d841d7c633129723b9cf7..17a686d85fb72b37b143f0b0d52ad14cb4cb1e1c 100644
--- a/Core/Aggregate/ParticleLayout.cpp
+++ b/Core/Aggregate/ParticleLayout.cpp
@@ -72,7 +72,6 @@ ParticleLayout* ParticleLayout::clone() const
 
     p_result->setTotalParticleSurfaceDensity(totalParticleSurfaceDensity());
     p_result->setWeight(weight());
-    p_result->setApproximation(getApproximation());
 
     return p_result;
 }
@@ -92,7 +91,6 @@ ParticleLayout* ParticleLayout::cloneWithOffset(double offset) const
         p_result->setAndRegisterInterferenceFunction(mP_interference_function->clone());
 
     p_result->setTotalParticleSurfaceDensity(totalParticleSurfaceDensity());
-    p_result->setApproximation(getApproximation());
     p_result->setWeight(weight());
 
     return p_result;
diff --git a/Core/Export/SampleToPython.cpp b/Core/Export/SampleToPython.cpp
index d9c5cad239e808e40a9ab292cb43ec4fc78ec611..599a0904c6cd5b314ebfb192bb55563a0bd322ab 100644
--- a/Core/Export/SampleToPython.cpp
+++ b/Core/Export/SampleToPython.cpp
@@ -504,14 +504,6 @@ std::string SampleToPython::defineParticleLayouts() const
             if (auto p_iff = INodeUtils::OnlyChildOfType<IInterferenceFunction>(*particleLayout))
                 result << indent() << it->second << ".setInterferenceFunction("
                        << m_label->labelInterferenceFunction(p_iff) << ")\n";
-
-            switch (particleLayout->getApproximation()) {
-            case ILayout::DA:
-                break;
-            case ILayout::SSCA:
-                result << indent() << it->second << ".setApproximation(ba.ILayout.SSCA)\n";
-                break;
-            }
             result << indent() << it->second << ".setWeight("
                    << particleLayout->weight() << ")\n";
             result << indent() << it->second << ".setTotalParticleSurfaceDensity("
diff --git a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
index 0b222404714d916c9f6c2ee16d8b30e1400a89f4..72045a04cd439fe101e9a102228f238b03c606ab 100644
--- a/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
+++ b/Core/StandardSamples/SizeDistributionModelsBuilder.cpp
@@ -155,7 +155,6 @@ MultiLayer* SizeDistributionSSCAModelBuilder::buildSample() const
     particle_layout.addParticle(cylinder1, 0.8);
     particle_layout.addParticle(cylinder2, 0.2);
     particle_layout.setInterferenceFunction(interference);
-    particle_layout.setApproximation(ILayout::SSCA);
 
     Layer air_layer(m_ambience);
     air_layer.addLayout(particle_layout);
@@ -201,7 +200,6 @@ MultiLayer* CylindersInSSCABuilder::buildSample() const
     particle_layout.addParticle(particle_collection);
 
     particle_layout.setInterferenceFunction(interference_function);
-    particle_layout.setApproximation(ILayout::SSCA);
 
     air_layer.addLayout(particle_layout);
 
diff --git a/Examples/Demos/simul_demo_cyl_SSCA.py b/Examples/Demos/simul_demo_cyl_SSCA.py
index 05df95378a3cc0d638b41fda6ba2e62989fe0d78..da571fdcd36b2ab8f319a167c64c614e144342b2 100644
--- a/Examples/Demos/simul_demo_cyl_SSCA.py
+++ b/Examples/Demos/simul_demo_cyl_SSCA.py
@@ -34,8 +34,6 @@ def RunSimulation():
     # set coupling between size and space
     interference.setKappa(2)
     particle_layout.setInterferenceFunction(interference)
-    # particle_layout.setApproximation(ILayout.SSCA)
-    particle_layout.setApproximation(ILayout.DA)
 
     # air layer with particles and substrate form multi layer
     air_layer = Layer(mAir)
diff --git a/Examples/Demos/simul_demo_movie3.py b/Examples/Demos/simul_demo_movie3.py
index aeeb6850dde6579009c2c55ce120779eb8140600..cfaa260730d08c4b71323f9bf47fd8319790c186 100644
--- a/Examples/Demos/simul_demo_movie3.py
+++ b/Examples/Demos/simul_demo_movie3.py
@@ -39,7 +39,6 @@ def RunSimulation():
     # set coupling between size and space
     interference.setKappa(kappa)
     particle_layout.setInterferenceFunction(interference)
-    particle_layout.setApproximation(ILayout.SSCA)
 
     # air layer with particles and substrate form multi layer
     air_layer = Layer(mAir)
diff --git a/Examples/python/fitting/ex03_ExtendedExamples/experiment_at_galaxi/sample_builder.py b/Examples/python/fitting/ex03_ExtendedExamples/experiment_at_galaxi/sample_builder.py
index 78d811461fa8611cc40b167dc9104b8e820ed035..9a3dfffe63dbfa9a673033ab0be387f1da49e7e0 100644
--- a/Examples/python/fitting/ex03_ExtendedExamples/experiment_at_galaxi/sample_builder.py
+++ b/Examples/python/fitting/ex03_ExtendedExamples/experiment_at_galaxi/sample_builder.py
@@ -74,7 +74,6 @@ class SampleBuilder:
         layout = ba.ParticleLayout()
         layout.addParticle(part_coll, 1.0)
         layout.setInterferenceFunction(interference)
-        layout.setApproximation(ba.ILayout.SSCA)
         layout.setTotalParticleSurfaceDensity(1)
 
         # roughness
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
index f84533a21091a5adbd32f5820a6ac610213048d1..cbd381ccb1a2c177aa68f28530b0b73cb52890c2 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
@@ -37,7 +37,6 @@ def get_sample():
     particle_layout.addParticle(cylinder1, 0.8)
     particle_layout.addParticle(cylinder2, 0.2)
     particle_layout.setInterferenceFunction(interference)
-    particle_layout.setApproximation(ba.ILayout.SSCA)
 
     air_layer = ba.Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
index 1e2da44e649fffa4f6b3df32b4b938d0266c0a7f..a8f73eb053fe4f62e9435a27c84fc0d3afaa09da 100644
--- a/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
+++ b/GUI/coregui/Models/GUIDomainSampleVisitor.cpp
@@ -87,19 +87,6 @@ void GUIDomainSampleVisitor::visit(const ParticleLayout* p_sample)
     } else {
         p_layout_item = m_sampleModel->insertNewItem(Constants::ParticleLayoutType);
     }
-
-    ComboProperty approx_prop;
-    approx_prop << Constants::LAYOUT_DA << Constants::LAYOUT_SSCA;
-    ILayout::EInterferenceApproximation approx = p_sample->getApproximation();
-    switch (approx) {
-    case ILayout::DA:
-        approx_prop.setValue(Constants::LAYOUT_DA);
-        break;
-    case ILayout::SSCA:
-        approx_prop.setValue(Constants::LAYOUT_SSCA);
-        break;
-    }
-    p_layout_item->setItemValue(ParticleLayoutItem::P_APPROX, approx_prop.variant());
     p_layout_item->setItemValue(ParticleLayoutItem::P_TOTAL_DENSITY,
                                 p_sample->totalParticleSurfaceDensity());
     p_layout_item->setItemValue(ParticleLayoutItem::P_WEIGHT, p_sample->weight());
diff --git a/GUI/coregui/Models/ParticleLayoutItem.cpp b/GUI/coregui/Models/ParticleLayoutItem.cpp
index 0127b564460fe56f7a443d04b33d2458aa46644c..28d20e6df45911a29ca9b5c4fe838f524e8d48e8 100644
--- a/GUI/coregui/Models/ParticleLayoutItem.cpp
+++ b/GUI/coregui/Models/ParticleLayoutItem.cpp
@@ -47,7 +47,6 @@ const QString weight_tooltip =
     "Should be used when multiple layouts define different domains in the sample.";
 } // namespace
 
-const QString ParticleLayoutItem::P_APPROX = "Approximation";
 const QString ParticleLayoutItem::P_TOTAL_DENSITY =
     QString::fromStdString(BornAgain::TotalParticleDensity);
 const QString ParticleLayoutItem::P_WEIGHT = QString::fromStdString(BornAgain::Weight);
@@ -58,9 +57,6 @@ ParticleLayoutItem::ParticleLayoutItem() : SessionGraphicsItem(Constants::Partic
 {
     setToolTip(QStringLiteral("A layout of particles"));
 
-    ComboProperty approx = ComboProperty() << Constants::LAYOUT_DA << Constants::LAYOUT_SSCA;
-    addProperty(P_APPROX, approx.variant())
-        ->setToolTip(QStringLiteral("Approximation used to distribute the particles"));
     addProperty(P_TOTAL_DENSITY, 0.01)->setToolTip(density_tooltip);
     getItem(P_TOTAL_DENSITY)->setDecimals(10);
     addProperty(P_WEIGHT, 1.0)->setToolTip(weight_tooltip);
diff --git a/GUI/coregui/Models/ParticleLayoutItem.h b/GUI/coregui/Models/ParticleLayoutItem.h
index 8578e824ee0daf9a91feafbddf0ac17e27d83cac..ffcc62b83108883051d926611a317f0c202da083 100644
--- a/GUI/coregui/Models/ParticleLayoutItem.h
+++ b/GUI/coregui/Models/ParticleLayoutItem.h
@@ -20,7 +20,6 @@
 class BA_CORE_API_ ParticleLayoutItem : public SessionGraphicsItem
 {
 public:
-    static const QString P_APPROX;
     static const QString P_TOTAL_DENSITY;
     static const QString P_WEIGHT;
     static const QString T_PARTICLES;
diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp
index ec5ac209f3f7c3976e17f374d1d3b3862fdbc05c..845b72fed1f8ea83406f1daf0288ecf7d31df0b1 100644
--- a/GUI/coregui/Models/TransformToDomain.cpp
+++ b/GUI/coregui/Models/TransformToDomain.cpp
@@ -115,13 +115,6 @@ TransformToDomain::createLayerRoughness(const SessionItem& roughnessItem)
 std::unique_ptr<ParticleLayout> TransformToDomain::createParticleLayout(const SessionItem& item)
 {
     auto P_layout = std::make_unique<ParticleLayout>();
-    auto prop = item.getItemValue(ParticleLayoutItem::P_APPROX).value<ComboProperty>();
-    QString approximation = prop.getValue();
-    if (approximation == Constants::LAYOUT_DA) {
-        P_layout->setApproximation(ILayout::DA);
-    } else if (approximation == Constants::LAYOUT_SSCA) {
-        P_layout->setApproximation(ILayout::SSCA);
-    }
     auto total_density = item.getItemValue(ParticleLayoutItem::P_TOTAL_DENSITY).value<double>();
     auto layout_weight = item.getItemValue(ParticleLayoutItem::P_WEIGHT).value<double>();
     P_layout->setTotalParticleSurfaceDensity(total_density);
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index d8e1db33aac7cae4148e2e00c0debd2feb015c44..6cf09c254f8d24c5bf5f8366dc4a36bb034d2729 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -19141,8 +19141,6 @@ class ILayout(ISample):
     def __init__(self, *args, **kwargs):
         raise AttributeError("No constructor defined - class is abstract")
     __repr__ = _swig_repr
-    DA = _libBornAgainCore.ILayout_DA
-    SSCA = _libBornAgainCore.ILayout_SSCA
     __swig_destroy__ = _libBornAgainCore.delete_ILayout
     __del__ = lambda self: None
 
@@ -19256,30 +19254,6 @@ class ILayout(ISample):
         """
         return _libBornAgainCore.ILayout_setWeight(self, weight)
 
-
-    def getApproximation(self):
-        """
-        getApproximation(ILayout self) -> ILayout::EInterferenceApproximation
-
-        EInterferenceApproximation ILayout::getApproximation() const
-
-        Gets the used approximation for particles and interference functions. 
-
-        """
-        return _libBornAgainCore.ILayout_getApproximation(self)
-
-
-    def setApproximation(self, approximation):
-        """
-        setApproximation(ILayout self, ILayout::EInterferenceApproximation approximation)
-
-        void ILayout::setApproximation(EInterferenceApproximation approximation)
-
-        Sets the used approximation for particles and interference functions. 
-
-        """
-        return _libBornAgainCore.ILayout_setApproximation(self, approximation)
-
 ILayout_swigregister = _libBornAgainCore.ILayout_swigregister
 ILayout_swigregister(ILayout)
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 8a282d87ac0d5e145e67270ee02ee95815d41f69..9cfe2292d51bd5cc519bb304b85c95a365669f1c 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -89455,58 +89455,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_ILayout_getApproximation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  ILayout *arg1 = (ILayout *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  ILayout::EInterferenceApproximation result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:ILayout_getApproximation",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ILayout, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ILayout_getApproximation" "', argument " "1"" of type '" "ILayout const *""'"); 
-  }
-  arg1 = reinterpret_cast< ILayout * >(argp1);
-  result = (ILayout::EInterferenceApproximation)((ILayout const *)arg1)->getApproximation();
-  resultobj = SWIG_From_int(static_cast< int >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_ILayout_setApproximation(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  ILayout *arg1 = (ILayout *) 0 ;
-  ILayout::EInterferenceApproximation arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  int val2 ;
-  int ecode2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:ILayout_setApproximation",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ILayout, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ILayout_setApproximation" "', argument " "1"" of type '" "ILayout *""'"); 
-  }
-  arg1 = reinterpret_cast< ILayout * >(argp1);
-  ecode2 = SWIG_AsVal_int(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "ILayout_setApproximation" "', argument " "2"" of type '" "ILayout::EInterferenceApproximation""'");
-  } 
-  arg2 = static_cast< ILayout::EInterferenceApproximation >(val2);
-  (arg1)->setApproximation(arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *ILayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
   if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
@@ -133971,22 +133919,6 @@ static PyMethodDef SwigMethods[] = {
 		"Sets the relative weight of this layout. \n"
 		"\n"
 		""},
-	 { (char *)"ILayout_getApproximation", _wrap_ILayout_getApproximation, METH_VARARGS, (char *)"\n"
-		"ILayout_getApproximation(ILayout self) -> ILayout::EInterferenceApproximation\n"
-		"\n"
-		"EInterferenceApproximation ILayout::getApproximation() const\n"
-		"\n"
-		"Gets the used approximation for particles and interference functions. \n"
-		"\n"
-		""},
-	 { (char *)"ILayout_setApproximation", _wrap_ILayout_setApproximation, METH_VARARGS, (char *)"\n"
-		"ILayout_setApproximation(ILayout self, ILayout::EInterferenceApproximation approximation)\n"
-		"\n"
-		"void ILayout::setApproximation(EInterferenceApproximation approximation)\n"
-		"\n"
-		"Sets the used approximation for particles and interference functions. \n"
-		"\n"
-		""},
 	 { (char *)"ILayout_swigregister", ILayout_swigregister, METH_VARARGS, NULL},
 	 { (char *)"delete_IAbstractParticle", _wrap_delete_IAbstractParticle, METH_VARARGS, (char *)"\n"
 		"delete_IAbstractParticle(IAbstractParticle self)\n"
@@ -144362,8 +144294,6 @@ SWIG_init(void) {
   SWIG_Python_SetConstant(d, "IHistogram_AVERAGE",SWIG_From_int(static_cast< int >(IHistogram::AVERAGE)));
   SWIG_Python_SetConstant(d, "IHistogram_STANDARD_ERROR",SWIG_From_int(static_cast< int >(IHistogram::STANDARD_ERROR)));
   SWIG_Python_SetConstant(d, "IHistogram_NENTRIES",SWIG_From_int(static_cast< int >(IHistogram::NENTRIES)));
-  SWIG_Python_SetConstant(d, "ILayout_DA",SWIG_From_int(static_cast< int >(ILayout::DA)));
-  SWIG_Python_SetConstant(d, "ILayout_SSCA",SWIG_From_int(static_cast< int >(ILayout::SSCA)));
   SWIG_Python_SetConstant(d, "MillerIndexOrientation_QX",SWIG_From_int(static_cast< int >(MillerIndexOrientation::QX)));
   SWIG_Python_SetConstant(d, "MillerIndexOrientation_QY",SWIG_From_int(static_cast< int >(MillerIndexOrientation::QY)));
   SWIG_Python_SetConstant(d, "MillerIndexOrientation_QZ",SWIG_From_int(static_cast< int >(MillerIndexOrientation::QZ)));