diff --git a/Core/Multilayer/Layer.cpp b/Core/Multilayer/Layer.cpp
index e261bec5c44612544819b498b32a37a2a8403cad..ecc88c1fe99df59f4d0f8cd324e634e9e3143580 100644
--- a/Core/Multilayer/Layer.cpp
+++ b/Core/Multilayer/Layer.cpp
@@ -99,48 +99,6 @@ void Layer::registerThickness(bool make_registered)
     }
 }
 
-SafePointerVector<Layer> Layer::slice(ZLimits limits, Layer::ELayerType layer_type) const
-{
-    SafePointerVector<Layer> result;
-    // no slicing when there are no limits or #slices is zero
-    if (!limits.isFinite() || m_n_slices==0 || layer_type==ONLYLAYER) {
-        result.push_back(clone());
-        return result;
-    }
-    double bottom = limits.lowerLimit().m_value;
-    double top = limits.upperLimit().m_value;
-    double slice_thickness = (top-bottom)/m_n_slices;
-    // empty top layer
-    double empty_top_thickness = (layer_type==TOPLAYER) ? 0 : -top;
-    if (empty_top_thickness>0 || layer_type==TOPLAYER)
-    {
-        result.push_back(new Layer(m_material, empty_top_thickness));
-    }
-    // slices containing particles
-    double offset = -top;
-    for (size_t i=0; i<m_n_slices; ++i)
-    {
-        Layer* p_layer = shallowClone();
-        if (i==0) {
-            for (auto p_layout : layouts())
-            {
-                std::unique_ptr<ILayout> P_layout_offset { p_layout->cloneWithOffset(offset) };
-                p_layer->addLayout(*P_layout_offset);
-            }
-        }
-        p_layer->setThickness(slice_thickness);
-        result.push_back(p_layer);
-    }
-    // empty bottom layer
-    double layer_thickness = (layer_type==INTERMEDIATELAYER) ? thickness() : 0;
-    double empty_bottom_thickness = (layer_type==BOTTOMLAYER) ? 0 : bottom + layer_thickness;
-    if (empty_bottom_thickness>0 || layer_type==BOTTOMLAYER)
-    {
-        result.push_back(new Layer(m_material, empty_bottom_thickness));
-    }
-    return result;
-}
-
 complex_t Layer::scalarReducedPotential(kvector_t k, double n_ref) const
 {
     complex_t n = m_material.refractiveIndex(2.0 * M_PI / k.mag());
diff --git a/Core/Multilayer/Layer.h b/Core/Multilayer/Layer.h
index fe7ce53ae47be3e1f6545cd438c3e63f40182024..cfeaff0c7da81a06137a5fa6f9ca8bfbea80be83 100644
--- a/Core/Multilayer/Layer.h
+++ b/Core/Multilayer/Layer.h
@@ -61,8 +61,6 @@ public:
     void setNumberOfSlices(unsigned int n_slices) { m_n_slices = n_slices; }
     unsigned int numberOfSlices() const { return m_n_slices; }
 
-    SafePointerVector<Layer> slice(ZLimits limits, ELayerType layer_type) const;
-
     //! Return the potential term that is used in the one-dimensional Fresnel calculations
     complex_t scalarReducedPotential(kvector_t k, double n_ref) const;
 
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index 6cf09c254f8d24c5bf5f8366dc4a36bb034d2729..cf528724ad806aec0f13f83add5238176e3644cf 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -24510,16 +24510,6 @@ class Layer(ISample):
         return _libBornAgainCore.Layer_numberOfSlices(self)
 
 
-    def slice(self, limits, layer_type):
-        """
-        slice(Layer self, ZLimits limits, Layer::ELayerType layer_type) -> SafePointerVector< Layer >
-
-        SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const
-
-        """
-        return _libBornAgainCore.Layer_slice(self, limits, layer_type)
-
-
     def scalarReducedPotential(self, k, n_ref):
         """
         scalarReducedPotential(Layer self, kvector_t k, double n_ref) -> complex_t
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 9cfe2292d51bd5cc519bb304b85c95a365669f1c..709e3c1a2ff55257e2295342f26df0879300b8eb 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -3688,112 +3688,111 @@ namespace Swig {
 #define SWIGTYPE_p_RotationY swig_types[234]
 #define SWIGTYPE_p_RotationZ swig_types[235]
 #define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[236]
-#define SWIGTYPE_p_SafePointerVectorT_Layer_t swig_types[237]
-#define SWIGTYPE_p_SampleBuilderFactory swig_types[238]
-#define SWIGTYPE_p_ScanResolution swig_types[239]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[240]
-#define SWIGTYPE_p_Simulation swig_types[241]
-#define SWIGTYPE_p_Simulation2D swig_types[242]
-#define SWIGTYPE_p_SimulationFactory swig_types[243]
-#define SWIGTYPE_p_SimulationOptions swig_types[244]
-#define SWIGTYPE_p_SimulationResult swig_types[245]
-#define SWIGTYPE_p_SlicedParticle swig_types[246]
-#define SWIGTYPE_p_SlicingEffects swig_types[247]
-#define SWIGTYPE_p_SpecularDetector1D swig_types[248]
-#define SWIGTYPE_p_SpecularSimulation swig_types[249]
-#define SWIGTYPE_p_SphericalDetector swig_types[250]
-#define SWIGTYPE_p_SphericalPixel swig_types[251]
-#define SWIGTYPE_p_SquareLattice swig_types[252]
-#define SWIGTYPE_p_ThreadInfo swig_types[253]
-#define SWIGTYPE_p_Transform3D swig_types[254]
-#define SWIGTYPE_p_VariableBinAxis swig_types[255]
-#define SWIGTYPE_p_VarianceConstantFunction swig_types[256]
-#define SWIGTYPE_p_VarianceSimFunction swig_types[257]
-#define SWIGTYPE_p_VerticalLine swig_types[258]
-#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[259]
-#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[260]
-#define SWIGTYPE_p_WavevectorInfo swig_types[261]
-#define SWIGTYPE_p_ZLimits swig_types[262]
-#define SWIGTYPE_p_allocator_type swig_types[263]
-#define SWIGTYPE_p_bool swig_types[264]
-#define SWIGTYPE_p_char swig_types[265]
-#define SWIGTYPE_p_const_iterator swig_types[266]
-#define SWIGTYPE_p_const_reference swig_types[267]
-#define SWIGTYPE_p_corr_matrix_t swig_types[268]
-#define SWIGTYPE_p_difference_type swig_types[269]
-#define SWIGTYPE_p_double swig_types[270]
-#define SWIGTYPE_p_int swig_types[271]
-#define SWIGTYPE_p_iterator swig_types[272]
-#define SWIGTYPE_p_key_type swig_types[273]
-#define SWIGTYPE_p_long_long swig_types[274]
-#define SWIGTYPE_p_mapped_type swig_types[275]
-#define SWIGTYPE_p_observer_t swig_types[276]
-#define SWIGTYPE_p_p_PyObject swig_types[277]
-#define SWIGTYPE_p_parameters_t swig_types[278]
-#define SWIGTYPE_p_reference swig_types[279]
-#define SWIGTYPE_p_short swig_types[280]
-#define SWIGTYPE_p_signed_char swig_types[281]
-#define SWIGTYPE_p_size_type swig_types[282]
-#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[283]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[284]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[285]
-#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[286]
-#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[287]
-#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[288]
-#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[289]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[290]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[291]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[292]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[293]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[294]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[295]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[296]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[297]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[298]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[299]
-#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[300]
-#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[301]
-#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[302]
-#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[303]
-#define SWIGTYPE_p_std__invalid_argument swig_types[304]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[305]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[306]
-#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[307]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[308]
-#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[309]
-#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[310]
-#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[311]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[312]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[313]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[314]
-#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[315]
-#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[316]
-#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[317]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[318]
-#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[319]
-#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[320]
-#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[321]
-#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[322]
-#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[323]
-#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[324]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[325]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[326]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[327]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[328]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[329]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[330]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[331]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[332]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[333]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[334]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[335]
-#define SWIGTYPE_p_unsigned_char swig_types[336]
-#define SWIGTYPE_p_unsigned_int swig_types[337]
-#define SWIGTYPE_p_unsigned_long_long swig_types[338]
-#define SWIGTYPE_p_unsigned_short swig_types[339]
-#define SWIGTYPE_p_value_type swig_types[340]
-static swig_type_info *swig_types[342];
-static swig_module_info swig_module = {swig_types, 341, 0, 0, 0, 0};
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[237]
+#define SWIGTYPE_p_ScanResolution swig_types[238]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[239]
+#define SWIGTYPE_p_Simulation swig_types[240]
+#define SWIGTYPE_p_Simulation2D swig_types[241]
+#define SWIGTYPE_p_SimulationFactory swig_types[242]
+#define SWIGTYPE_p_SimulationOptions swig_types[243]
+#define SWIGTYPE_p_SimulationResult swig_types[244]
+#define SWIGTYPE_p_SlicedParticle swig_types[245]
+#define SWIGTYPE_p_SlicingEffects swig_types[246]
+#define SWIGTYPE_p_SpecularDetector1D swig_types[247]
+#define SWIGTYPE_p_SpecularSimulation swig_types[248]
+#define SWIGTYPE_p_SphericalDetector swig_types[249]
+#define SWIGTYPE_p_SphericalPixel swig_types[250]
+#define SWIGTYPE_p_SquareLattice swig_types[251]
+#define SWIGTYPE_p_ThreadInfo swig_types[252]
+#define SWIGTYPE_p_Transform3D swig_types[253]
+#define SWIGTYPE_p_VariableBinAxis swig_types[254]
+#define SWIGTYPE_p_VarianceConstantFunction swig_types[255]
+#define SWIGTYPE_p_VarianceSimFunction swig_types[256]
+#define SWIGTYPE_p_VerticalLine swig_types[257]
+#define SWIGTYPE_p_VonMisesFisherGaussPeakShape swig_types[258]
+#define SWIGTYPE_p_VonMisesGaussPeakShape swig_types[259]
+#define SWIGTYPE_p_WavevectorInfo swig_types[260]
+#define SWIGTYPE_p_ZLimits swig_types[261]
+#define SWIGTYPE_p_allocator_type swig_types[262]
+#define SWIGTYPE_p_bool swig_types[263]
+#define SWIGTYPE_p_char swig_types[264]
+#define SWIGTYPE_p_const_iterator swig_types[265]
+#define SWIGTYPE_p_const_reference swig_types[266]
+#define SWIGTYPE_p_corr_matrix_t swig_types[267]
+#define SWIGTYPE_p_difference_type swig_types[268]
+#define SWIGTYPE_p_double swig_types[269]
+#define SWIGTYPE_p_int swig_types[270]
+#define SWIGTYPE_p_iterator swig_types[271]
+#define SWIGTYPE_p_key_type swig_types[272]
+#define SWIGTYPE_p_long_long swig_types[273]
+#define SWIGTYPE_p_mapped_type swig_types[274]
+#define SWIGTYPE_p_observer_t swig_types[275]
+#define SWIGTYPE_p_p_PyObject swig_types[276]
+#define SWIGTYPE_p_parameters_t swig_types[277]
+#define SWIGTYPE_p_reference swig_types[278]
+#define SWIGTYPE_p_short swig_types[279]
+#define SWIGTYPE_p_signed_char swig_types[280]
+#define SWIGTYPE_p_size_type swig_types[281]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[282]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[283]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[284]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[285]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[286]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[287]
+#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[288]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[289]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[290]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[291]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[292]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[293]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[294]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[295]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[296]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[297]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[298]
+#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[299]
+#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[300]
+#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[301]
+#define SWIGTYPE_p_std__functionT_void_fSimulationAreaIterator_const_RF_t swig_types[302]
+#define SWIGTYPE_p_std__invalid_argument swig_types[303]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[304]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[305]
+#define SWIGTYPE_p_std__mapT_std__string_std__string_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_std__string_t_t_t__const_iterator swig_types[306]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[307]
+#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[308]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[309]
+#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[310]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[311]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[312]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[313]
+#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[314]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[315]
+#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[316]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[317]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[318]
+#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[319]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[320]
+#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[321]
+#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[322]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[323]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[324]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[325]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[326]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[327]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[328]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[329]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[330]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[331]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[332]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[333]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[334]
+#define SWIGTYPE_p_unsigned_char swig_types[335]
+#define SWIGTYPE_p_unsigned_int swig_types[336]
+#define SWIGTYPE_p_unsigned_long_long swig_types[337]
+#define SWIGTYPE_p_unsigned_short swig_types[338]
+#define SWIGTYPE_p_value_type swig_types[339]
+static swig_type_info *swig_types[341];
+static swig_module_info swig_module = {swig_types, 340, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -104514,54 +104513,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_Layer_slice(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  Layer *arg1 = (Layer *) 0 ;
-  ZLimits arg2 ;
-  Layer::ELayerType arg3 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 ;
-  int res2 = 0 ;
-  int val3 ;
-  int ecode3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  SwigValueWrapper< SafePointerVector< Layer > > result;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:Layer_slice",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_Layer, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Layer_slice" "', argument " "1"" of type '" "Layer const *""'"); 
-  }
-  arg1 = reinterpret_cast< Layer * >(argp1);
-  {
-    res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_ZLimits,  0  | 0);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "Layer_slice" "', argument " "2"" of type '" "ZLimits""'"); 
-    }  
-    if (!argp2) {
-      SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "Layer_slice" "', argument " "2"" of type '" "ZLimits""'");
-    } else {
-      ZLimits * temp = reinterpret_cast< ZLimits * >(argp2);
-      arg2 = *temp;
-      if (SWIG_IsNewObj(res2)) delete temp;
-    }
-  }
-  ecode3 = SWIG_AsVal_int(obj2, &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "Layer_slice" "', argument " "3"" of type '" "Layer::ELayerType""'");
-  } 
-  arg3 = static_cast< Layer::ELayerType >(val3);
-  result = ((Layer const *)arg1)->slice(arg2,arg3);
-  resultobj = SWIG_NewPointerObj((new SafePointerVector< Layer >(static_cast< const SafePointerVector< Layer >& >(result))), SWIGTYPE_p_SafePointerVectorT_Layer_t, SWIG_POINTER_OWN |  0 );
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_Layer_scalarReducedPotential(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   Layer *arg1 = (Layer *) 0 ;
@@ -136754,12 +136705,6 @@ static PyMethodDef SwigMethods[] = {
 		"unsigned int Layer::numberOfSlices() const\n"
 		"\n"
 		""},
-	 { (char *)"Layer_slice", _wrap_Layer_slice, METH_VARARGS, (char *)"\n"
-		"Layer_slice(Layer self, ZLimits limits, Layer::ELayerType layer_type) -> SafePointerVector< Layer >\n"
-		"\n"
-		"SafePointerVector< Layer > Layer::slice(ZLimits limits, ELayerType layer_type) const\n"
-		"\n"
-		""},
 	 { (char *)"Layer_scalarReducedPotential", _wrap_Layer_scalarReducedPotential, METH_VARARGS, (char *)"\n"
 		"Layer_scalarReducedPotential(Layer self, kvector_t k, double n_ref) -> complex_t\n"
 		"\n"
@@ -142439,7 +142384,6 @@ static swig_type_info _swigt__p_RotationX = {"_p_RotationX", "RotationX *", 0, 0
 static swig_type_info _swigt__p_RotationY = {"_p_RotationY", "RotationY *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_RotationZ = {"_p_RotationZ", "RotationZ *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SafePointerVectorT_IParticle_t = {"_p_SafePointerVectorT_IParticle_t", "SafePointerVector< IParticle > *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_SafePointerVectorT_Layer_t = {"_p_SafePointerVectorT_Layer_t", "SafePointerVector< Layer > *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SampleBuilderFactory = {"_p_SampleBuilderFactory", "SampleBuilderFactory *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ScanResolution = {"_p_ScanResolution", "ScanResolution *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SimpleSelectionRule = {"_p_SimpleSelectionRule", "SimpleSelectionRule *", 0, 0, (void*)0, 0};
@@ -142782,7 +142726,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_RotationY,
   &_swigt__p_RotationZ,
   &_swigt__p_SafePointerVectorT_IParticle_t,
-  &_swigt__p_SafePointerVectorT_Layer_t,
   &_swigt__p_SampleBuilderFactory,
   &_swigt__p_ScanResolution,
   &_swigt__p_SimpleSelectionRule,
@@ -143125,7 +143068,6 @@ static swig_cast_info _swigc__p_RotationX[] = {  {&_swigt__p_RotationX, 0, 0, 0}
 static swig_cast_info _swigc__p_RotationY[] = {  {&_swigt__p_RotationY, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_RotationZ[] = {  {&_swigt__p_RotationZ, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SafePointerVectorT_IParticle_t[] = {  {&_swigt__p_SafePointerVectorT_IParticle_t, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_SafePointerVectorT_Layer_t[] = {  {&_swigt__p_SafePointerVectorT_Layer_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SampleBuilderFactory[] = {  {&_swigt__p_SampleBuilderFactory, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ScanResolution[] = {  {&_swigt__p_ScanResolution, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SimpleSelectionRule[] = {  {&_swigt__p_SimpleSelectionRule, 0, 0, 0},{0, 0, 0, 0}};
@@ -143468,7 +143410,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_RotationY,
   _swigc__p_RotationZ,
   _swigc__p_SafePointerVectorT_IParticle_t,
-  _swigc__p_SafePointerVectorT_Layer_t,
   _swigc__p_SampleBuilderFactory,
   _swigc__p_ScanResolution,
   _swigc__p_SimpleSelectionRule,