diff --git a/Core/Multilayer/MultiLayer.cpp b/Core/Multilayer/MultiLayer.cpp
index 752f60d10e2df2a6a20344c6780adff1fa9fad31..7f463280d16a1ad6c946ea183a471edb4df4434f 100644
--- a/Core/Multilayer/MultiLayer.cpp
+++ b/Core/Multilayer/MultiLayer.cpp
@@ -33,15 +33,7 @@ MultiLayer::MultiLayer() : m_crossCorrLength(0)
 }
 
 MultiLayer::~MultiLayer()
-{
-    for (size_t i=0; i<m_layers.size(); i++)
-        delete m_layers[i];
-    m_layers.clear();
-
-    for (size_t i=0; i<m_interfaces.size(); i++)
-        delete m_interfaces[i];
-    m_interfaces.clear();
-}
+{}
 
 void MultiLayer::init_parameters()
 {
@@ -50,16 +42,14 @@ void MultiLayer::init_parameters()
         setUnit("nm").setNonnegative();
 }
 
-const ILayout * MultiLayer::layout(size_t i) const
+MultiLayer* MultiLayer::clone() const
 {
-    if (i >= m_layouts.size())
-        return nullptr;
-    return m_layouts[i];
+    return cloneGeneric( [](const Layer* p_layer) { return p_layer->clone(); } );
 }
 
-MultiLayer* MultiLayer::clone() const
+MultiLayer* MultiLayer::cloneInvertB() const
 {
-    return cloneGeneric( [](const Layer* p_layer) { return p_layer->clone(); } );
+    return cloneGeneric( [](const Layer* p_layer) { return p_layer->cloneInvertB(); } );
 }
 
 MultiLayer* MultiLayer::cloneSliced(bool use_average_layers) const
@@ -90,11 +80,6 @@ MultiLayer* MultiLayer::cloneSliced(bool use_average_layers) const
     return P_result.release();
 }
 
-MultiLayer* MultiLayer::cloneInvertB() const
-{
-    return cloneGeneric( [](const Layer* p_layer) { return p_layer->cloneInvertB(); } );
-}
-
 //! Returns pointer to the top interface of the layer.
 //! nInterfaces = nLayers-1, first layer in multilayer doesn't have interface.
 const LayerInterface* MultiLayer::layerTopInterface(size_t i_layer) const
@@ -119,15 +104,7 @@ void MultiLayer::setLayerMaterial(size_t i_layer, HomogeneousMaterial material)
     p_layer->setMaterial(material);
 }
 
-void MultiLayer::addLayout(const ILayout & layout)
-{
-    ILayout *clone = layout.clone();
-    m_layouts.push_back(clone);
-    registerChild(clone);
-}
-
 //! Adds layer with top roughness
-
 void MultiLayer::addLayerWithTopRoughness(const Layer& layer, const LayerRoughness& roughness)
 {
     Layer* p_new_layer = layer.clone();
@@ -184,10 +161,10 @@ double MultiLayer::crossCorrSpectralFun(const kvector_t kvec, size_t j, size_t k
     return corr;
 }
 
-int MultiLayer::indexOfLayer(const Layer* layer) const
+int MultiLayer::indexOfLayer(const Layer* p_layer) const
 {
     for (size_t i=0; i<numberOfLayers(); ++i)
-        if (layer == m_layers[i])
+        if (p_layer == m_layers[i])
             return i;
     return -1;
 }
@@ -202,8 +179,8 @@ bool MultiLayer::containsMagneticMaterial() const
 
 bool MultiLayer::hasRoughness() const
 {
-    for (const LayerInterface* face: m_interfaces)
-        if (face->getRoughness())
+    for (auto p_interface: m_interfaces)
+        if (p_interface->getRoughness())
             return true;
     return false;
 }
@@ -211,14 +188,14 @@ bool MultiLayer::hasRoughness() const
 size_t MultiLayer::totalNofLayouts() const
 {
     size_t ret = 0;
-    for (const Layer* layer: m_layers)
-        ret += layer->numberOfLayouts();
+    for (auto p_layer: m_layers)
+        ret += p_layer->numberOfLayouts();
     return ret;
 }
 
 bool MultiLayer::containsParticles() const
 {
-    for (auto* p_layer: m_layers)
+    for (auto p_layer: m_layers)
         if (p_layer->containsParticles())
             return true;
     return false;
@@ -227,10 +204,10 @@ bool MultiLayer::containsParticles() const
 std::vector<const INode*> MultiLayer::getChildren() const
 {
     std::vector<const INode*> result;
-    for(auto layer : m_layers) {
-        result.push_back(layer);
-        if(const LayerInterface *interface = layerBottomInterface(indexOfLayer(layer)))
-            result.push_back(interface);
+    for(auto p_layer : m_layers) {
+        result.push_back(p_layer);
+        if(const LayerInterface* p_interface = layerBottomInterface(indexOfLayer(p_layer)))
+            result.push_back(p_interface);
     }
     return result;
 }
@@ -248,7 +225,7 @@ void MultiLayer::addAndRegisterInterface(LayerInterface* child)
     registerChild(child);
 }
 
-void MultiLayer::handleLayerThicknessRegistration() const
+void MultiLayer::handleLayerThicknessRegistration()
 {
     size_t n_layers = numberOfLayers();
     for (size_t i=0; i<numberOfLayers(); ++i) {
@@ -292,8 +269,8 @@ MultiLayer* MultiLayer::cloneGeneric(const std::function<Layer*(const Layer*)>&
 
 bool MultiLayer::requiresMatrixRTCoefficients() const
 {
-    for (auto layer: m_layers)
-        if (!(layer->material()->isScalarMaterial()))
+    for (auto p_layer: m_layers)
+        if (!(p_layer->material()->isScalarMaterial()))
             return true;
     return false;
 }
diff --git a/Core/Multilayer/MultiLayer.h b/Core/Multilayer/MultiLayer.h
index bd3efa7856462ff33e081855cfd9b2804504d31b..dd25bd05acd55ed817314d2e39bf9e35ce03e0d1 100644
--- a/Core/Multilayer/MultiLayer.h
+++ b/Core/Multilayer/MultiLayer.h
@@ -85,23 +85,17 @@ public:
     //! Changes a layer's material
     void setLayerMaterial(size_t i_layer, HomogeneousMaterial material);
 
-    //! Adds a layout of particles to the whole multilayer (particles can be in different layers)
-    void addLayout(const ILayout& layout);
-
-    size_t numberOfLayouts() const { return m_layouts.size(); }
-    const ILayout* layout(size_t i) const;
-
     //! Returns a clone of multilayer with clones of all layers and recreated
     //! interfaces between layers
     MultiLayer* clone() const final override;
 
+    //! Returns a clone with inverted magnetic fields
+    MultiLayer* cloneInvertB() const;
+
     //! Returns a clone of multilayer where the original layers may be sliced into several sublayers
     //! for usage with the graded layer approximation
     MultiLayer* cloneSliced(bool use_average_layers) const;
 
-    //! Returns a clone with inverted magnetic fields
-    MultiLayer* cloneInvertB() const;
-
     //! Sets cross correlation length of roughnesses between interfaces
     void setCrossCorrLength(double crossCorrLength);
 
@@ -113,7 +107,7 @@ public:
     double crossCorrSpectralFun(const kvector_t kvec, size_t j, size_t k) const;
 
     //! returns layer index
-    int indexOfLayer(const Layer* layer) const;
+    int indexOfLayer(const Layer* p_layer) const;
 
     //! returns true if contains magnetic materials and matrix calculations are required
     bool requiresMatrixRTCoefficients() const;
@@ -147,7 +141,7 @@ private:
     void addAndRegisterInterface(LayerInterface* child);
 
     //! Handles correct registration of layer thicknesses (not needed for top and bottom layer)
-    void handleLayerThicknessRegistration() const;
+    void handleLayerThicknessRegistration();
 
     //! Checks index of layer w.r.t. vector length
     size_t check_layer_index(size_t i_layer) const;
@@ -162,15 +156,13 @@ private:
     std::vector<ZLimits> calculateLayerZLimits() const;
 
     //! stack of layers [nlayers]
-    std::vector<Layer*> m_layers;
+    SafePointerVector<Layer> m_layers;
     //! coordinate of layer's bottoms [nlayers]
     std::vector<double> m_layers_bottomz;
     //! stack of layer interfaces [nlayers-1]
-    std::vector<LayerInterface*> m_interfaces;
+    SafePointerVector<LayerInterface> m_interfaces;
     //! cross correlation length (in z direction) between different layers
     double m_crossCorrLength;
-    //! independent layouts in this multilayer (not used)
-    SafePointerVector<ILayout> m_layouts;
 };
 
 #endif // MULTILAYER_H
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 9cc3b39cde0e9585e78acdd47e1cebe1b8316812..6c2a20f4662a79f7f6c74d0790244b65671569a6 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -22442,38 +22442,6 @@ class MultiLayer(ISample):
         return _libBornAgainCore.MultiLayer_setLayerMaterial(self, i_layer, material)
 
 
-    def addLayout(self, layout):
-        """
-        addLayout(MultiLayer self, ILayout layout)
-
-        void MultiLayer::addLayout(const ILayout &layout)
-
-        Adds a layout of particles to the whole multilayer (particles can be in different layers) 
-
-        """
-        return _libBornAgainCore.MultiLayer_addLayout(self, layout)
-
-
-    def numberOfLayouts(self):
-        """
-        numberOfLayouts(MultiLayer self) -> size_t
-
-        size_t MultiLayer::numberOfLayouts() const 
-
-        """
-        return _libBornAgainCore.MultiLayer_numberOfLayouts(self)
-
-
-    def layout(self, i):
-        """
-        layout(MultiLayer self, size_t i) -> ILayout
-
-        const ILayout * MultiLayer::layout(size_t i) const 
-
-        """
-        return _libBornAgainCore.MultiLayer_layout(self, i)
-
-
     def clone(self):
         """
         clone(MultiLayer self) -> MultiLayer
@@ -22486,28 +22454,28 @@ class MultiLayer(ISample):
         return _libBornAgainCore.MultiLayer_clone(self)
 
 
-    def cloneSliced(self, use_average_layers):
+    def cloneInvertB(self):
         """
-        cloneSliced(MultiLayer self, bool use_average_layers) -> MultiLayer
+        cloneInvertB(MultiLayer self) -> MultiLayer
 
-        MultiLayer * MultiLayer::cloneSliced(bool use_average_layers) const
+        MultiLayer * MultiLayer::cloneInvertB() const
 
-        Returns a clone of multilayer where the original layers may be sliced into several sublayers for usage with the graded layer approximation 
+        Returns a clone with inverted magnetic fields. 
 
         """
-        return _libBornAgainCore.MultiLayer_cloneSliced(self, use_average_layers)
+        return _libBornAgainCore.MultiLayer_cloneInvertB(self)
 
 
-    def cloneInvertB(self):
+    def cloneSliced(self, use_average_layers):
         """
-        cloneInvertB(MultiLayer self) -> MultiLayer
+        cloneSliced(MultiLayer self, bool use_average_layers) -> MultiLayer
 
-        MultiLayer * MultiLayer::cloneInvertB() const
+        MultiLayer * MultiLayer::cloneSliced(bool use_average_layers) const
 
-        Returns a clone with inverted magnetic fields. 
+        Returns a clone of multilayer where the original layers may be sliced into several sublayers for usage with the graded layer approximation 
 
         """
-        return _libBornAgainCore.MultiLayer_cloneInvertB(self)
+        return _libBornAgainCore.MultiLayer_cloneSliced(self, use_average_layers)
 
 
     def setCrossCorrLength(self, crossCorrLength):
@@ -22548,16 +22516,16 @@ class MultiLayer(ISample):
         return _libBornAgainCore.MultiLayer_crossCorrSpectralFun(self, kvec, j, k)
 
 
-    def indexOfLayer(self, layer):
+    def indexOfLayer(self, p_layer):
         """
-        indexOfLayer(MultiLayer self, Layer layer) -> int
+        indexOfLayer(MultiLayer self, Layer p_layer) -> int
 
         int MultiLayer::indexOfLayer(const Layer *layer) const
 
         returns layer index 
 
         """
-        return _libBornAgainCore.MultiLayer_indexOfLayer(self, layer)
+        return _libBornAgainCore.MultiLayer_indexOfLayer(self, p_layer)
 
 
     def requiresMatrixRTCoefficients(self):
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 78ba29943049c5da3a0e44c30a452cdd696da4e7..ca02ea8bb8e7001cfe31bd0fa01fc2208c26a9b5 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -95970,93 +95970,29 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_MultiLayer_addLayout(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  MultiLayer *arg1 = (MultiLayer *) 0 ;
-  ILayout *arg2 = 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_addLayout",&obj0,&obj1)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_addLayout" "', argument " "1"" of type '" "MultiLayer *""'"); 
-  }
-  arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_ILayout,  0  | 0);
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "MultiLayer_addLayout" "', argument " "2"" of type '" "ILayout const &""'"); 
-  }
-  if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "MultiLayer_addLayout" "', argument " "2"" of type '" "ILayout const &""'"); 
-  }
-  arg2 = reinterpret_cast< ILayout * >(argp2);
-  (arg1)->addLayout((ILayout const &)*arg2);
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_MultiLayer_numberOfLayouts(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  MultiLayer *arg1 = (MultiLayer *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  size_t result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_numberOfLayouts",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_numberOfLayouts" "', argument " "1"" of type '" "MultiLayer const *""'"); 
-  }
-  arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  result = ((MultiLayer const *)arg1)->numberOfLayouts();
-  resultobj = SWIG_From_size_t(static_cast< size_t >(result));
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_MultiLayer_layout(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_MultiLayer_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   MultiLayer *arg1 = (MultiLayer *) 0 ;
-  size_t arg2 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  size_t val2 ;
-  int ecode2 = 0 ;
   PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  ILayout *result = 0 ;
+  MultiLayer *result = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"OO:MultiLayer_layout",&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_clone",&obj0)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_layout" "', argument " "1"" of type '" "MultiLayer const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_clone" "', argument " "1"" of type '" "MultiLayer const *""'"); 
   }
   arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  ecode2 = SWIG_AsVal_size_t(obj1, &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "MultiLayer_layout" "', argument " "2"" of type '" "size_t""'");
-  } 
-  arg2 = static_cast< size_t >(val2);
-  result = (ILayout *)((MultiLayer const *)arg1)->layout(arg2);
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_ILayout, 0 |  0 );
+  result = (MultiLayer *)((MultiLayer const *)arg1)->clone();
+  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 |  0 );
   return resultobj;
 fail:
   return NULL;
 }
 
 
-SWIGINTERN PyObject *_wrap_MultiLayer_clone(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_MultiLayer_cloneInvertB(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   MultiLayer *arg1 = (MultiLayer *) 0 ;
   void *argp1 = 0 ;
@@ -96064,13 +96000,13 @@ SWIGINTERN PyObject *_wrap_MultiLayer_clone(PyObject *SWIGUNUSEDPARM(self), PyOb
   PyObject * obj0 = 0 ;
   MultiLayer *result = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_clone",&obj0)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_cloneInvertB",&obj0)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_clone" "', argument " "1"" of type '" "MultiLayer const *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_cloneInvertB" "', argument " "1"" of type '" "MultiLayer const *""'"); 
   }
   arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  result = (MultiLayer *)((MultiLayer const *)arg1)->clone();
+  result = (MultiLayer *)((MultiLayer const *)arg1)->cloneInvertB();
   resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 |  0 );
   return resultobj;
 fail:
@@ -96109,28 +96045,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_MultiLayer_cloneInvertB(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  MultiLayer *arg1 = (MultiLayer *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  PyObject * obj0 = 0 ;
-  MultiLayer *result = 0 ;
-  
-  if (!PyArg_ParseTuple(args,(char *)"O:MultiLayer_cloneInvertB",&obj0)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_MultiLayer, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "MultiLayer_cloneInvertB" "', argument " "1"" of type '" "MultiLayer const *""'"); 
-  }
-  arg1 = reinterpret_cast< MultiLayer * >(argp1);
-  result = (MultiLayer *)((MultiLayer const *)arg1)->cloneInvertB();
-  resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_MultiLayer, 0 |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_MultiLayer_setCrossCorrLength(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   MultiLayer *arg1 = (MultiLayer *) 0 ;
@@ -120859,26 +120773,6 @@ static PyMethodDef SwigMethods[] = {
 		"Changes a layer's material. \n"
 		"\n"
 		""},
-	 { (char *)"MultiLayer_addLayout", _wrap_MultiLayer_addLayout, METH_VARARGS, (char *)"\n"
-		"MultiLayer_addLayout(MultiLayer self, ILayout layout)\n"
-		"\n"
-		"void MultiLayer::addLayout(const ILayout &layout)\n"
-		"\n"
-		"Adds a layout of particles to the whole multilayer (particles can be in different layers) \n"
-		"\n"
-		""},
-	 { (char *)"MultiLayer_numberOfLayouts", _wrap_MultiLayer_numberOfLayouts, METH_VARARGS, (char *)"\n"
-		"MultiLayer_numberOfLayouts(MultiLayer self) -> size_t\n"
-		"\n"
-		"size_t MultiLayer::numberOfLayouts() const \n"
-		"\n"
-		""},
-	 { (char *)"MultiLayer_layout", _wrap_MultiLayer_layout, METH_VARARGS, (char *)"\n"
-		"MultiLayer_layout(MultiLayer self, size_t i) -> ILayout\n"
-		"\n"
-		"const ILayout * MultiLayer::layout(size_t i) const \n"
-		"\n"
-		""},
 	 { (char *)"MultiLayer_clone", _wrap_MultiLayer_clone, METH_VARARGS, (char *)"\n"
 		"MultiLayer_clone(MultiLayer self) -> MultiLayer\n"
 		"\n"
@@ -120887,14 +120781,6 @@ static PyMethodDef SwigMethods[] = {
 		"Returns a clone of multilayer with clones of all layers and recreated interfaces between layers \n"
 		"\n"
 		""},
-	 { (char *)"MultiLayer_cloneSliced", _wrap_MultiLayer_cloneSliced, METH_VARARGS, (char *)"\n"
-		"MultiLayer_cloneSliced(MultiLayer self, bool use_average_layers) -> MultiLayer\n"
-		"\n"
-		"MultiLayer * MultiLayer::cloneSliced(bool use_average_layers) const\n"
-		"\n"
-		"Returns a clone of multilayer where the original layers may be sliced into several sublayers for usage with the graded layer approximation \n"
-		"\n"
-		""},
 	 { (char *)"MultiLayer_cloneInvertB", _wrap_MultiLayer_cloneInvertB, METH_VARARGS, (char *)"\n"
 		"MultiLayer_cloneInvertB(MultiLayer self) -> MultiLayer\n"
 		"\n"
@@ -120903,6 +120789,14 @@ static PyMethodDef SwigMethods[] = {
 		"Returns a clone with inverted magnetic fields. \n"
 		"\n"
 		""},
+	 { (char *)"MultiLayer_cloneSliced", _wrap_MultiLayer_cloneSliced, METH_VARARGS, (char *)"\n"
+		"MultiLayer_cloneSliced(MultiLayer self, bool use_average_layers) -> MultiLayer\n"
+		"\n"
+		"MultiLayer * MultiLayer::cloneSliced(bool use_average_layers) const\n"
+		"\n"
+		"Returns a clone of multilayer where the original layers may be sliced into several sublayers for usage with the graded layer approximation \n"
+		"\n"
+		""},
 	 { (char *)"MultiLayer_setCrossCorrLength", _wrap_MultiLayer_setCrossCorrLength, METH_VARARGS, (char *)"\n"
 		"MultiLayer_setCrossCorrLength(MultiLayer self, double crossCorrLength)\n"
 		"\n"
@@ -120930,7 +120824,7 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"MultiLayer_indexOfLayer", _wrap_MultiLayer_indexOfLayer, METH_VARARGS, (char *)"\n"
-		"MultiLayer_indexOfLayer(MultiLayer self, Layer layer) -> int\n"
+		"MultiLayer_indexOfLayer(MultiLayer self, Layer p_layer) -> int\n"
 		"\n"
 		"int MultiLayer::indexOfLayer(const Layer *layer) const\n"
 		"\n"