diff --git a/auto/Wrap/doxygen_core.i b/auto/Wrap/doxygen_core.i
index 102ae0867791879b1e86e93c374bad1afb29028b..907a8ef58c730c171cc05d0c0adf1f53a3064a55 100644
--- a/auto/Wrap/doxygen_core.i
+++ b/auto/Wrap/doxygen_core.i
@@ -642,21 +642,21 @@ C++ includes: BoxCompositionBuilder.h
 ";
 
 
-// File: structIntegratorReal_1_1CallBackHolder.xml
-%feature("docstring") IntegratorReal::CallBackHolder "
+// File: structIntegratorMCMiser_1_1CallBackHolder.xml
+%feature("docstring") IntegratorMCMiser::CallBackHolder "
 
 structure holding the object and possible extra parameters
 
-C++ includes: IntegratorReal.h
+C++ includes: IntegratorMCMiser.h
 ";
 
 
-// File: structIntegratorMCMiser_1_1CallBackHolder.xml
-%feature("docstring") IntegratorMCMiser::CallBackHolder "
+// File: structIntegratorReal_1_1CallBackHolder.xml
+%feature("docstring") IntegratorReal::CallBackHolder "
 
 structure holding the object and possible extra parameters
 
-C++ includes: IntegratorMCMiser.h
+C++ includes: IntegratorReal.h
 ";
 
 
@@ -3657,7 +3657,7 @@ Returns the z-coordinate of the lowest point in this shape after a given rotatio
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs) override
+%feature("docstring")  FormFactorDWBA::setSpecularInfo "void FormFactorDWBA::setSpecularInfo(std::unique_ptr< const ILayerRTCoefficients > p_in_coeffs, std::unique_ptr< const ILayerRTCoefficients > p_out_coeffs) override
 
 Sets reflection/transmission info. 
 ";
@@ -3722,7 +3722,7 @@ Returns the z-coordinate of the lowest point in this shape after a given rotatio
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(const ILayerRTCoefficients *p_in_coeffs, const ILayerRTCoefficients *p_out_coeffs) override
+%feature("docstring")  FormFactorDWBAPol::setSpecularInfo "void FormFactorDWBAPol::setSpecularInfo(std::unique_ptr< const ILayerRTCoefficients > p_in_coeffs, std::unique_ptr< const ILayerRTCoefficients > p_out_coeffs) override
 
 Sets reflection/transmission info. 
 ";
@@ -6969,7 +6969,7 @@ Returns the z-coordinate of the lowest point in this shape after a given rotatio
 Returns the z-coordinate of the lowest point in this shape after a given rotation. 
 ";
 
-%feature("docstring")  IFormFactor::setSpecularInfo "virtual void IFormFactor::setSpecularInfo(const ILayerRTCoefficients *, const ILayerRTCoefficients *)
+%feature("docstring")  IFormFactor::setSpecularInfo "virtual void IFormFactor::setSpecularInfo(std::unique_ptr< const ILayerRTCoefficients >, std::unique_ptr< const ILayerRTCoefficients >)
 
 Sets reflection/transmission info. 
 ";
@@ -7093,12 +7093,12 @@ C++ includes: IFresnelMap.h
 %feature("docstring")  IFresnelMap::~IFresnelMap "IFresnelMap::~IFresnelMap()
 ";
 
-%feature("docstring")  IFresnelMap::getOutCoefficients "virtual const ILayerRTCoefficients* IFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const =0
+%feature("docstring")  IFresnelMap::getOutCoefficients "virtual std::unique_ptr<const ILayerRTCoefficients> IFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const =0
 
 Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
 ";
 
-%feature("docstring")  IFresnelMap::getInCoefficients "virtual const ILayerRTCoefficients* IFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const =0
+%feature("docstring")  IFresnelMap::getInCoefficients "std::unique_ptr<const ILayerRTCoefficients> IFresnelMap::getInCoefficients(const T &sim_element, size_t layer_index) const
 
 Retrieves the amplitude coefficients for an incoming wavevector. 
 ";
@@ -10483,16 +10483,11 @@ C++ includes: MatrixFresnelMap.h
 %feature("docstring")  MatrixFresnelMap::~MatrixFresnelMap "MatrixFresnelMap::~MatrixFresnelMap()
 ";
 
-%feature("docstring")  MatrixFresnelMap::getOutCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
+%feature("docstring")  MatrixFresnelMap::getOutCoefficients "std::unique_ptr< const ILayerRTCoefficients > MatrixFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
 
 Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
 ";
 
-%feature("docstring")  MatrixFresnelMap::getInCoefficients "const ILayerRTCoefficients * MatrixFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
-
-Retrieves the amplitude coefficients for an incoming wavevector. 
-";
-
 %feature("docstring")  MatrixFresnelMap::setMultilayer "void MatrixFresnelMap::setMultilayer(const MultiLayer &multilayer) final override
 
 Sets the multilayer to be used for the Fresnel calculations. 
@@ -13385,16 +13380,11 @@ C++ includes: ScalarFresnelMap.h
 %feature("docstring")  ScalarFresnelMap::~ScalarFresnelMap "ScalarFresnelMap::~ScalarFresnelMap() final
 ";
 
-%feature("docstring")  ScalarFresnelMap::getOutCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
+%feature("docstring")  ScalarFresnelMap::getOutCoefficients "std::unique_ptr< const ILayerRTCoefficients > ScalarFresnelMap::getOutCoefficients(const SimulationElement &sim_element, size_t layer_index) const override
 
 Retrieves the amplitude coefficients for a (time-reversed) outgoing wavevector. 
 ";
 
-%feature("docstring")  ScalarFresnelMap::getInCoefficients "const ILayerRTCoefficients * ScalarFresnelMap::getInCoefficients(const SimulationElement &sim_element, size_t layer_index) const final override
-
-Retrieves the amplitude coefficients for an incoming wavevector. 
-";
-
 %feature("docstring")  ScalarFresnelMap::fillSpecularData "void ScalarFresnelMap::fillSpecularData(SpecularSimulationElement &sim_element) const override
 
 Fills simulation element specular data. 
@@ -15163,10 +15153,10 @@ C++ includes: WavevectorInfo.h
 ";
 
 
-// File: classFourierTransform_1_1Workspace.xml
+// File: classConvolve_1_1Workspace.xml
 
 
-// File: classConvolve_1_1Workspace.xml
+// File: classFourierTransform_1_1Workspace.xml
 
 
 // File: classZLimits.xml
@@ -16923,6 +16913,8 @@ global helper function for comparison of axes
 
 
 // File: IUnitConverter_8h.xml
+%feature("docstring")  SubstituteDefaultUnits "AxesUnits SubstituteDefaultUnits(const IUnitConverter &converter, AxesUnits units)
+";
 
 
 // File: LLData_8cpp.xml
diff --git a/auto/Wrap/libBornAgainCore.py b/auto/Wrap/libBornAgainCore.py
index a4f939d960a6aaffab2913eb1cb947986cff5526..415ab4ebced9af26c10549c6f2fe5df1e15c5e80 100644
--- a/auto/Wrap/libBornAgainCore.py
+++ b/auto/Wrap/libBornAgainCore.py
@@ -1,15 +1,22 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 3.0.8
+# Version 3.0.12
 #
 # Do not make changes to this file unless you know what you are doing--modify
 # the SWIG interface file instead.
 
-
-
-
-
-from sys import version_info
-if version_info >= (2, 6, 0):
+from sys import version_info as _swig_python_version_info
+if _swig_python_version_info >= (2, 7, 0):
+    def swig_import_helper():
+        import importlib
+        pkg = __name__.rpartition('.')[0]
+        mname = '.'.join((pkg, '_libBornAgainCore')).lstrip('.')
+        try:
+            return importlib.import_module(mname)
+        except ImportError:
+            return importlib.import_module('_libBornAgainCore')
+    _libBornAgainCore = swig_import_helper()
+    del swig_import_helper
+elif _swig_python_version_info >= (2, 6, 0):
     def swig_import_helper():
         from os.path import dirname
         import imp
@@ -19,22 +26,27 @@ if version_info >= (2, 6, 0):
         except ImportError:
             import _libBornAgainCore
             return _libBornAgainCore
-        if fp is not None:
-            try:
-                _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
-            finally:
+        try:
+            _mod = imp.load_module('_libBornAgainCore', fp, pathname, description)
+        finally:
+            if fp is not None:
                 fp.close()
-            return _mod
+        return _mod
     _libBornAgainCore = swig_import_helper()
     del swig_import_helper
 else:
     import _libBornAgainCore
-del version_info
+del _swig_python_version_info
+
 try:
     _swig_property = property
 except NameError:
     pass  # Python < 2.2 doesn't have 'property'.
 
+try:
+    import builtins as __builtin__
+except ImportError:
+    import __builtin__
 
 def _swig_setattr_nondynamic(self, class_type, name, value, static=1):
     if (name == "thisown"):
@@ -59,41 +71,34 @@ def _swig_setattr(self, class_type, name, value):
     return _swig_setattr_nondynamic(self, class_type, name, value, 0)
 
 
-def _swig_getattr_nondynamic(self, class_type, name, static=1):
+def _swig_getattr(self, class_type, name):
     if (name == "thisown"):
         return self.this.own()
     method = class_type.__swig_getmethods__.get(name, None)
     if method:
         return method(self)
-    if (not static):
-        return object.__getattr__(self, name)
-    else:
-        raise AttributeError(name)
-
-def _swig_getattr(self, class_type, name):
-    return _swig_getattr_nondynamic(self, class_type, name, 0)
+    raise AttributeError("'%s' object has no attribute '%s'" % (class_type.__name__, name))
 
 
 def _swig_repr(self):
     try:
         strthis = "proxy of " + self.this.__repr__()
-    except Exception:
+    except __builtin__.Exception:
         strthis = ""
     return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
 
 try:
     _object = object
     _newclass = 1
-except AttributeError:
+except __builtin__.Exception:
     class _object:
         pass
     _newclass = 0
 
-
 try:
     import weakref
     weakref_proxy = weakref.proxy
-except Exception:
+except __builtin__.Exception:
     weakref_proxy = lambda x: x
 
 
@@ -204,8 +209,6 @@ class SwigPyIterator(_object):
 SwigPyIterator_swigregister = _libBornAgainCore.SwigPyIterator_swigregister
 SwigPyIterator_swigregister(SwigPyIterator)
 
-
-_libBornAgainCore.SHARED_PTR_DISOWN_swigconstant(_libBornAgainCore)
 SHARED_PTR_DISOWN = _libBornAgainCore.SHARED_PTR_DISOWN
 
 class ParameterPoolIterator(object):
@@ -386,7 +389,7 @@ class vdouble1d_t(_object):
         this = _libBornAgainCore.new_vdouble1d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -598,7 +601,7 @@ class vdouble2d_t(_object):
         this = _libBornAgainCore.new_vdouble2d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -810,7 +813,7 @@ class vector_integer_t(_object):
         this = _libBornAgainCore.new_vector_integer_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1022,7 +1025,7 @@ class vinteger2d_t(_object):
         this = _libBornAgainCore.new_vinteger2d_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1234,7 +1237,7 @@ class vector_longinteger_t(_object):
         this = _libBornAgainCore.new_vector_longinteger_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1446,7 +1449,7 @@ class vector_complex_t(_object):
         this = _libBornAgainCore.new_vector_complex_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1658,7 +1661,7 @@ class vector_string_t(_object):
         this = _libBornAgainCore.new_vector_string_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -1825,7 +1828,7 @@ class INamed(_object):
         this = _libBornAgainCore.new_INamed(_self, *args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INamed
     __del__ = lambda self: None
@@ -1882,7 +1885,7 @@ class IParameterized(INamed):
         this = _libBornAgainCore.new_IParameterized(_self, *args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IParameterized
     __del__ = lambda self: None
@@ -2012,25 +2015,19 @@ class IParameterized(INamed):
         """XComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_XComponentName(base_name)
 
-    if _newclass:
-        XComponentName = staticmethod(XComponentName)
-    __swig_getmethods__["XComponentName"] = lambda x: XComponentName
+    XComponentName = staticmethod(XComponentName)
 
     def YComponentName(base_name):
         """YComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_YComponentName(base_name)
 
-    if _newclass:
-        YComponentName = staticmethod(YComponentName)
-    __swig_getmethods__["YComponentName"] = lambda x: YComponentName
+    YComponentName = staticmethod(YComponentName)
 
     def ZComponentName(base_name):
         """ZComponentName(std::string const & base_name) -> std::string"""
         return _libBornAgainCore.IParameterized_ZComponentName(base_name)
 
-    if _newclass:
-        ZComponentName = staticmethod(ZComponentName)
-    __swig_getmethods__["ZComponentName"] = lambda x: ZComponentName
+    ZComponentName = staticmethod(ZComponentName)
     def __disown__(self):
         self.this.disown()
         _libBornAgainCore.disown_IParameterized(self)
@@ -2084,7 +2081,7 @@ class INode(IParameterized):
         this = _libBornAgainCore.new_INode(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INode
     __del__ = lambda self: None
@@ -2357,7 +2354,7 @@ class swig_dummy_type_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_inode_vector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2569,7 +2566,7 @@ class swig_dummy_type_const_inode_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_const_inode_vector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2781,7 +2778,7 @@ class swig_dummy_type_axisinfo_vector(_object):
         this = _libBornAgainCore.new_swig_dummy_type_axisinfo_vector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -2863,7 +2860,7 @@ class kvector_t(_object):
         this = _libBornAgainCore.new_kvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def x(self):
@@ -3293,7 +3290,7 @@ class vector_kvector_t(_object):
         this = _libBornAgainCore.new_vector_kvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3375,7 +3372,7 @@ class cvector_t(_object):
         this = _libBornAgainCore.new_cvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def x(self):
@@ -3713,7 +3710,7 @@ class vector_cvector_t(_object):
         this = _libBornAgainCore.new_vector_cvector_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -3826,9 +3823,7 @@ class WavevectorInfo(_object):
         """GetZeroQ() -> WavevectorInfo"""
         return _libBornAgainCore.WavevectorInfo_GetZeroQ()
 
-    if _newclass:
-        GetZeroQ = staticmethod(GetZeroQ)
-    __swig_getmethods__["GetZeroQ"] = lambda x: GetZeroQ
+    GetZeroQ = staticmethod(GetZeroQ)
 
     def __init__(self, *args):
         """
@@ -3841,7 +3836,7 @@ class WavevectorInfo(_object):
         this = _libBornAgainCore.new_WavevectorInfo(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def transformed(self, transform):
@@ -3950,7 +3945,7 @@ class Beam(INode):
         this = _libBornAgainCore.new_Beam(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Beam
     __del__ = lambda self: None
@@ -4137,7 +4132,7 @@ class Bin1D(_object):
         this = _libBornAgainCore.new_Bin1D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_set
     __swig_getmethods__["m_lower"] = _libBornAgainCore.Bin1D_m_lower_get
@@ -4213,7 +4208,7 @@ class Bin1DKVector(_object):
         this = _libBornAgainCore.new_Bin1DKVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def getMidPoint(self):
@@ -4278,7 +4273,7 @@ class Bin1DCVector(_object):
         this = _libBornAgainCore.new_Bin1DCVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def getMidPoint(self):
@@ -4575,7 +4570,7 @@ class VariableBinAxis(IAxis):
         this = _libBornAgainCore.new_VariableBinAxis(name, nbins, bin_boundaries)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_VariableBinAxis
     __del__ = lambda self: None
@@ -4748,7 +4743,7 @@ class ConstKBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_ConstKBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ConstKBinAxis
     __del__ = lambda self: None
@@ -4826,7 +4821,7 @@ class CustomBinAxis(VariableBinAxis):
         this = _libBornAgainCore.new_CustomBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_CustomBinAxis
     __del__ = lambda self: None
@@ -5003,7 +4998,7 @@ class ISample(ICloneable, INode):
         this = _libBornAgainCore.new_ISample(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ISample
     __del__ = lambda self: None
@@ -5232,7 +5227,7 @@ class IObservable(_object):
         this = _libBornAgainCore.new_IObservable(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -5275,7 +5270,7 @@ class IFitObserver(IObserver):
         this = _libBornAgainCore.new_IFitObserver(_self, update_every_nth)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def notify(self, subject):
@@ -5397,7 +5392,7 @@ class FitStrategyDefault(IFitStrategy):
         this = _libBornAgainCore.new_FitStrategyDefault()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -5523,7 +5518,7 @@ class IntensityFunctionLog(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionLog()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 IntensityFunctionLog_swigregister = _libBornAgainCore.IntensityFunctionLog_swigregister
 IntensityFunctionLog_swigregister(IntensityFunctionLog)
@@ -5584,7 +5579,7 @@ class IntensityFunctionSqrt(IIntensityFunction):
         this = _libBornAgainCore.new_IntensityFunctionSqrt()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 IntensityFunctionSqrt_swigregister = _libBornAgainCore.IntensityFunctionSqrt_swigregister
 IntensityFunctionSqrt_swigregister(IntensityFunctionSqrt)
@@ -5688,7 +5683,7 @@ class IntensityNormalizer(IIntensityNormalizer):
         this = _libBornAgainCore.new_IntensityNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityNormalizer
     __del__ = lambda self: None
@@ -5779,7 +5774,7 @@ class IntensityScaleAndShiftNormalizer(IntensityNormalizer):
         this = _libBornAgainCore.new_IntensityScaleAndShiftNormalizer(scale, shift)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityScaleAndShiftNormalizer
     __del__ = lambda self: None
@@ -5902,7 +5897,7 @@ class SquaredFunctionDefault(ISquaredFunction):
         this = _libBornAgainCore.new_SquaredFunctionDefault()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SquaredFunctionDefault
     __del__ = lambda self: None
@@ -6199,7 +6194,7 @@ class ChiSquaredModule(IChiSquaredModule):
         this = _libBornAgainCore.new_ChiSquaredModule(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ChiSquaredModule
     __del__ = lambda self: None
@@ -6276,7 +6271,7 @@ class FitObject(INode):
         this = _libBornAgainCore.new_FitObject(simulation, real_data, weight)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitObject
     __del__ = lambda self: None
@@ -6382,7 +6377,7 @@ class FitOptions(_object):
         this = _libBornAgainCore.new_FitOptions()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitOptions
     __del__ = lambda self: None
@@ -6445,7 +6440,7 @@ class FitParameter(libBornAgainFit.IFitParameter):
         this = _libBornAgainCore.new_FitParameter(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitParameter
     __del__ = lambda self: None
@@ -6586,7 +6581,7 @@ class FitSuite(IObservable):
         this = _libBornAgainCore.new_FitSuite()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuite
     __del__ = lambda self: None
@@ -6998,7 +6993,7 @@ class FitSuiteObjects(INode):
         this = _libBornAgainCore.new_FitSuiteObjects()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FitSuiteObjects
     __del__ = lambda self: None
@@ -7311,11 +7306,7 @@ def Bessel_J1c(*args):
 
     """
     return _libBornAgainCore.Bessel_J1c(*args)
-
-_libBornAgainCore.FORWARD_FFT_swigconstant(_libBornAgainCore)
 FORWARD_FFT = _libBornAgainCore.FORWARD_FFT
-
-_libBornAgainCore.BACKWARD_FFT_swigconstant(_libBornAgainCore)
 BACKWARD_FFT = _libBornAgainCore.BACKWARD_FFT
 
 def FastFourierTransform(*args):
@@ -7409,7 +7400,7 @@ class AdjustMinimizerStrategy(IFitStrategy):
         this = _libBornAgainCore.new_AdjustMinimizerStrategy(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -7482,7 +7473,7 @@ class IMultiLayerBuilder(IParameterized):
         this = _libBornAgainCore.new_IMultiLayerBuilder(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def buildSample(self):
@@ -7542,9 +7533,7 @@ class IMultiLayerBuilder(IParameterized):
         """isPythonBuilder() -> bool"""
         return _libBornAgainCore.IMultiLayerBuilder_isPythonBuilder()
 
-    if _newclass:
-        isPythonBuilder = staticmethod(isPythonBuilder)
-    __swig_getmethods__["isPythonBuilder"] = lambda x: isPythonBuilder
+    isPythonBuilder = staticmethod(isPythonBuilder)
     __swig_destroy__ = _libBornAgainCore.delete_IMultiLayerBuilder
     __del__ = lambda self: None
     def __disown__(self):
@@ -7586,7 +7575,7 @@ class INodeVisitor(_object):
         this = _libBornAgainCore.new_INodeVisitor()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_INodeVisitor
     __del__ = lambda self: None
@@ -7864,7 +7853,7 @@ class Crystal(IClusteredParticles):
         this = _libBornAgainCore.new_Crystal(lattice_basis, lattice)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Crystal
     __del__ = lambda self: None
@@ -8119,7 +8108,7 @@ class DistributionGate(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGate(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGate
     __del__ = lambda self: None
@@ -8248,7 +8237,7 @@ class DistributionLorentz(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLorentz(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLorentz
     __del__ = lambda self: None
@@ -8367,7 +8356,7 @@ class DistributionGaussian(IDistribution1D):
         this = _libBornAgainCore.new_DistributionGaussian(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionGaussian
     __del__ = lambda self: None
@@ -8486,7 +8475,7 @@ class DistributionLogNormal(IDistribution1D):
         this = _libBornAgainCore.new_DistributionLogNormal(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionLogNormal
     __del__ = lambda self: None
@@ -8627,7 +8616,7 @@ class DistributionCosine(IDistribution1D):
         this = _libBornAgainCore.new_DistributionCosine(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionCosine
     __del__ = lambda self: None
@@ -8746,7 +8735,7 @@ class DistributionTrapezoid(IDistribution1D):
         this = _libBornAgainCore.new_DistributionTrapezoid(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_DistributionTrapezoid
     __del__ = lambda self: None
@@ -8881,7 +8870,7 @@ class DetectorMask(_object):
         this = _libBornAgainCore.new_DetectorMask(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def addMask(self, shape, mask_value):
@@ -9053,7 +9042,7 @@ class Ellipse(IShape2D):
         this = _libBornAgainCore.new_Ellipse(xcenter, ycenter, xradius, yradius, theta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9220,7 +9209,7 @@ class FTDecayFunction1DCauchy(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DCauchy(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9289,7 +9278,7 @@ class FTDecayFunction1DGauss(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DGauss(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9358,7 +9347,7 @@ class FTDecayFunction1DTriangle(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DTriangle(decay_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9438,7 +9427,7 @@ class FTDecayFunction1DVoigt(IFTDecayFunction1D):
         this = _libBornAgainCore.new_FTDecayFunction1DVoigt(decay_length, eta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9639,7 +9628,7 @@ class FTDecayFunction2DCauchy(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DCauchy(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9711,7 +9700,7 @@ class FTDecayFunction2DGauss(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DGauss(decay_length_x, decay_length_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9800,7 +9789,7 @@ class FTDecayFunction2DVoigt(IFTDecayFunction2D):
         this = _libBornAgainCore.new_FTDecayFunction2DVoigt(decay_length_x, decay_length_y, eta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -9950,7 +9939,7 @@ class FTDistribution1DCauchy(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCauchy(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10021,7 +10010,7 @@ class FTDistribution1DGauss(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGauss(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10092,7 +10081,7 @@ class FTDistribution1DGate(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DGate(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10163,7 +10152,7 @@ class FTDistribution1DTriangle(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DTriangle(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10234,7 +10223,7 @@ class FTDistribution1DCosine(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DCosine(omega)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10316,7 +10305,7 @@ class FTDistribution1DVoigt(IFTDistribution1D):
         this = _libBornAgainCore.new_FTDistribution1DVoigt(omega, eta)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10497,7 +10486,7 @@ class FTDistribution2DCauchy(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCauchy(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10569,7 +10558,7 @@ class FTDistribution2DGauss(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGauss(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10641,7 +10630,7 @@ class FTDistribution2DGate(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DGate(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10713,7 +10702,7 @@ class FTDistribution2DCone(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DCone(omega_x, omega_y, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10802,7 +10791,7 @@ class FTDistribution2DVoigt(IFTDistribution2D):
         this = _libBornAgainCore.new_FTDistribution2DVoigt(omega_x, omega_y, eta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -10900,7 +10889,7 @@ class FixedBinAxis(IAxis):
         this = _libBornAgainCore.new_FixedBinAxis(name, nbins, start, end)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FixedBinAxis
     __del__ = lambda self: None
@@ -11064,7 +11053,7 @@ class IFormFactor(ISample):
         this = _libBornAgainCore.new_IFormFactor(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactor
     __del__ = lambda self: None
@@ -11165,18 +11154,6 @@ class IFormFactor(ISample):
         return _libBornAgainCore.IFormFactor_topZ(self, rotation)
 
 
-    def setSpecularInfo(self, arg0, arg1):
-        """
-        setSpecularInfo(IFormFactor self, ILayerRTCoefficients const * arg0, ILayerRTCoefficients const * arg1)
-
-        virtual void IFormFactor::setSpecularInfo(const ILayerRTCoefficients *, const ILayerRTCoefficients *)
-
-        Sets reflection/transmission info. 
-
-        """
-        return _libBornAgainCore.IFormFactor_setSpecularInfo(self, arg0, arg1)
-
-
     def canSliceAnalytically(self, rot):
         """canSliceAnalytically(IFormFactor self, IRotation rot) -> bool"""
         return _libBornAgainCore.IFormFactor_canSliceAnalytically(self, rot)
@@ -11361,7 +11338,7 @@ class vector_IFormFactorPtr_t(_object):
         this = _libBornAgainCore.new_vector_IFormFactorPtr_t(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -11450,7 +11427,7 @@ class IFormFactorBorn(IFormFactor):
         this = _libBornAgainCore.new_IFormFactorBorn(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IFormFactorBorn
     __del__ = lambda self: None
@@ -11585,7 +11562,7 @@ class SlicingEffects(_object):
         this = _libBornAgainCore.new_SlicingEffects()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SlicingEffects
     __del__ = lambda self: None
@@ -11743,7 +11720,7 @@ class PolygonalTopology(_object):
         this = _libBornAgainCore.new_PolygonalTopology()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolygonalTopology
     __del__ = lambda self: None
@@ -11788,7 +11765,7 @@ class PolyhedralTopology(_object):
         this = _libBornAgainCore.new_PolyhedralTopology()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PolyhedralTopology
     __del__ = lambda self: None
@@ -11821,7 +11798,7 @@ class PolyhedralEdge(_object):
         this = _libBornAgainCore.new_PolyhedralEdge(_Vlow, _Vhig)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def E(self):
@@ -11900,9 +11877,7 @@ class PolyhedralFace(_object):
         """diameter(vector_kvector_t V) -> double"""
         return _libBornAgainCore.PolyhedralFace_diameter(V)
 
-    if _newclass:
-        diameter = staticmethod(diameter)
-    __swig_getmethods__["diameter"] = lambda x: diameter
+    diameter = staticmethod(diameter)
 
     def __init__(self, *args):
         """
@@ -11927,7 +11902,7 @@ class PolyhedralFace(_object):
         this = _libBornAgainCore.new_PolyhedralFace(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def area(self):
@@ -12308,7 +12283,7 @@ class FormFactorAnisoPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorAnisoPyramid(length, width, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -12423,7 +12398,7 @@ class FormFactorBox(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorBox(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -12552,7 +12527,7 @@ class FormFactorCone(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCone(radius, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -12681,7 +12656,7 @@ class FormFactorCone6(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCone6(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -12772,7 +12747,7 @@ class FormFactorCrystal(IFormFactor):
         this = _libBornAgainCore.new_FormFactorCrystal(lattice, basis_form_factor, meso_form_factor)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorCrystal
     __del__ = lambda self: None
@@ -12922,7 +12897,7 @@ class FormFactorCuboctahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorCuboctahedron(length, height, height_ratio, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13034,7 +13009,7 @@ class FormFactorCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorCylinder(radius, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13142,7 +13117,7 @@ class FormFactorDecoratorDebyeWaller(IFormFactorDecorator):
         this = _libBornAgainCore.new_FormFactorDecoratorDebyeWaller(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13231,7 +13206,7 @@ class FormFactorDodecahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorDodecahedron(edge)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13302,7 +13277,7 @@ class FormFactorDot(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorDot()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13401,7 +13376,7 @@ class FormFactorEllipsoidalCylinder(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorEllipsoidalCylinder(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13524,7 +13499,7 @@ class FormFactorFullSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSphere(radius)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13654,7 +13629,7 @@ class FormFactorFullSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorFullSpheroid(radius, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13760,7 +13735,7 @@ class FormFactorGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorGauss(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -13879,7 +13854,7 @@ class FormFactorHemiEllipsoid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorHemiEllipsoid(radius_x, radius_y, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorHemiEllipsoid
     __del__ = lambda self: None
@@ -14002,7 +13977,7 @@ class FormFactorIcosahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorIcosahedron(edge)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14087,7 +14062,7 @@ class FormFactorLongBoxGauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxGauss(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14216,7 +14191,7 @@ class FormFactorLongBoxLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongBoxLorentz(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14345,7 +14320,7 @@ class FormFactorLongRipple1Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Gauss(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14474,7 +14449,7 @@ class FormFactorLongRipple1Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple1Lorentz(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14606,7 +14581,7 @@ class FormFactorLongRipple2Gauss(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Gauss(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14746,7 +14721,7 @@ class FormFactorLongRipple2Lorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLongRipple2Lorentz(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14872,7 +14847,7 @@ class FormFactorLorentz(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorLorentz(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -14988,7 +14963,7 @@ class FormFactorPrism3(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism3(base_edge, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15070,7 +15045,7 @@ class FormFactorPrism6(FormFactorPolygonalPrism):
         this = _libBornAgainCore.new_FormFactorPrism6(base_edge, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15155,7 +15130,7 @@ class FormFactorPyramid(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorPyramid(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15260,7 +15235,7 @@ class FormFactorRipple1(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple1(length, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15392,7 +15367,7 @@ class FormFactorRipple2(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorRipple2(length, width, height, asymmetry)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15517,7 +15492,7 @@ class FormFactorSphereGaussianRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereGaussianRadius(mean, sigma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15602,7 +15577,7 @@ class FormFactorSphereLogNormalRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereLogNormalRadius(mean, scale_param, n_samples)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15687,7 +15662,7 @@ class FormFactorSphereUniformRadius(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorSphereUniformRadius(mean, full_width)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15786,7 +15761,7 @@ class FormFactorTetrahedron(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTetrahedron(base_edge, height, alpha)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15888,7 +15863,7 @@ class FormFactorTruncatedCube(FormFactorPolyhedron):
         this = _libBornAgainCore.new_FormFactorTruncatedCube(length, removed_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -15984,7 +15959,7 @@ class FormFactorTruncatedSphere(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSphere(radius, height, dh)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -16117,7 +16092,7 @@ class FormFactorTruncatedSpheroid(IFormFactorBorn):
         this = _libBornAgainCore.new_FormFactorTruncatedSpheroid(radius, height, height_flattening, dh)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -16244,7 +16219,7 @@ class FormFactorWeighted(IFormFactor):
         this = _libBornAgainCore.new_FormFactorWeighted()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_FormFactorWeighted
     __del__ = lambda self: None
@@ -16445,7 +16420,7 @@ class FootprintFactorGaussian(IFootprintFactor):
         this = _libBornAgainCore.new_FootprintFactorGaussian(width_ratio)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def accept(self, visitor):
@@ -16516,7 +16491,7 @@ class FootprintFactorSquare(IFootprintFactor):
         this = _libBornAgainCore.new_FootprintFactorSquare(width_ratio)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def accept(self, visitor):
@@ -17042,7 +17017,7 @@ class SimulationOptions(_object):
         this = _libBornAgainCore.new_SimulationOptions()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def isIntegrate(self):
@@ -17240,7 +17215,7 @@ class GISASSimulation(Simulation2D):
         this = _libBornAgainCore.new_GISASSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_GISASSimulation
     __del__ = lambda self: None
@@ -17777,9 +17752,7 @@ class IHistogram(_object):
         """createHistogram(IntensityData source) -> IHistogram"""
         return _libBornAgainCore.IHistogram_createHistogram(source)
 
-    if _newclass:
-        createHistogram = staticmethod(createHistogram)
-    __swig_getmethods__["createHistogram"] = lambda x: createHistogram
+    createHistogram = staticmethod(createHistogram)
 
     def createFrom(*args):
         """
@@ -17788,9 +17761,7 @@ class IHistogram(_object):
         """
         return _libBornAgainCore.IHistogram_createFrom(*args)
 
-    if _newclass:
-        createFrom = staticmethod(createFrom)
-    __swig_getmethods__["createFrom"] = lambda x: createFrom
+    createFrom = staticmethod(createFrom)
 
     def createOutputData(self, *args):
         """
@@ -17920,7 +17891,7 @@ class Histogram1D(IHistogram):
         this = _libBornAgainCore.new_Histogram1D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -18027,9 +17998,7 @@ class Histogram1D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram1D"""
         return _libBornAgainCore.Histogram1D_dynamicCast(pHistogram)
 
-    if _newclass:
-        dynamicCast = staticmethod(dynamicCast)
-    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
+    dynamicCast = staticmethod(dynamicCast)
     __swig_destroy__ = _libBornAgainCore.delete_Histogram1D
     __del__ = lambda self: None
 Histogram1D_swigregister = _libBornAgainCore.Histogram1D_swigregister
@@ -18075,7 +18044,7 @@ class Histogram2D(IHistogram):
         this = _libBornAgainCore.new_Histogram2D(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -18201,9 +18170,7 @@ class Histogram2D(IHistogram):
         """dynamicCast(IHistogram pHistogram) -> Histogram2D"""
         return _libBornAgainCore.Histogram2D_dynamicCast(pHistogram)
 
-    if _newclass:
-        dynamicCast = staticmethod(dynamicCast)
-    __swig_getmethods__["dynamicCast"] = lambda x: dynamicCast
+    dynamicCast = staticmethod(dynamicCast)
     __swig_destroy__ = _libBornAgainCore.delete_Histogram2D
     __del__ = lambda self: None
 Histogram2D_swigregister = _libBornAgainCore.Histogram2D_swigregister
@@ -18255,7 +18222,7 @@ class AxisInfo(_object):
         this = _libBornAgainCore.new_AxisInfo()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_AxisInfo
     __del__ = lambda self: None
@@ -18291,7 +18258,7 @@ class SimulationResult(_object):
         this = _libBornAgainCore.new_SimulationResult(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def data(self, *args):
@@ -18436,7 +18403,7 @@ class ConstantBackground(IBackground):
         this = _libBornAgainCore.new_ConstantBackground(background_value)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ConstantBackground
     __del__ = lambda self: None
@@ -19095,7 +19062,7 @@ class IInterferenceFunction(ISample):
         this = _libBornAgainCore.new_IInterferenceFunction(_self, )
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     def __disown__(self):
         self.this.disown()
@@ -19448,7 +19415,7 @@ class ParticleLimits(_object):
         this = _libBornAgainCore.new_ParticleLimits()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLimits
     __del__ = lambda self: None
@@ -19749,17 +19716,13 @@ class IRotation(ISample):
         """createRotation(Transform3D const & transform) -> IRotation"""
         return _libBornAgainCore.IRotation_createRotation(transform)
 
-    if _newclass:
-        createRotation = staticmethod(createRotation)
-    __swig_getmethods__["createRotation"] = lambda x: createRotation
+    createRotation = staticmethod(createRotation)
 
     def createIdentity():
         """createIdentity() -> IRotation"""
         return _libBornAgainCore.IRotation_createIdentity()
 
-    if _newclass:
-        createIdentity = staticmethod(createIdentity)
-    __swig_getmethods__["createIdentity"] = lambda x: createIdentity
+    createIdentity = staticmethod(createIdentity)
     __swig_destroy__ = _libBornAgainCore.delete_IRotation
     __del__ = lambda self: None
 
@@ -19876,7 +19839,7 @@ class IdentityRotation(IRotation):
         this = _libBornAgainCore.new_IdentityRotation()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -19974,7 +19937,7 @@ class RotationX(IRotation):
         this = _libBornAgainCore.new_RotationX(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -20070,7 +20033,7 @@ class RotationY(IRotation):
         this = _libBornAgainCore.new_RotationY(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -20167,7 +20130,7 @@ class RotationZ(IRotation):
         this = _libBornAgainCore.new_RotationZ(angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -20269,7 +20232,7 @@ class RotationEuler(IRotation):
         this = _libBornAgainCore.new_RotationEuler(alpha, beta, gamma)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -20427,7 +20390,7 @@ class SimpleSelectionRule(ISelectionRule):
         this = _libBornAgainCore.new_SimpleSelectionRule(a, b, c, modulus)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimpleSelectionRule
     __del__ = lambda self: None
@@ -20485,7 +20448,7 @@ class Instrument(INode):
         this = _libBornAgainCore.new_Instrument(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Instrument
     __del__ = lambda self: None
@@ -20817,41 +20780,31 @@ class IntensityDataIOFactory(_object):
         """readOutputData(std::string const & file_name) -> IntensityData"""
         return _libBornAgainCore.IntensityDataIOFactory_readOutputData(file_name)
 
-    if _newclass:
-        readOutputData = staticmethod(readOutputData)
-    __swig_getmethods__["readOutputData"] = lambda x: readOutputData
+    readOutputData = staticmethod(readOutputData)
 
     def readIntensityData(file_name):
         """readIntensityData(std::string const & file_name) -> IHistogram"""
         return _libBornAgainCore.IntensityDataIOFactory_readIntensityData(file_name)
 
-    if _newclass:
-        readIntensityData = staticmethod(readIntensityData)
-    __swig_getmethods__["readIntensityData"] = lambda x: readIntensityData
+    readIntensityData = staticmethod(readIntensityData)
 
     def writeOutputData(data, file_name):
         """writeOutputData(IntensityData data, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeOutputData(data, file_name)
 
-    if _newclass:
-        writeOutputData = staticmethod(writeOutputData)
-    __swig_getmethods__["writeOutputData"] = lambda x: writeOutputData
+    writeOutputData = staticmethod(writeOutputData)
 
     def writeIntensityData(histogram, file_name):
         """writeIntensityData(IHistogram histogram, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeIntensityData(histogram, file_name)
 
-    if _newclass:
-        writeIntensityData = staticmethod(writeIntensityData)
-    __swig_getmethods__["writeIntensityData"] = lambda x: writeIntensityData
+    writeIntensityData = staticmethod(writeIntensityData)
 
     def writeSimulationResult(result, file_name):
         """writeSimulationResult(SimulationResult result, std::string const & file_name)"""
         return _libBornAgainCore.IntensityDataIOFactory_writeSimulationResult(result, file_name)
 
-    if _newclass:
-        writeSimulationResult = staticmethod(writeSimulationResult)
-    __swig_getmethods__["writeSimulationResult"] = lambda x: writeSimulationResult
+    writeSimulationResult = staticmethod(writeSimulationResult)
 
     def __init__(self):
         """
@@ -20867,7 +20820,7 @@ class IntensityDataIOFactory(_object):
         this = _libBornAgainCore.new_IntensityDataIOFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityDataIOFactory
     __del__ = lambda self: None
@@ -20935,7 +20888,7 @@ class InterferenceFunction1DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction1DLattice(length, xi)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction1DLattice
     __del__ = lambda self: None
@@ -21060,7 +21013,7 @@ class InterferenceFunctionRadialParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionRadialParaCrystal(peak_distance, damping_length)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21270,7 +21223,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DLattice(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DLattice
     __del__ = lambda self: None
@@ -21306,9 +21259,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createSquare(lattice_length, xi)
 
-    if _newclass:
-        createSquare = staticmethod(createSquare)
-    __swig_getmethods__["createSquare"] = lambda x: createSquare
+    createSquare = staticmethod(createSquare)
 
     def createHexagonal(lattice_length, xi=0.0):
         """
@@ -21317,9 +21268,7 @@ class InterferenceFunction2DLattice(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DLattice_createHexagonal(lattice_length, xi)
 
-    if _newclass:
-        createHexagonal = staticmethod(createHexagonal)
-    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
+    createHexagonal = staticmethod(createHexagonal)
 
     def setDecayFunction(self, decay):
         """
@@ -21489,7 +21438,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunction2DParaCrystal(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_InterferenceFunction2DParaCrystal
     __del__ = lambda self: None
@@ -21527,9 +21476,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createSquare(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    if _newclass:
-        createSquare = staticmethod(createSquare)
-    __swig_getmethods__["createSquare"] = lambda x: createSquare
+    createSquare = staticmethod(createSquare)
 
     def createHexagonal(lattice_length, damping_length=0.0, domain_size_1=0.0, domain_size_2=0.0):
         """
@@ -21540,9 +21487,7 @@ class InterferenceFunction2DParaCrystal(IInterferenceFunction):
         """
         return _libBornAgainCore.InterferenceFunction2DParaCrystal_createHexagonal(lattice_length, damping_length, domain_size_1, domain_size_2)
 
-    if _newclass:
-        createHexagonal = staticmethod(createHexagonal)
-    __swig_getmethods__["createHexagonal"] = lambda x: createHexagonal
+    createHexagonal = staticmethod(createHexagonal)
 
     def setDomainSizes(self, size_1, size_2):
         """
@@ -21748,7 +21693,7 @@ class InterferenceFunctionNone(IInterferenceFunction):
         this = _libBornAgainCore.new_InterferenceFunctionNone()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21896,7 +21841,7 @@ class SphericalDetector(IDetector2D):
         this = _libBornAgainCore.new_SphericalDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -21972,7 +21917,7 @@ class SphericalPixel(IPixel):
         this = _libBornAgainCore.new_SphericalPixel(alpha_bin, phi_bin)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SphericalPixel
     __del__ = lambda self: None
@@ -22061,7 +22006,7 @@ class IsGISAXSDetector(SphericalDetector):
         this = _libBornAgainCore.new_IsGISAXSDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -22121,7 +22066,7 @@ class Lattice(INode):
         this = _libBornAgainCore.new_Lattice(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Lattice
     __del__ = lambda self: None
@@ -22274,17 +22219,13 @@ class Lattice(INode):
         """createFCCLattice(double a) -> Lattice"""
         return _libBornAgainCore.Lattice_createFCCLattice(a)
 
-    if _newclass:
-        createFCCLattice = staticmethod(createFCCLattice)
-    __swig_getmethods__["createFCCLattice"] = lambda x: createFCCLattice
+    createFCCLattice = staticmethod(createFCCLattice)
 
     def createTrigonalLattice(a, c):
         """createTrigonalLattice(double a, double c) -> Lattice"""
         return _libBornAgainCore.Lattice_createTrigonalLattice(a, c)
 
-    if _newclass:
-        createTrigonalLattice = staticmethod(createTrigonalLattice)
-    __swig_getmethods__["createTrigonalLattice"] = lambda x: createTrigonalLattice
+    createTrigonalLattice = staticmethod(createTrigonalLattice)
 
     def onChange(self):
         """
@@ -22344,7 +22285,7 @@ class Lattice1DParameters(_object):
         this = _libBornAgainCore.new_Lattice1DParameters(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_set
     __swig_getmethods__["m_length"] = _libBornAgainCore.Lattice1DParameters_m_length_get
@@ -22483,7 +22424,7 @@ class BasicLattice(Lattice2D):
         this = _libBornAgainCore.new_BasicLattice(length1, length2, angle, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -22576,7 +22517,7 @@ class SquareLattice(Lattice2D):
         this = _libBornAgainCore.new_SquareLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -22669,7 +22610,7 @@ class HexagonalLattice(Lattice2D):
         this = _libBornAgainCore.new_HexagonalLattice(length, rotation_angle)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -22784,7 +22725,7 @@ class Layer(ISample):
         this = _libBornAgainCore.new_Layer(material, thickness)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Layer
     __del__ = lambda self: None
@@ -23024,7 +22965,7 @@ class LayerRoughness(ISample):
         this = _libBornAgainCore.new_LayerRoughness(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -23185,7 +23126,7 @@ class Line(IShape2D):
         this = _libBornAgainCore.new_Line(x1, y1, x2, y2)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -23251,7 +23192,7 @@ class VerticalLine(IShape2D):
         this = _libBornAgainCore.new_VerticalLine(x)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -23327,7 +23268,7 @@ class HorizontalLine(IShape2D):
         this = _libBornAgainCore.new_HorizontalLine(y)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -23396,7 +23337,7 @@ class Material(_object):
         this = _libBornAgainCore.new_Material(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def inverted(self):
@@ -23616,7 +23557,7 @@ class MesoCrystal(IParticle):
         this = _libBornAgainCore.new_MesoCrystal(particle_structure, form_factor)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MesoCrystal
     __del__ = lambda self: None
@@ -23703,7 +23644,7 @@ class MultiLayer(ISample):
         this = _libBornAgainCore.new_MultiLayer()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_MultiLayer
     __del__ = lambda self: None
@@ -24112,7 +24053,7 @@ class OffSpecSimulation(Simulation2D):
         this = _libBornAgainCore.new_OffSpecSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_OffSpecSimulation
     __del__ = lambda self: None
@@ -24227,7 +24168,7 @@ class IntensityData(_object):
         this = _libBornAgainCore.new_IntensityData()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_IntensityData
     __del__ = lambda self: None
@@ -24606,9 +24547,10 @@ class IntensityData(_object):
         return _libBornAgainCore.IntensityData___isub__(self, right)
 
 
-    def __idiv__(self, right):
-        """__idiv__(IntensityData self, IntensityData right) -> IntensityData"""
-        return _libBornAgainCore.IntensityData___idiv__(self, right)
+    def __itruediv__(self, *args):
+        return _libBornAgainCore.IntensityData___itruediv__(self, *args)
+    __idiv__ = __itruediv__
+
 
 
     def __imul__(self, right):
@@ -24698,7 +24640,7 @@ class ParameterDistribution(IParameterized):
         this = _libBornAgainCore.new_ParameterDistribution(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterDistribution
     __del__ = lambda self: None
@@ -24848,7 +24790,7 @@ class ParameterPool(ICloneable):
         this = _libBornAgainCore.new_ParameterPool()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParameterPool
     __del__ = lambda self: None
@@ -25061,7 +25003,7 @@ class ParameterSample(_object):
         this = _libBornAgainCore.new_ParameterSample(_value, _weight)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["value"] = _libBornAgainCore.ParameterSample_value_set
     __swig_getmethods__["value"] = _libBornAgainCore.ParameterSample_value_get
@@ -25235,7 +25177,7 @@ class ParameterSampleVector(_object):
         this = _libBornAgainCore.new_ParameterSampleVector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def push_back(self, x):
@@ -25321,7 +25263,7 @@ class Particle(IParticle):
         this = _libBornAgainCore.new_Particle(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -25439,7 +25381,7 @@ class ParticleComposition(IParticle):
         this = _libBornAgainCore.new_ParticleComposition(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleComposition
     __del__ = lambda self: None
@@ -25582,7 +25524,7 @@ class ParticleCoreShell(IParticle):
         this = _libBornAgainCore.new_ParticleCoreShell(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleCoreShell
     __del__ = lambda self: None
@@ -25687,7 +25629,7 @@ class ParticleDistribution(IAbstractParticle):
         this = _libBornAgainCore.new_ParticleDistribution(prototype, par_distr)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -25824,7 +25766,7 @@ class ParticleLayout(ILayout):
         this = _libBornAgainCore.new_ParticleLayout(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_ParticleLayout
     __del__ = lambda self: None
@@ -25997,7 +25939,7 @@ class PoissonNoiseBackground(IBackground):
         this = _libBornAgainCore.new_PoissonNoiseBackground()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_PoissonNoiseBackground
     __del__ = lambda self: None
@@ -26068,7 +26010,7 @@ class Polygon(IShape2D):
         this = _libBornAgainCore.new_Polygon(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_Polygon
     __del__ = lambda self: None
@@ -26152,7 +26094,7 @@ class RealParameter(IParameterReal):
         this = _libBornAgainCore.new_RealParameter(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self, *args):
@@ -26309,7 +26251,7 @@ class Rectangle(IShape2D):
         this = _libBornAgainCore.new_Rectangle(xlow, ylow, xup, yup)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -26425,7 +26367,7 @@ class RectangularDetector(IDetector2D):
         this = _libBornAgainCore.new_RectangularDetector(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def clone(self):
@@ -26696,7 +26638,7 @@ class RectangularPixel(IPixel):
         this = _libBornAgainCore.new_RectangularPixel(corner_pos, width, height)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_RectangularPixel
     __del__ = lambda self: None
@@ -26793,7 +26735,7 @@ class ResolutionFunction2DGaussian(IResolutionFunction2D):
         this = _libBornAgainCore.new_ResolutionFunction2DGaussian(sigma_x, sigma_y)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def evaluateCDF(self, x, y):
@@ -26884,7 +26826,7 @@ class SpecularSimulation(Simulation):
         this = _libBornAgainCore.new_SpecularSimulation(*args)
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SpecularSimulation
     __del__ = lambda self: None
@@ -27003,7 +26945,7 @@ class ThreadInfo(_object):
         this = _libBornAgainCore.new_ThreadInfo()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_setmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_set
     __swig_getmethods__["n_threads"] = _libBornAgainCore.ThreadInfo_n_threads_get
@@ -27048,7 +26990,7 @@ class SampleBuilderFactoryTemp(_object):
         this = _libBornAgainCore.new_SampleBuilderFactoryTemp()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -27152,7 +27094,7 @@ class SampleBuilderFactory(SampleBuilderFactoryTemp):
         this = _libBornAgainCore.new_SampleBuilderFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createSample(self, name):
@@ -27197,7 +27139,7 @@ class SimulationFactoryTemp(_object):
         this = _libBornAgainCore.new_SimulationFactoryTemp()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
 
     def createItem(self, item_key):
@@ -27301,7 +27243,7 @@ class SimulationFactory(SimulationFactoryTemp):
         this = _libBornAgainCore.new_SimulationFactory()
         try:
             self.this.append(this)
-        except Exception:
+        except __builtin__.Exception:
             self.this = this
     __swig_destroy__ = _libBornAgainCore.delete_SimulationFactory
     __del__ = lambda self: None
@@ -27437,7 +27379,12 @@ IUnitConverter_swigregister(IUnitConverter)
 
 
 def SubstituteDefaultUnits(converter, units):
-    """SubstituteDefaultUnits(IUnitConverter converter, AxesUnits units) -> AxesUnits"""
+    """
+    SubstituteDefaultUnits(IUnitConverter converter, AxesUnits units) -> AxesUnits
+
+    AxesUnits SubstituteDefaultUnits(const IUnitConverter &converter, AxesUnits units)
+
+    """
     return _libBornAgainCore.SubstituteDefaultUnits(converter, units)
 # This file is compatible with both classic and new-style classes.
 
diff --git a/auto/Wrap/libBornAgainCore_wrap.cpp b/auto/Wrap/libBornAgainCore_wrap.cpp
index 99e04c6844d7626a8cf082346e0bec8357f3adf3..ceda16588cae97194d32c8414245aa83aae1474a 100644
--- a/auto/Wrap/libBornAgainCore_wrap.cpp
+++ b/auto/Wrap/libBornAgainCore_wrap.cpp
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -107,9 +107,11 @@ template <typename T> T SwigValueInit() {
 #endif
 
 /* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
+#if defined(__GNUC__)
+#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#    ifndef GCC_HASCLASSVISIBILITY
+#      define GCC_HASCLASSVISIBILITY
+#    endif
 #  endif
 #endif
 
@@ -669,16 +671,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
+      uu = (unsigned char)((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
+      uu = (unsigned char)((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
+      uu |= (unsigned char)(d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
+      uu |= (unsigned char)(d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -861,10 +863,6 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -979,6 +977,7 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
+#define Py_hash_t long
 #endif
 
 /* -----------------------------------------------------------------------------
@@ -1927,7 +1926,6 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1938,7 +1936,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,				    /* tp_print */
+      0,                                    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1946,7 +1944,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1956,7 +1954,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,				    /* tp_str */
+      0,                                    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2119,7 +2117,6 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -3595,188 +3592,187 @@ namespace Swig {
 #define SWIGTYPE_p_IIntensityFunction swig_types[138]
 #define SWIGTYPE_p_IIntensityNormalizer swig_types[139]
 #define SWIGTYPE_p_IInterferenceFunction swig_types[140]
-#define SWIGTYPE_p_ILayerRTCoefficients swig_types[141]
-#define SWIGTYPE_p_ILayout swig_types[142]
-#define SWIGTYPE_p_IMinimizer swig_types[143]
-#define SWIGTYPE_p_IMultiLayerBuilder swig_types[144]
-#define SWIGTYPE_p_INamed swig_types[145]
-#define SWIGTYPE_p_INode swig_types[146]
-#define SWIGTYPE_p_INodeVisitor swig_types[147]
-#define SWIGTYPE_p_IObservable swig_types[148]
-#define SWIGTYPE_p_IObserver swig_types[149]
-#define SWIGTYPE_p_IParameterT_double_t swig_types[150]
-#define SWIGTYPE_p_IParameterized swig_types[151]
-#define SWIGTYPE_p_IParticle swig_types[152]
-#define SWIGTYPE_p_IPixel swig_types[153]
-#define SWIGTYPE_p_IResolutionFunction2D swig_types[154]
-#define SWIGTYPE_p_IRotation swig_types[155]
-#define SWIGTYPE_p_ISample swig_types[156]
-#define SWIGTYPE_p_ISelectionRule swig_types[157]
-#define SWIGTYPE_p_IShape2D swig_types[158]
-#define SWIGTYPE_p_ISquaredFunction swig_types[159]
-#define SWIGTYPE_p_IUnitConverter swig_types[160]
-#define SWIGTYPE_p_IdentityRotation swig_types[161]
-#define SWIGTYPE_p_Instrument swig_types[162]
-#define SWIGTYPE_p_IntensityDataIOFactory swig_types[163]
-#define SWIGTYPE_p_IntensityFunctionLog swig_types[164]
-#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[165]
-#define SWIGTYPE_p_IntensityNormalizer swig_types[166]
-#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[167]
-#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[168]
-#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[169]
-#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[170]
-#define SWIGTYPE_p_InterferenceFunctionNone swig_types[171]
-#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[172]
-#define SWIGTYPE_p_IsGISAXSDetector swig_types[173]
-#define SWIGTYPE_p_Lattice swig_types[174]
-#define SWIGTYPE_p_Lattice1DParameters swig_types[175]
-#define SWIGTYPE_p_Lattice2D swig_types[176]
-#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[177]
-#define SWIGTYPE_p_Layer swig_types[178]
-#define SWIGTYPE_p_LayerInterface swig_types[179]
-#define SWIGTYPE_p_LayerRoughness swig_types[180]
-#define SWIGTYPE_p_Line swig_types[181]
-#define SWIGTYPE_p_Material swig_types[182]
-#define SWIGTYPE_p_MesoCrystal swig_types[183]
-#define SWIGTYPE_p_MultiLayer swig_types[184]
-#define SWIGTYPE_p_OffSpecSimulation swig_types[185]
-#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[186]
-#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[187]
-#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[188]
-#define SWIGTYPE_p_OutputDataT_bool_t swig_types[189]
-#define SWIGTYPE_p_OutputDataT_double_t swig_types[190]
-#define SWIGTYPE_p_ParameterDistribution swig_types[191]
-#define SWIGTYPE_p_ParameterPool swig_types[192]
-#define SWIGTYPE_p_ParameterSample swig_types[193]
-#define SWIGTYPE_p_Particle swig_types[194]
-#define SWIGTYPE_p_ParticleComposition swig_types[195]
-#define SWIGTYPE_p_ParticleCoreShell swig_types[196]
-#define SWIGTYPE_p_ParticleDistribution swig_types[197]
-#define SWIGTYPE_p_ParticleLayout swig_types[198]
-#define SWIGTYPE_p_ParticleLimits swig_types[199]
-#define SWIGTYPE_p_PoissonNoiseBackground swig_types[200]
-#define SWIGTYPE_p_Polygon swig_types[201]
-#define SWIGTYPE_p_PolygonPrivate swig_types[202]
-#define SWIGTYPE_p_PolygonalTopology swig_types[203]
-#define SWIGTYPE_p_PolyhedralEdge swig_types[204]
-#define SWIGTYPE_p_PolyhedralFace swig_types[205]
-#define SWIGTYPE_p_PolyhedralTopology swig_types[206]
-#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[207]
-#define SWIGTYPE_p_RealLimits swig_types[208]
-#define SWIGTYPE_p_RealParameter swig_types[209]
-#define SWIGTYPE_p_Rectangle swig_types[210]
-#define SWIGTYPE_p_RectangularDetector swig_types[211]
-#define SWIGTYPE_p_RectangularPixel swig_types[212]
-#define SWIGTYPE_p_RegionOfInterest swig_types[213]
-#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[214]
-#define SWIGTYPE_p_RotationEuler swig_types[215]
-#define SWIGTYPE_p_RotationX swig_types[216]
-#define SWIGTYPE_p_RotationY swig_types[217]
-#define SWIGTYPE_p_RotationZ swig_types[218]
-#define SWIGTYPE_p_SafePointerVectorT_FitObject_t__iterator swig_types[219]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[220]
-#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[221]
-#define SWIGTYPE_p_SafePointerVectorT_Layer_t swig_types[222]
-#define SWIGTYPE_p_SampleBuilderFactory swig_types[223]
-#define SWIGTYPE_p_SimpleSelectionRule swig_types[224]
-#define SWIGTYPE_p_Simulation swig_types[225]
-#define SWIGTYPE_p_Simulation2D swig_types[226]
-#define SWIGTYPE_p_SimulationFactory swig_types[227]
-#define SWIGTYPE_p_SimulationOptions swig_types[228]
-#define SWIGTYPE_p_SimulationResult swig_types[229]
-#define SWIGTYPE_p_SlicedParticle swig_types[230]
-#define SWIGTYPE_p_SlicingEffects swig_types[231]
-#define SWIGTYPE_p_SpecularDetector1D swig_types[232]
-#define SWIGTYPE_p_SpecularSimulation swig_types[233]
-#define SWIGTYPE_p_SphericalDetector swig_types[234]
-#define SWIGTYPE_p_SphericalPixel swig_types[235]
-#define SWIGTYPE_p_SquareLattice swig_types[236]
-#define SWIGTYPE_p_SquaredFunctionDefault swig_types[237]
-#define SWIGTYPE_p_SquaredFunctionGaussianError swig_types[238]
-#define SWIGTYPE_p_SquaredFunctionMeanSquaredError swig_types[239]
-#define SWIGTYPE_p_SquaredFunctionSimError swig_types[240]
-#define SWIGTYPE_p_SquaredFunctionSystematicError swig_types[241]
-#define SWIGTYPE_p_ThreadInfo swig_types[242]
-#define SWIGTYPE_p_Transform3D swig_types[243]
-#define SWIGTYPE_p_VariableBinAxis swig_types[244]
-#define SWIGTYPE_p_VerticalLine swig_types[245]
-#define SWIGTYPE_p_WavevectorInfo swig_types[246]
-#define SWIGTYPE_p_ZLimits swig_types[247]
-#define SWIGTYPE_p__object swig_types[248]
-#define SWIGTYPE_p_allocator_type swig_types[249]
-#define SWIGTYPE_p_bool swig_types[250]
-#define SWIGTYPE_p_char swig_types[251]
-#define SWIGTYPE_p_const_iterator swig_types[252]
-#define SWIGTYPE_p_const_reference swig_types[253]
-#define SWIGTYPE_p_difference_type swig_types[254]
-#define SWIGTYPE_p_double swig_types[255]
-#define SWIGTYPE_p_int swig_types[256]
-#define SWIGTYPE_p_iterator swig_types[257]
-#define SWIGTYPE_p_long_long swig_types[258]
-#define SWIGTYPE_p_observer_t swig_types[259]
-#define SWIGTYPE_p_observerlist_t swig_types[260]
-#define SWIGTYPE_p_p__object swig_types[261]
-#define SWIGTYPE_p_reference swig_types[262]
-#define SWIGTYPE_p_short swig_types[263]
-#define SWIGTYPE_p_signed_char swig_types[264]
-#define SWIGTYPE_p_size_type swig_types[265]
-#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[266]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[267]
-#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[268]
-#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[269]
-#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[270]
-#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[271]
-#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[272]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[273]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[274]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[275]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[276]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[277]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[278]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[279]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[280]
-#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[281]
-#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[282]
-#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[283]
-#define SWIGTYPE_p_std__invalid_argument swig_types[284]
-#define SWIGTYPE_p_std__mapT_std__string_std__string_t__const_iterator swig_types[285]
-#define SWIGTYPE_p_std__shared_ptrT_IFitObserver_t swig_types[286]
-#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[287]
-#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[288]
-#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[289]
-#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[290]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[291]
-#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[292]
-#define SWIGTYPE_p_std__vectorT_FitElement_std__allocatorT_FitElement_t_t swig_types[293]
-#define SWIGTYPE_p_std__vectorT_FitElement_std__allocatorT_FitElement_t_t__iterator swig_types[294]
-#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[295]
-#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[296]
-#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[297]
-#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[298]
-#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[299]
-#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[300]
-#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[301]
-#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[302]
-#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[303]
-#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[304]
-#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[305]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[306]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[307]
-#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[308]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[309]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[310]
-#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[311]
-#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[312]
-#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[313]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[314]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[315]
-#define SWIGTYPE_p_unsigned_char swig_types[316]
-#define SWIGTYPE_p_unsigned_int swig_types[317]
-#define SWIGTYPE_p_unsigned_long_long swig_types[318]
-#define SWIGTYPE_p_unsigned_short swig_types[319]
-#define SWIGTYPE_p_value_type swig_types[320]
-static swig_type_info *swig_types[322];
-static swig_module_info swig_module = {swig_types, 321, 0, 0, 0, 0};
+#define SWIGTYPE_p_ILayout swig_types[141]
+#define SWIGTYPE_p_IMinimizer swig_types[142]
+#define SWIGTYPE_p_IMultiLayerBuilder swig_types[143]
+#define SWIGTYPE_p_INamed swig_types[144]
+#define SWIGTYPE_p_INode swig_types[145]
+#define SWIGTYPE_p_INodeVisitor swig_types[146]
+#define SWIGTYPE_p_IObservable swig_types[147]
+#define SWIGTYPE_p_IObserver swig_types[148]
+#define SWIGTYPE_p_IParameterT_double_t swig_types[149]
+#define SWIGTYPE_p_IParameterized swig_types[150]
+#define SWIGTYPE_p_IParticle swig_types[151]
+#define SWIGTYPE_p_IPixel swig_types[152]
+#define SWIGTYPE_p_IResolutionFunction2D swig_types[153]
+#define SWIGTYPE_p_IRotation swig_types[154]
+#define SWIGTYPE_p_ISample swig_types[155]
+#define SWIGTYPE_p_ISelectionRule swig_types[156]
+#define SWIGTYPE_p_IShape2D swig_types[157]
+#define SWIGTYPE_p_ISquaredFunction swig_types[158]
+#define SWIGTYPE_p_IUnitConverter swig_types[159]
+#define SWIGTYPE_p_IdentityRotation swig_types[160]
+#define SWIGTYPE_p_Instrument swig_types[161]
+#define SWIGTYPE_p_IntensityDataIOFactory swig_types[162]
+#define SWIGTYPE_p_IntensityFunctionLog swig_types[163]
+#define SWIGTYPE_p_IntensityFunctionSqrt swig_types[164]
+#define SWIGTYPE_p_IntensityNormalizer swig_types[165]
+#define SWIGTYPE_p_IntensityScaleAndShiftNormalizer swig_types[166]
+#define SWIGTYPE_p_InterferenceFunction1DLattice swig_types[167]
+#define SWIGTYPE_p_InterferenceFunction2DLattice swig_types[168]
+#define SWIGTYPE_p_InterferenceFunction2DParaCrystal swig_types[169]
+#define SWIGTYPE_p_InterferenceFunctionNone swig_types[170]
+#define SWIGTYPE_p_InterferenceFunctionRadialParaCrystal swig_types[171]
+#define SWIGTYPE_p_IsGISAXSDetector swig_types[172]
+#define SWIGTYPE_p_Lattice swig_types[173]
+#define SWIGTYPE_p_Lattice1DParameters swig_types[174]
+#define SWIGTYPE_p_Lattice2D swig_types[175]
+#define SWIGTYPE_p_Lattice2D__ReciprocalBases swig_types[176]
+#define SWIGTYPE_p_Layer swig_types[177]
+#define SWIGTYPE_p_LayerInterface swig_types[178]
+#define SWIGTYPE_p_LayerRoughness swig_types[179]
+#define SWIGTYPE_p_Line swig_types[180]
+#define SWIGTYPE_p_Material swig_types[181]
+#define SWIGTYPE_p_MesoCrystal swig_types[182]
+#define SWIGTYPE_p_MultiLayer swig_types[183]
+#define SWIGTYPE_p_OffSpecSimulation swig_types[184]
+#define SWIGTYPE_p_OutputDataIteratorT_double_OutputDataT_double_t_t swig_types[185]
+#define SWIGTYPE_p_OutputDataIteratorT_double_const_OutputDataT_double_t_const_t swig_types[186]
+#define SWIGTYPE_p_OutputDataT_CumulativeValue_t swig_types[187]
+#define SWIGTYPE_p_OutputDataT_bool_t swig_types[188]
+#define SWIGTYPE_p_OutputDataT_double_t swig_types[189]
+#define SWIGTYPE_p_ParameterDistribution swig_types[190]
+#define SWIGTYPE_p_ParameterPool swig_types[191]
+#define SWIGTYPE_p_ParameterSample swig_types[192]
+#define SWIGTYPE_p_Particle swig_types[193]
+#define SWIGTYPE_p_ParticleComposition swig_types[194]
+#define SWIGTYPE_p_ParticleCoreShell swig_types[195]
+#define SWIGTYPE_p_ParticleDistribution swig_types[196]
+#define SWIGTYPE_p_ParticleLayout swig_types[197]
+#define SWIGTYPE_p_ParticleLimits swig_types[198]
+#define SWIGTYPE_p_PoissonNoiseBackground swig_types[199]
+#define SWIGTYPE_p_Polygon swig_types[200]
+#define SWIGTYPE_p_PolygonPrivate swig_types[201]
+#define SWIGTYPE_p_PolygonalTopology swig_types[202]
+#define SWIGTYPE_p_PolyhedralEdge swig_types[203]
+#define SWIGTYPE_p_PolyhedralFace swig_types[204]
+#define SWIGTYPE_p_PolyhedralTopology swig_types[205]
+#define SWIGTYPE_p_ProgressHandler__Callback_t swig_types[206]
+#define SWIGTYPE_p_RealLimits swig_types[207]
+#define SWIGTYPE_p_RealParameter swig_types[208]
+#define SWIGTYPE_p_Rectangle swig_types[209]
+#define SWIGTYPE_p_RectangularDetector swig_types[210]
+#define SWIGTYPE_p_RectangularPixel swig_types[211]
+#define SWIGTYPE_p_RegionOfInterest swig_types[212]
+#define SWIGTYPE_p_ResolutionFunction2DGaussian swig_types[213]
+#define SWIGTYPE_p_RotationEuler swig_types[214]
+#define SWIGTYPE_p_RotationX swig_types[215]
+#define SWIGTYPE_p_RotationY swig_types[216]
+#define SWIGTYPE_p_RotationZ swig_types[217]
+#define SWIGTYPE_p_SafePointerVectorT_FitObject_t__iterator swig_types[218]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_const_t swig_types[219]
+#define SWIGTYPE_p_SafePointerVectorT_IParticle_t swig_types[220]
+#define SWIGTYPE_p_SafePointerVectorT_Layer_t swig_types[221]
+#define SWIGTYPE_p_SampleBuilderFactory swig_types[222]
+#define SWIGTYPE_p_SimpleSelectionRule swig_types[223]
+#define SWIGTYPE_p_Simulation swig_types[224]
+#define SWIGTYPE_p_Simulation2D swig_types[225]
+#define SWIGTYPE_p_SimulationFactory swig_types[226]
+#define SWIGTYPE_p_SimulationOptions swig_types[227]
+#define SWIGTYPE_p_SimulationResult swig_types[228]
+#define SWIGTYPE_p_SlicedParticle swig_types[229]
+#define SWIGTYPE_p_SlicingEffects swig_types[230]
+#define SWIGTYPE_p_SpecularDetector1D swig_types[231]
+#define SWIGTYPE_p_SpecularSimulation swig_types[232]
+#define SWIGTYPE_p_SphericalDetector swig_types[233]
+#define SWIGTYPE_p_SphericalPixel swig_types[234]
+#define SWIGTYPE_p_SquareLattice swig_types[235]
+#define SWIGTYPE_p_SquaredFunctionDefault swig_types[236]
+#define SWIGTYPE_p_SquaredFunctionGaussianError swig_types[237]
+#define SWIGTYPE_p_SquaredFunctionMeanSquaredError swig_types[238]
+#define SWIGTYPE_p_SquaredFunctionSimError swig_types[239]
+#define SWIGTYPE_p_SquaredFunctionSystematicError swig_types[240]
+#define SWIGTYPE_p_ThreadInfo swig_types[241]
+#define SWIGTYPE_p_Transform3D swig_types[242]
+#define SWIGTYPE_p_VariableBinAxis swig_types[243]
+#define SWIGTYPE_p_VerticalLine swig_types[244]
+#define SWIGTYPE_p_WavevectorInfo swig_types[245]
+#define SWIGTYPE_p_ZLimits swig_types[246]
+#define SWIGTYPE_p__object swig_types[247]
+#define SWIGTYPE_p_allocator_type swig_types[248]
+#define SWIGTYPE_p_bool swig_types[249]
+#define SWIGTYPE_p_char swig_types[250]
+#define SWIGTYPE_p_const_iterator swig_types[251]
+#define SWIGTYPE_p_const_reference swig_types[252]
+#define SWIGTYPE_p_difference_type swig_types[253]
+#define SWIGTYPE_p_double swig_types[254]
+#define SWIGTYPE_p_int swig_types[255]
+#define SWIGTYPE_p_iterator swig_types[256]
+#define SWIGTYPE_p_long_long swig_types[257]
+#define SWIGTYPE_p_observer_t swig_types[258]
+#define SWIGTYPE_p_observerlist_t swig_types[259]
+#define SWIGTYPE_p_p__object swig_types[260]
+#define SWIGTYPE_p_reference swig_types[261]
+#define SWIGTYPE_p_short swig_types[262]
+#define SWIGTYPE_p_signed_char swig_types[263]
+#define SWIGTYPE_p_size_type swig_types[264]
+#define SWIGTYPE_p_std__allocatorT_AxisInfo_t swig_types[265]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_double_t_t swig_types[266]
+#define SWIGTYPE_p_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t swig_types[267]
+#define SWIGTYPE_p_std__allocatorT_IFormFactor_p_t swig_types[268]
+#define SWIGTYPE_p_std__allocatorT_INode_const_p_t swig_types[269]
+#define SWIGTYPE_p_std__allocatorT_INode_p_t swig_types[270]
+#define SWIGTYPE_p_std__allocatorT_ParameterSample_t swig_types[271]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[272]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[273]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[274]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[275]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[276]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[277]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[278]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[279]
+#define SWIGTYPE_p_std__functionT_IMultiLayerBuilder_pfF_t swig_types[280]
+#define SWIGTYPE_p_std__functionT_Simulation_pfF_t swig_types[281]
+#define SWIGTYPE_p_std__functionT_void_fF_t swig_types[282]
+#define SWIGTYPE_p_std__invalid_argument swig_types[283]
+#define SWIGTYPE_p_std__mapT_std__string_std__string_t__const_iterator swig_types[284]
+#define SWIGTYPE_p_std__shared_ptrT_IFitObserver_t swig_types[285]
+#define SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t swig_types[286]
+#define SWIGTYPE_p_std__shared_ptrT_IObserver_t swig_types[287]
+#define SWIGTYPE_p_std__vectorT_AxesUnitsWrap__AxesUnits_std__allocatorT_AxesUnitsWrap__AxesUnits_t_t swig_types[288]
+#define SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t swig_types[289]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t swig_types[290]
+#define SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t swig_types[291]
+#define SWIGTYPE_p_std__vectorT_FitElement_std__allocatorT_FitElement_t_t swig_types[292]
+#define SWIGTYPE_p_std__vectorT_FitElement_std__allocatorT_FitElement_t_t__iterator swig_types[293]
+#define SWIGTYPE_p_std__vectorT_HomogeneousRegion_std__allocatorT_HomogeneousRegion_t_t swig_types[294]
+#define SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t swig_types[295]
+#define SWIGTYPE_p_std__vectorT_ILayout_const_p_std__allocatorT_ILayout_const_p_t_t swig_types[296]
+#define SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t swig_types[297]
+#define SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t swig_types[298]
+#define SWIGTYPE_p_std__vectorT_IParticle_const_p_std__allocatorT_IParticle_const_p_t_t swig_types[299]
+#define SWIGTYPE_p_std__vectorT_Material_const_p_std__allocatorT_Material_const_p_t_t swig_types[300]
+#define SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t swig_types[301]
+#define SWIGTYPE_p_std__vectorT_PolygonalTopology_std__allocatorT_PolygonalTopology_t_t swig_types[302]
+#define SWIGTYPE_p_std__vectorT_RealParameter_p_std__allocatorT_RealParameter_p_t_t swig_types[303]
+#define SWIGTYPE_p_std__vectorT_SimulationElement_std__allocatorT_SimulationElement_t_t swig_types[304]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[305]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[306]
+#define SWIGTYPE_p_std__vectorT_size_t_std__allocatorT_size_t_t_t swig_types[307]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[308]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[309]
+#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[310]
+#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[311]
+#define SWIGTYPE_p_std__vectorT_unsigned_int_std__allocatorT_unsigned_int_t_t swig_types[312]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[313]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[314]
+#define SWIGTYPE_p_unsigned_char swig_types[315]
+#define SWIGTYPE_p_unsigned_int swig_types[316]
+#define SWIGTYPE_p_unsigned_long_long swig_types[317]
+#define SWIGTYPE_p_unsigned_short swig_types[318]
+#define SWIGTYPE_p_value_type swig_types[319]
+static swig_type_info *swig_types[321];
+static swig_module_info swig_module = {swig_types, 320, 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)
 
@@ -3800,7 +3796,7 @@ static swig_module_info swig_module = {swig_types, 321, 0, 0, 0, 0};
 #endif
 #define SWIG_name    "_libBornAgainCore"
 
-#define SWIGVERSION 0x030008 
+#define SWIGVERSION 0x030012 
 #define SWIG_VERSION SWIGVERSION
 
 
@@ -3899,6 +3895,7 @@ namespace swig {
 #endif
 
 
+#include <typeinfo>
 #include <stdexcept>
 
 
@@ -4048,7 +4045,7 @@ SWIG_AsVal_double (PyObject *obj, double *val)
     return SWIG_OK;
 #if PY_VERSION_HEX < 0x03000000
   } else if (PyInt_Check(obj)) {
-    if (val) *val = PyInt_AsLong(obj);
+    if (val) *val = (double) PyInt_AsLong(obj);
     return SWIG_OK;
 #endif
   } else if (PyLong_Check(obj)) {
@@ -4169,23 +4166,109 @@ SWIG_AsVal_unsigned_SS_long (PyObject *obj, unsigned long *val)
 }
 
 
+#include <limits.h>
+#if !defined(SWIG_NO_LLONG_MAX)
+# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
+#   define LLONG_MAX __LONG_LONG_MAX__
+#   define LLONG_MIN (-LLONG_MAX - 1LL)
+#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
+# endif
+#endif
+
+
+#if defined(LLONG_MAX) && !defined(SWIG_LONG_LONG_AVAILABLE)
+#  define SWIG_LONG_LONG_AVAILABLE
+#endif
+
+
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERN int
+SWIG_AsVal_unsigned_SS_long_SS_long (PyObject *obj, unsigned long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    unsigned long long v = PyLong_AsUnsignedLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+      res = SWIG_OverflowError;
+    }
+  } else {
+    unsigned long v;
+    res = SWIG_AsVal_unsigned_SS_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, 0, mant_max))
+      return SWIG_OverflowError;
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, mant_max)) {
+      if (val) *val = (unsigned long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+#endif
+
+
 SWIGINTERNINLINE int
 SWIG_AsVal_size_t (PyObject * obj, size_t *val)
 {
-  unsigned long v;
-  int res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
-  if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+  int res = SWIG_TypeError;
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(size_t) <= sizeof(unsigned long)) {
+#endif
+    unsigned long v;
+    res = SWIG_AsVal_unsigned_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else if (sizeof(size_t) <= sizeof(unsigned long long)) {
+    unsigned long long v;
+    res = SWIG_AsVal_unsigned_SS_long_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< size_t >(v);
+  }
+#endif
   return res;
 }
 
 
-  #define SWIG_From_long   PyLong_FromLong 
+  #define SWIG_From_long   PyInt_FromLong 
+
+
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERNINLINE PyObject* 
+SWIG_From_long_SS_long  (long long value)
+{
+  return ((value < LONG_MIN) || (value > LONG_MAX)) ?
+    PyLong_FromLongLong(value) : PyInt_FromLong(static_cast< long >(value));
+}
+#endif
 
 
 SWIGINTERNINLINE PyObject *
 SWIG_From_ptrdiff_t  (ptrdiff_t value)
 {    
-  return SWIG_From_long  (static_cast< long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(ptrdiff_t) <= sizeof(long)) {
+#endif
+    return SWIG_From_long  (static_cast< long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else {
+    /* assume sizeof(ptrdiff_t) <= sizeof(long long) */
+    return SWIG_From_long_SS_long  (static_cast< long long >(value));
+  }
+#endif
 }
 
 
@@ -4239,12 +4322,65 @@ SWIG_AsVal_long (PyObject *obj, long* val)
 }
 
 
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERN int
+SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
+{
+  int res = SWIG_TypeError;
+  if (PyLong_Check(obj)) {
+    long long v = PyLong_AsLongLong(obj);
+    if (!PyErr_Occurred()) {
+      if (val) *val = v;
+      return SWIG_OK;
+    } else {
+      PyErr_Clear();
+      res = SWIG_OverflowError;
+    }
+  } else {
+    long v;
+    res = SWIG_AsVal_long (obj,&v);
+    if (SWIG_IsOK(res)) {
+      if (val) *val = v;
+      return res;
+    }
+  }
+#ifdef SWIG_PYTHON_CAST_MODE
+  {
+    const double mant_max = 1LL << DBL_MANT_DIG;
+    const double mant_min = -mant_max;
+    double d;
+    res = SWIG_AsVal_double (obj,&d);
+    if (SWIG_IsOK(res) && !SWIG_CanCastAsInteger(&d, mant_min, mant_max))
+      return SWIG_OverflowError;
+    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
+      if (val) *val = (long long)(d);
+      return SWIG_AddCast(res);
+    }
+    res = SWIG_TypeError;
+  }
+#endif
+  return res;
+}
+#endif
+
+
 SWIGINTERNINLINE int
 SWIG_AsVal_ptrdiff_t (PyObject * obj, ptrdiff_t *val)
 {
-  long v;
-  int res = SWIG_AsVal_long (obj, val ? &v : 0);
-  if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+  int res = SWIG_TypeError;
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(ptrdiff_t) <= sizeof(long)) {
+#endif
+    long v;
+    res = SWIG_AsVal_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else if (sizeof(ptrdiff_t) <= sizeof(long long)) {
+    long long v;
+    res = SWIG_AsVal_long_SS_long (obj, val ? &v : 0);
+    if (SWIG_IsOK(res) && val) *val = static_cast< ptrdiff_t >(v);
+  }
+#endif
   return res;
 }
 
@@ -4289,8 +4425,21 @@ namespace swig {
     return traits<typename noconst_traits<Type >::noconst_type >::type_name();
   }
 
-  template <class Type>
-  struct traits_info {
+  template <class Type> struct traits_info {
+    static swig_type_info *type_query(std::string name) {
+      name += " *";
+      return SWIG_TypeQuery(name.c_str());
+    }
+    static swig_type_info *type_info() {
+      static swig_type_info *info = type_query(type_name<Type>());
+      return info;
+    }
+  };
+
+  /*
+    Partial specialization for pointers (traits_info)
+  */
+  template <class Type> struct traits_info<Type *> {
     static swig_type_info *type_query(std::string name) {
       name += " *";
       return SWIG_TypeQuery(name.c_str());
@@ -4307,7 +4456,7 @@ namespace swig {
   }
 
   /*
-    Partial specialization for pointers
+    Partial specialization for pointers (traits)
   */
   template <class Type> struct traits <Type *> {
     typedef pointer_category category;
@@ -4377,7 +4526,8 @@ namespace swig {
   struct traits_asptr {   
     static int asptr(PyObject *obj, Type **val) {
       Type *p;
-      int res = SWIG_ConvertPtr(obj, (void**)&p, type_info<Type>(), 0);
+      swig_type_info *descriptor = type_info<Type>();
+      int res = descriptor ? SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0) : SWIG_ERROR;
       if (SWIG_IsOK(res)) {
 	if (val) *val = p;
       }
@@ -4525,7 +4675,7 @@ namespace swig {
 
 namespace std {
   template <>
-  struct less <PyObject *>: public binary_function<PyObject *, PyObject *, bool>
+  struct less <PyObject *>
   {
     bool
     operator()(PyObject * v, PyObject *w) const
@@ -4550,7 +4700,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigPtr_PyObject>: public binary_function<swig::SwigPtr_PyObject, swig::SwigPtr_PyObject, bool>
+  struct less <swig::SwigPtr_PyObject>
   {
     bool
     operator()(const swig::SwigPtr_PyObject& v, const swig::SwigPtr_PyObject& w) const
@@ -4560,7 +4710,7 @@ namespace std {
   };
 
   template <>
-  struct less <swig::SwigVar_PyObject>: public binary_function<swig::SwigVar_PyObject, swig::SwigVar_PyObject, bool>
+  struct less <swig::SwigVar_PyObject>
   {
     bool
     operator()(const swig::SwigVar_PyObject& v, const swig::SwigVar_PyObject& w) const
@@ -4623,7 +4773,7 @@ namespace swig {
     if (step == 0) {
       throw std::invalid_argument("slice step cannot be zero");
     } else if (step > 0) {
-      // Required range: 0 <= i < size, 0 <= j < size
+      // Required range: 0 <= i < size, 0 <= j < size, i <= j
       if (i < 0) {
         ii = 0;
       } else if (i < (Difference)size) {
@@ -4631,13 +4781,15 @@ namespace swig {
       } else if (insert && (i >= (Difference)size)) {
         ii = (Difference)size;
       }
-      if ( j < 0 ) {
+      if (j < 0) {
         jj = 0;
       } else {
         jj = (j < (Difference)size) ? j : (Difference)size;
       }
+      if (jj < ii)
+        jj = ii;
     } else {
-      // Required range: -1 <= i < size-1, -1 <= j < size-1
+      // Required range: -1 <= i < size-1, -1 <= j < size-1, i >= j
       if (i < -1) {
         ii = -1;
       } else if (i < (Difference) size) {
@@ -4650,6 +4802,8 @@ namespace swig {
       } else {
         jj = (j < (Difference)size ) ? j : (Difference)(size-1);
       }
+      if (ii < jj)
+        ii = jj;
     }
   }
 
@@ -4675,6 +4829,13 @@ namespace swig {
     seq->erase(position);
   }
 
+  template <class Sequence>
+  struct traits_reserve {
+    static void reserve(Sequence & /*seq*/, typename Sequence::size_type /*n*/) {
+      // This should be specialized for types that support reserve
+    }
+  };
+
   template <class Sequence, class Difference>
   inline Sequence*
   getslice(const Sequence* self, Difference i, Difference j, Py_ssize_t step) {
@@ -4692,6 +4853,7 @@ namespace swig {
         return new Sequence(sb, se);
       } else {
         Sequence *sequence = new Sequence();
+        swig::traits_reserve<Sequence>::reserve(*sequence, (jj - ii + step - 1) / step);
         typename Sequence::const_iterator it = sb;
         while (it!=se) {
           sequence->push_back(*it);
@@ -4702,17 +4864,16 @@ namespace swig {
       } 
     } else {
       Sequence *sequence = new Sequence();
-      if (ii > jj) {
-        typename Sequence::const_reverse_iterator sb = self->rbegin();
-        typename Sequence::const_reverse_iterator se = self->rbegin();
-        std::advance(sb,size-ii-1);
-        std::advance(se,size-jj-1);
-        typename Sequence::const_reverse_iterator it = sb;
-        while (it!=se) {
-          sequence->push_back(*it);
-          for (Py_ssize_t c=0; c<-step && it!=se; ++c)
-            it++;
-        }
+      swig::traits_reserve<Sequence>::reserve(*sequence, (ii - jj - step - 1) / -step);
+      typename Sequence::const_reverse_iterator sb = self->rbegin();
+      typename Sequence::const_reverse_iterator se = self->rbegin();
+      std::advance(sb,size-ii-1);
+      std::advance(se,size-jj-1);
+      typename Sequence::const_reverse_iterator it = sb;
+      while (it!=se) {
+        sequence->push_back(*it);
+        for (Py_ssize_t c=0; c<-step && it!=se; ++c)
+          it++;
       }
       return sequence;
     }
@@ -4726,12 +4887,11 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
-      if (jj < ii)
-        jj = ii;
       if (step == 1) {
         size_t ssize = jj - ii;
         if (ssize <= is.size()) {
           // expanding/staying the same size
+          swig::traits_reserve<Sequence>::reserve(*self, self->size() - ssize + is.size());
           typename Sequence::iterator sb = self->begin();
           typename InputSeq::const_iterator isit = is.begin();
           std::advance(sb,ii);
@@ -4765,8 +4925,6 @@ namespace swig {
         }
       }
     } else {
-      if (jj > ii)
-        jj = ii;
       size_t replacecount = (ii - jj - step - 1) / -step;
       if (is.size() != replacecount) {
         char msg[1024];
@@ -4792,37 +4950,33 @@ namespace swig {
     Difference jj = 0;
     swig::slice_adjust(i, j, step, size, ii, jj, true);
     if (step > 0) {
-      if (jj > ii) {
-        typename Sequence::iterator sb = self->begin();
-        std::advance(sb,ii);
-        if (step == 1) {
-          typename Sequence::iterator se = self->begin();
-          std::advance(se,jj);
-          self->erase(sb,se);
-        } else {
-          typename Sequence::iterator it = sb;
-          size_t delcount = (jj - ii + step - 1) / step;
-          while (delcount) {
-            it = self->erase(it);
-            for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
-              it++;
-            delcount--;
-          }
-        }
-      }
-    } else {
-      if (ii > jj) {
-        typename Sequence::reverse_iterator sb = self->rbegin();
-        std::advance(sb,size-ii-1);
-        typename Sequence::reverse_iterator it = sb;
-        size_t delcount = (ii - jj - step - 1) / -step;
+      typename Sequence::iterator sb = self->begin();
+      std::advance(sb,ii);
+      if (step == 1) {
+        typename Sequence::iterator se = self->begin();
+        std::advance(se,jj);
+        self->erase(sb,se);
+      } else {
+        typename Sequence::iterator it = sb;
+        size_t delcount = (jj - ii + step - 1) / step;
         while (delcount) {
-          it = typename Sequence::reverse_iterator(self->erase((++it).base()));
-          for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
+          it = self->erase(it);
+          for (Py_ssize_t c=0; c<(step-1) && it != self->end(); ++c)
             it++;
           delcount--;
         }
       }
+    } else {
+      typename Sequence::reverse_iterator sb = self->rbegin();
+      std::advance(sb,size-ii-1);
+      typename Sequence::reverse_iterator it = sb;
+      size_t delcount = (ii - jj - step - 1) / -step;
+      while (delcount) {
+        it = typename Sequence::reverse_iterator(self->erase((++it).base()));
+        for (Py_ssize_t c=0; c<(-step-1) && it != self->rend(); ++c)
+          it++;
+        delcount--;
+      }
     }
   }
 }
@@ -5321,8 +5475,8 @@ namespace swig {
     static int asptr(PyObject *obj, sequence **seq) {
       if (obj == Py_None || SWIG_Python_GetSwigThis(obj)) {
 	sequence *p;
-	if (::SWIG_ConvertPtr(obj,(void**)&p,
-			      swig::type_info<sequence>(),0) == SWIG_OK) {
+	swig_type_info *descriptor = swig::type_info<sequence>();
+	if (descriptor && SWIG_IsOK(::SWIG_ConvertPtr(obj, (void **)&p, descriptor, 0))) {
 	  if (seq) *seq = p;
 	  return SWIG_OLDOBJ;
 	}
@@ -5361,7 +5515,7 @@ namespace swig {
 #ifdef SWIG_PYTHON_EXTRA_NATIVE_CONTAINERS
       swig_type_info *desc = swig::type_info<sequence>();
       if (desc && desc->clientdata) {
-	return SWIG_NewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
+	return SWIG_InternalNewPointerObj(new sequence(seq), desc, SWIG_POINTER_OWN);
       }
 #endif
       size_type size = seq.size();
@@ -5382,6 +5536,13 @@ namespace swig {
 
 
   namespace swig {
+    template <class T>
+    struct traits_reserve<std::vector<T> > {
+      static void reserve(std::vector<T> &seq, typename std::vector<T>::size_type n) {
+        seq.reserve(n);
+      }
+    };
+
     template <class T>
     struct traits_asptr<std::vector<T> >  {
       static int asptr(PyObject *obj, std::vector<T> **vec) {
@@ -5424,14 +5585,33 @@ SWIGINTERNINLINE PyObject*
 SWIG_From_unsigned_SS_long  (unsigned long value)
 {
   return (value > LONG_MAX) ?
-    PyLong_FromUnsignedLong(value) : PyLong_FromLong(static_cast< long >(value)); 
+    PyLong_FromUnsignedLong(value) : PyInt_FromLong(static_cast< long >(value));
 }
 
 
+#ifdef SWIG_LONG_LONG_AVAILABLE
+SWIGINTERNINLINE PyObject* 
+SWIG_From_unsigned_SS_long_SS_long  (unsigned long long value)
+{
+  return (value > LONG_MAX) ?
+    PyLong_FromUnsignedLongLong(value) : PyInt_FromLong(static_cast< long >(value));
+}
+#endif
+
+
 SWIGINTERNINLINE PyObject *
 SWIG_From_size_t  (size_t value)
 {    
-  return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  if (sizeof(size_t) <= sizeof(unsigned long)) {
+#endif
+    return SWIG_From_unsigned_SS_long  (static_cast< unsigned long >(value));
+#ifdef SWIG_LONG_LONG_AVAILABLE
+  } else {
+    /* assume sizeof(size_t) <= sizeof(unsigned long long) */
+    return SWIG_From_unsigned_SS_long_SS_long  (static_cast< unsigned long long >(value));
+  }
+#endif
 }
 
 SWIGINTERN std::vector< double,std::allocator< double > > *std_vector_Sl_double_Sg____getslice__(std::vector< double > *self,std::vector< double >::difference_type i,std::vector< double >::difference_type j){
@@ -5615,16 +5795,6 @@ SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vect
 SWIGINTERN std::vector< std::vector< double > >::iterator std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_0(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::value_type const &x){ return self->insert(pos, x); }
 SWIGINTERN void std_vector_Sl_std_vector_Sl_double_Sg__Sg__insert__SWIG_1(std::vector< std::vector< double > > *self,std::vector< std::vector< double > >::iterator pos,std::vector< std::vector< double > >::size_type n,std::vector< std::vector< double > >::value_type const &x){ self->insert(pos, n, x); }
 
-#include <limits.h>
-#if !defined(SWIG_NO_LLONG_MAX)
-# if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
-#   define LLONG_MAX __LONG_LONG_MAX__
-#   define LLONG_MIN (-LLONG_MAX - 1LL)
-#   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
-# endif
-#endif
-
-
 SWIGINTERN int
 SWIG_AsVal_int (PyObject * obj, int *val)
 {
@@ -6003,7 +6173,7 @@ SWIG_AsVal_std_complex_Sl_double_Sg_  (PyObject *o, std::complex<double>* val)
 
 
 SWIGINTERNINLINE PyObject*
-SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/share/swig3.0/typemaps/swigmacros.swg,104,%ifcplusplus@*/
+SWIG_From_std_complex_Sl_double_Sg_  (/*@SWIG:/usr/local/share/swig/3.0.12/typemaps/swigmacros.swg,104,%ifcplusplus@*/
 
 const std::complex<double>&
 
@@ -6153,13 +6323,18 @@ SWIGINTERN int
 SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 {
 #if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+  if (PyBytes_Check(obj))
+#else
   if (PyUnicode_Check(obj))
+#endif
 #else  
   if (PyString_Check(obj))
 #endif
   {
     char *cstr; Py_ssize_t len;
 #if PY_VERSION_HEX>=0x03000000
+#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
     if (!alloc && cptr) {
         /* We can't allow converting without allocation, since the internal
            representation of string in Python 3 is UCS-2/UCS-4 but we require
@@ -6168,8 +6343,9 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
         return SWIG_RuntimeError;
     }
     obj = PyUnicode_AsUTF8String(obj);
-    PyBytes_AsStringAndSize(obj, &cstr, &len);
     if(alloc) *alloc = SWIG_NEWOBJ;
+#endif
+    PyBytes_AsStringAndSize(obj, &cstr, &len);
 #else
     PyString_AsStringAndSize(obj, &cstr, &len);
 #endif
@@ -6190,26 +6366,34 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
 	if (*alloc == SWIG_NEWOBJ) 
 #endif
 	{
-	  *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+	  *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
 	  *alloc = SWIG_NEWOBJ;
 	} else {
 	  *cptr = cstr;
 	  *alloc = SWIG_OLDOBJ;
 	}
       } else {
-	#if PY_VERSION_HEX>=0x03000000
-	assert(0); /* Should never reach here in Python 3 */
-	#endif
+#if PY_VERSION_HEX>=0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+	*cptr = PyBytes_AsString(obj);
+#else
+	assert(0); /* Should never reach here with Unicode strings in Python 3 */
+#endif
+#else
 	*cptr = SWIG_Python_str_AsChar(obj);
+#endif
       }
     }
     if (psize) *psize = len + 1;
-#if PY_VERSION_HEX>=0x03000000
+#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
     Py_XDECREF(obj);
 #endif
     return SWIG_OK;
   } else {
 #if defined(SWIG_PYTHON_2_UNICODE)
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
+#endif
 #if PY_VERSION_HEX<0x03000000
     if (PyUnicode_Check(obj)) {
       char *cstr; Py_ssize_t len;
@@ -6220,7 +6404,7 @@ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
       if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
         if (cptr) {
           if (alloc) *alloc = SWIG_NEWOBJ;
-          *cptr = reinterpret_cast< char* >(memcpy((new char[len + 1]), cstr, sizeof(char)*(len + 1)));
+          *cptr = reinterpret_cast< char* >(memcpy(new char[len + 1], cstr, sizeof(char)*(len + 1)));
         }
         if (psize) *psize = len + 1;
 
@@ -6307,11 +6491,15 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
 	SWIG_InternalNewPointerObj(const_cast< char * >(carray), pchar_descriptor, 0) : SWIG_Py_Void();
     } else {
 #if PY_VERSION_HEX >= 0x03000000
+#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+      return PyBytes_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
+#else
 #if PY_VERSION_HEX >= 0x03010000
       return PyUnicode_DecodeUTF8(carray, static_cast< Py_ssize_t >(size), "surrogateescape");
 #else
       return PyUnicode_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
+#endif
 #else
       return PyString_FromStringAndSize(carray, static_cast< Py_ssize_t >(size));
 #endif
@@ -7194,44 +7382,6 @@ struct SWIG_null_deleter {
 
 #define SWIG_NO_NULL_DELETER_SWIG_BUILTIN_INIT
 
-
-SWIGINTERN int
-SWIG_AsVal_long_SS_long (PyObject *obj, long long *val)
-{
-  int res = SWIG_TypeError;
-  if (PyLong_Check(obj)) {
-    long long v = PyLong_AsLongLong(obj);
-    if (!PyErr_Occurred()) {
-      if (val) *val = v;
-      return SWIG_OK;
-    } else {
-      PyErr_Clear();
-      res = SWIG_OverflowError;
-    }
-  } else {
-    long v;
-    res = SWIG_AsVal_long (obj,&v);
-    if (SWIG_IsOK(res)) {
-      if (val) *val = v;
-      return res;
-    }
-  }
-#ifdef SWIG_PYTHON_CAST_MODE
-  {
-    const double mant_max = 1LL << DBL_MANT_DIG;
-    const double mant_min = -mant_max;
-    double d;
-    res = SWIG_AsVal_double (obj,&d);
-    if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, mant_min, mant_max)) {
-      if (val) *val = (long long)(d);
-      return SWIG_AddCast(res);
-    }
-    res = SWIG_TypeError;
-  }
-#endif
-  return res;
-}
-
 SWIGINTERN RealParameter *IMultiLayerBuilder_registerParameter(IMultiLayerBuilder *self,std::string const &name,int64_t parpointer){
         return &((*(self)).registerParameter(name, (double*)parpointer)); }
 SWIGINTERN void IMultiLayerBuilder_setParameterValue(IMultiLayerBuilder *self,std::string const &name,double value){
@@ -7543,8 +7693,8 @@ ParameterPool *SwigDirector_IParameterized::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7577,8 +7727,8 @@ void SwigDirector_IParameterized::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7619,8 +7769,8 @@ ParameterPool *SwigDirector_INode::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7653,8 +7803,8 @@ void SwigDirector_INode::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7682,8 +7832,8 @@ void SwigDirector_INode::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7710,8 +7860,8 @@ std::string SwigDirector_INode::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -7749,8 +7899,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_INode:
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -7785,8 +7935,8 @@ void SwigDirector_INode::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -7827,8 +7977,8 @@ ISample *SwigDirector_ISample::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -7861,8 +8011,8 @@ void SwigDirector_ISample::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -7893,8 +8043,8 @@ ParameterPool *SwigDirector_ISample::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -7927,8 +8077,8 @@ void SwigDirector_ISample::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -7956,8 +8106,8 @@ void SwigDirector_ISample::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -7984,8 +8134,8 @@ std::string SwigDirector_ISample::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -8020,8 +8170,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_ISampl
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -8057,8 +8207,8 @@ void SwigDirector_ISample::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -8089,8 +8239,8 @@ Material const *SwigDirector_ISample::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8129,14 +8279,14 @@ SwigDirector_IObservable::~SwigDirector_IObservable() {
 
 void SwigDirector_IObservable::attachObserver(IObservable::observer_t obj) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&obj), SWIGTYPE_p_std__shared_ptrT_IObserver_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new IObservable::observer_t((const IObservable::observer_t &)obj)), SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IObservable.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "attachObserver";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "attachObserver";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"attachObserver", (char *)"(O)" ,(PyObject *)obj0);
@@ -8162,8 +8312,8 @@ void SwigDirector_IObservable::notifyObservers() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "notifyObservers";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "notifyObservers";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "notifyObservers", NULL);
@@ -8201,8 +8351,8 @@ void SwigDirector_IFitObserver::notify(IObservable *subject) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "notify";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "notify";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"notify", (char *)"(O)" ,(PyObject *)obj0);
@@ -8230,8 +8380,8 @@ void SwigDirector_IFitObserver::update(FitSuite *fit_suite) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "update";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "update";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"update", (char *)"(O)" ,(PyObject *)obj0);
@@ -8272,8 +8422,8 @@ ParameterPool *SwigDirector_IMultiLayerBuilder::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8306,8 +8456,8 @@ void SwigDirector_IMultiLayerBuilder::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8338,8 +8488,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::buildSample() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "buildSample";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "buildSample";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "buildSample", NULL);
@@ -8379,8 +8529,8 @@ MultiLayer *SwigDirector_IMultiLayerBuilder::createSample(size_t index) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "createSample";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createSample";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"createSample", (char *)"(O)" ,(PyObject *)obj0);
@@ -8414,8 +8564,8 @@ size_t SwigDirector_IMultiLayerBuilder::size() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "size";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "size";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "size", NULL);
@@ -8463,8 +8613,8 @@ IFormFactor *SwigDirector_IFormFactor::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -8497,8 +8647,8 @@ void SwigDirector_IFormFactor::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -8529,8 +8679,8 @@ ParameterPool *SwigDirector_IFormFactor::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -8563,8 +8713,8 @@ void SwigDirector_IFormFactor::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -8592,8 +8742,8 @@ void SwigDirector_IFormFactor::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -8620,8 +8770,8 @@ std::string SwigDirector_IFormFactor::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -8656,8 +8806,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -8693,8 +8843,8 @@ void SwigDirector_IFormFactor::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -8725,8 +8875,8 @@ Material const *SwigDirector_IFormFactor::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -8755,14 +8905,14 @@ Material const *SwigDirector_IFormFactor::material() const {
 
 void SwigDirector_IFormFactor::setAmbientMaterial(Material arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_Material,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new Material((const Material &)arg0)), SWIGTYPE_p_Material, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "setAmbientMaterial";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setAmbientMaterial";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -8791,8 +8941,8 @@ complex_t SwigDirector_IFormFactor::evaluate(WavevectorInfo const &wavevectors)
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -8826,8 +8976,8 @@ double SwigDirector_IFormFactor::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "volume";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "volume";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -8861,8 +9011,8 @@ double SwigDirector_IFormFactor::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char * const swig_method_name = "radialExtension";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "radialExtension";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -8898,8 +9048,8 @@ double SwigDirector_IFormFactor::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char * const swig_method_name = "bottomZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "bottomZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8935,8 +9085,8 @@ double SwigDirector_IFormFactor::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char * const swig_method_name = "topZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "topZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -8963,37 +9113,6 @@ double SwigDirector_IFormFactor::topZ(IRotation const &rotation) const {
 }
 
 
-void SwigDirector_IFormFactor::setSpecularInfo(ILayerRTCoefficients const *arg0, ILayerRTCoefficients const *arg1) {
-  swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(arg0), SWIGTYPE_p_ILayerRTCoefficients,  0 );
-  swig::SwigVar_PyObject obj1;
-  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(arg1), SWIGTYPE_p_ILayerRTCoefficients,  0 );
-  if (!swig_get_self()) {
-    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
-  }
-#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 15;
-  const char * const swig_method_name = "setSpecularInfo";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
-  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
-#else
-  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
-#endif
-  if (!result) {
-    PyObject *error = PyErr_Occurred();
-    {
-      if( error != NULL ) {
-        PyObject *ptype, *pvalue, *ptraceback;
-        PyErr_Fetch( &ptype, &pvalue, &ptraceback );
-        PyErr_Restore( ptype, pvalue, ptraceback );
-        PyErr_Print();
-        Py_Exit(1);
-      }
-    }
-  }
-}
-
-
 bool SwigDirector_IFormFactor::canSliceAnalytically(IRotation const &rot) const {
   bool c_result;
   swig::SwigVar_PyObject obj0;
@@ -9003,9 +9122,9 @@ bool SwigDirector_IFormFactor::canSliceAnalytically(IRotation const &rot) const
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 16;
-  const char * const swig_method_name = "canSliceAnalytically";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const size_t swig_method_index = 15;
+  const char *const swig_method_name = "canSliceAnalytically";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -9040,19 +9159,19 @@ IFormFactor *SwigDirector_IFormFactor::sliceFormFactor(ZLimits limits, IRotation
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactor.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 17;
-  const char * const swig_method_name = "sliceFormFactor";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const size_t swig_method_index = 16;
+  const char *const swig_method_name = "sliceFormFactor";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -9101,8 +9220,8 @@ IFormFactorBorn *SwigDirector_IFormFactorBorn::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -9135,8 +9254,8 @@ void SwigDirector_IFormFactorBorn::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -9167,8 +9286,8 @@ ParameterPool *SwigDirector_IFormFactorBorn::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -9201,8 +9320,8 @@ void SwigDirector_IFormFactorBorn::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -9230,8 +9349,8 @@ void SwigDirector_IFormFactorBorn::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -9258,8 +9377,8 @@ std::string SwigDirector_IFormFactorBorn::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9294,8 +9413,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IFormF
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -9331,8 +9450,8 @@ void SwigDirector_IFormFactorBorn::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -9363,8 +9482,8 @@ Material const *SwigDirector_IFormFactorBorn::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -9393,14 +9512,14 @@ Material const *SwigDirector_IFormFactorBorn::material() const {
 
 void SwigDirector_IFormFactorBorn::setAmbientMaterial(Material arg0) {
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&arg0), SWIGTYPE_p_Material,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new Material((const Material &)arg0)), SWIGTYPE_p_Material, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "setAmbientMaterial";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setAmbientMaterial";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setAmbientMaterial", (char *)"(O)" ,(PyObject *)obj0);
@@ -9429,8 +9548,8 @@ complex_t SwigDirector_IFormFactorBorn::evaluate(WavevectorInfo const &wavevecto
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -9464,8 +9583,8 @@ double SwigDirector_IFormFactorBorn::volume() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "volume";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "volume";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "volume", NULL);
@@ -9499,8 +9618,8 @@ double SwigDirector_IFormFactorBorn::radialExtension() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 12;
-  const char * const swig_method_name = "radialExtension";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "radialExtension";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "radialExtension", NULL);
@@ -9536,8 +9655,8 @@ double SwigDirector_IFormFactorBorn::bottomZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 13;
-  const char * const swig_method_name = "bottomZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "bottomZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"bottomZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9573,8 +9692,8 @@ double SwigDirector_IFormFactorBorn::topZ(IRotation const &rotation) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 14;
-  const char * const swig_method_name = "topZ";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "topZ";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"topZ", (char *)"(O)" ,(PyObject *)obj0);
@@ -9601,37 +9720,6 @@ double SwigDirector_IFormFactorBorn::topZ(IRotation const &rotation) const {
 }
 
 
-void SwigDirector_IFormFactorBorn::setSpecularInfo(ILayerRTCoefficients const *arg0, ILayerRTCoefficients const *arg1) {
-  swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(arg0), SWIGTYPE_p_ILayerRTCoefficients,  0 );
-  swig::SwigVar_PyObject obj1;
-  obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(arg1), SWIGTYPE_p_ILayerRTCoefficients,  0 );
-  if (!swig_get_self()) {
-    Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
-  }
-#if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 15;
-  const char * const swig_method_name = "setSpecularInfo";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
-  swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
-#else
-  swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setSpecularInfo", (char *)"(OO)" ,(PyObject *)obj0,(PyObject *)obj1);
-#endif
-  if (!result) {
-    PyObject *error = PyErr_Occurred();
-    {
-      if( error != NULL ) {
-        PyObject *ptype, *pvalue, *ptraceback;
-        PyErr_Fetch( &ptype, &pvalue, &ptraceback );
-        PyErr_Restore( ptype, pvalue, ptraceback );
-        PyErr_Print();
-        Py_Exit(1);
-      }
-    }
-  }
-}
-
-
 bool SwigDirector_IFormFactorBorn::canSliceAnalytically(IRotation const &rot) const {
   bool c_result;
   swig::SwigVar_PyObject obj0;
@@ -9641,9 +9729,9 @@ bool SwigDirector_IFormFactorBorn::canSliceAnalytically(IRotation const &rot) co
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 16;
-  const char * const swig_method_name = "canSliceAnalytically";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const size_t swig_method_index = 15;
+  const char *const swig_method_name = "canSliceAnalytically";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"canSliceAnalytically", (char *)"(O)" ,(PyObject *)obj0);
@@ -9678,19 +9766,19 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
   
   IFormFactor *c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&limits), SWIGTYPE_p_ZLimits,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new ZLimits((const ZLimits &)limits)), SWIGTYPE_p_ZLimits, SWIG_POINTER_OWN |  0 );
   swig::SwigVar_PyObject obj1;
   obj1 = SWIG_NewPointerObj(SWIG_as_voidptr(&rot), SWIGTYPE_p_IRotation,  0 );
   swig::SwigVar_PyObject obj2;
-  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(&translation), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj2 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)translation)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   swig_set_inner("sliceFormFactor", true);
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 17;
-  const char * const swig_method_name = "sliceFormFactor";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const size_t swig_method_index = 16;
+  const char *const swig_method_name = "sliceFormFactor";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"sliceFormFactor", (char *)"(OOO)" ,(PyObject *)obj0,(PyObject *)obj1,(PyObject *)obj2);
@@ -9721,14 +9809,14 @@ IFormFactor *SwigDirector_IFormFactorBorn::sliceFormFactor(ZLimits limits, IRota
 complex_t SwigDirector_IFormFactorBorn::evaluate_for_q(cvector_t q) const {
   complex_t c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new cvector_t((const cvector_t &)q)), SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IFormFactorBorn.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
-  const size_t swig_method_index = 18;
-  const char * const swig_method_name = "evaluate_for_q";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const size_t swig_method_index = 17;
+  const char *const swig_method_name = "evaluate_for_q";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate_for_q", (char *)"(O)" ,(PyObject *)obj0);
@@ -9776,8 +9864,8 @@ IInterferenceFunction *SwigDirector_IInterferenceFunction::clone() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 0;
-  const char * const swig_method_name = "clone";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "clone";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "clone", NULL);
@@ -9810,8 +9898,8 @@ void SwigDirector_IInterferenceFunction::transferToCPP() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 1;
-  const char * const swig_method_name = "transferToCPP";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "transferToCPP";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "transferToCPP", NULL);
@@ -9842,8 +9930,8 @@ ParameterPool *SwigDirector_IInterferenceFunction::createParameterTree() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 2;
-  const char * const swig_method_name = "createParameterTree";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "createParameterTree";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "createParameterTree", NULL);
@@ -9876,8 +9964,8 @@ void SwigDirector_IInterferenceFunction::onChange() {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 3;
-  const char * const swig_method_name = "onChange";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "onChange";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "onChange", NULL);
@@ -9905,8 +9993,8 @@ void SwigDirector_IInterferenceFunction::accept(INodeVisitor *visitor) const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 4;
-  const char * const swig_method_name = "accept";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "accept";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"accept", (char *)"(O)" ,(PyObject *)obj0);
@@ -9933,8 +10021,8 @@ std::string SwigDirector_IInterferenceFunction::treeToString() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 5;
-  const char * const swig_method_name = "treeToString";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "treeToString";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "treeToString", NULL);
@@ -9969,8 +10057,8 @@ std::vector< INode const *,std::allocator< INode const * > > SwigDirector_IInter
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 6;
-  const char * const swig_method_name = "getChildren";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getChildren";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getChildren", NULL);
@@ -10006,8 +10094,8 @@ void SwigDirector_IInterferenceFunction::setParent(INode const *newParent) {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 7;
-  const char * const swig_method_name = "setParent";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "setParent";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"setParent", (char *)"(O)" ,(PyObject *)obj0);
@@ -10038,8 +10126,8 @@ Material const *SwigDirector_IInterferenceFunction::material() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 8;
-  const char * const swig_method_name = "material";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "material";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "material", NULL);
@@ -10069,14 +10157,14 @@ Material const *SwigDirector_IInterferenceFunction::material() const {
 double SwigDirector_IInterferenceFunction::evaluate(kvector_t const q) const {
   double c_result;
   swig::SwigVar_PyObject obj0;
-  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(&q), SWIGTYPE_p_BasicVector3DT_double_t,  0 );
+  obj0 = SWIG_NewPointerObj(SWIG_as_voidptr(new kvector_t((const kvector_t &)q)), SWIGTYPE_p_BasicVector3DT_double_t, SWIG_POINTER_OWN |  0 );
   if (!swig_get_self()) {
     Swig::DirectorException::raise("'self' uninitialized, maybe you forgot to call IInterferenceFunction.__init__.");
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 9;
-  const char * const swig_method_name = "evaluate";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "evaluate";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, (char *)"(O)" ,(PyObject *)obj0);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *)"evaluate", (char *)"(O)" ,(PyObject *)obj0);
@@ -10110,8 +10198,8 @@ double SwigDirector_IInterferenceFunction::kappa() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 10;
-  const char * const swig_method_name = "kappa";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "kappa";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "kappa", NULL);
@@ -10145,8 +10233,8 @@ double SwigDirector_IInterferenceFunction::getParticleDensity() const {
   }
 #if defined(SWIG_PYTHON_DIRECTOR_VTABLE)
   const size_t swig_method_index = 11;
-  const char * const swig_method_name = "getParticleDensity";
-  PyObject* method = swig_get_method(swig_method_index, swig_method_name);
+  const char *const swig_method_name = "getParticleDensity";
+  PyObject *method = swig_get_method(swig_method_index, swig_method_name);
   swig::SwigVar_PyObject result = PyObject_CallFunction(method, NULL, NULL);
 #else
   swig::SwigVar_PyObject result = PyObject_CallMethod(swig_get_self(), (char *) "getParticleDensity", NULL);
@@ -11021,22 +11109,11 @@ fail:
 
 SWIGINTERN PyObject *SwigPyIterator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_swig__SwigPyIterator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
 
-SWIGINTERN PyObject *SHARED_PTR_DISOWN_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
-  return SWIG_Py_Void();
-}
-
-
 SWIGINTERN PyObject *_wrap_vdouble1d_t_iterator(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< double > *arg1 = (std::vector< double > *) 0 ;
@@ -12950,7 +13027,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble1d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -14898,7 +14975,7 @@ fail:
 
 SWIGINTERN PyObject *vdouble2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(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_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -16816,7 +16893,7 @@ fail:
 
 SWIGINTERN PyObject *vector_integer_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -18764,7 +18841,7 @@ fail:
 
 SWIGINTERN PyObject *vinteger2d_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(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_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -20682,7 +20759,7 @@ fail:
 
 SWIGINTERN PyObject *vector_longinteger_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -22600,7 +22677,7 @@ fail:
 
 SWIGINTERN PyObject *vector_complex_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24548,7 +24625,7 @@ fail:
 
 SWIGINTERN PyObject *vector_string_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24766,7 +24843,7 @@ fail:
 
 SWIGINTERN PyObject *ICloneable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ICloneable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -24941,7 +25018,7 @@ fail:
 
 SWIGINTERN PyObject *INamed_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INamed, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -25770,7 +25847,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterized_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterized, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -26216,7 +26293,7 @@ fail:
 
 SWIGINTERN PyObject *INode_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INode, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -28113,7 +28190,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_p_std__allocatorT_INode_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -30010,7 +30087,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_const_inode_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_INode_const_p_std__allocatorT_INode_const_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -31926,7 +32003,7 @@ fail:
 
 SWIGINTERN PyObject *swig_dummy_type_axisinfo_vector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_AxisInfo_std__allocatorT_AxisInfo_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -32734,7 +32811,7 @@ fail:
 
 SWIGINTERN PyObject *kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -34650,7 +34727,7 @@ fail:
 
 SWIGINTERN PyObject *vector_kvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_double_t_std__allocatorT_BasicVector3DT_double_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -35196,7 +35273,7 @@ fail:
 
 SWIGINTERN PyObject *cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicVector3DT_std__complexT_double_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37112,7 +37189,7 @@ fail:
 
 SWIGINTERN PyObject *vector_cvector_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_BasicVector3DT_std__complexT_double_t_t_std__allocatorT_BasicVector3DT_std__complexT_double_t_t_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -37771,7 +37848,7 @@ fail:
 
 SWIGINTERN PyObject *WavevectorInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_WavevectorInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38255,7 +38332,7 @@ fail:
 
 SWIGINTERN PyObject *Beam_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Beam, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38516,7 +38593,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -38888,7 +38965,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DKVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DKVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39226,7 +39303,7 @@ fail:
 
 SWIGINTERN PyObject *Bin1DCVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Bin1DCVector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -39725,7 +39802,7 @@ fail:
 
 SWIGINTERN PyObject *IAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40140,7 +40217,7 @@ fail:
 
 SWIGINTERN PyObject *VariableBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VariableBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40286,7 +40363,7 @@ fail:
 
 SWIGINTERN PyObject *ConstKBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ConstKBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40485,7 +40562,7 @@ fail:
 
 SWIGINTERN PyObject *CustomBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_CustomBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40681,7 +40758,7 @@ fail:
 
 SWIGINTERN PyObject *IShape2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IShape2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -40859,7 +40936,7 @@ fail:
 
 SWIGINTERN PyObject *ISample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41270,7 +41347,7 @@ fail:
 
 SWIGINTERN PyObject *IChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41352,7 +41429,7 @@ fail:
 
 SWIGINTERN PyObject *IObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41506,7 +41583,7 @@ fail:
 
 SWIGINTERN PyObject *IObservable_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IObservable, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41725,7 +41802,7 @@ fail:
 
 SWIGINTERN PyObject *IFitObserver_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IFitObserver_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41826,7 +41903,7 @@ fail:
 
 SWIGINTERN PyObject *IFitStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFitStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41910,7 +41987,7 @@ fail:
 
 SWIGINTERN PyObject *FitStrategyDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitStrategyDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -41991,7 +42068,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42085,7 +42162,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionLog_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionLog, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42179,7 +42256,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityFunctionSqrt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityFunctionSqrt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42326,7 +42403,7 @@ fail:
 
 SWIGINTERN PyObject *IIntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IIntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42621,7 +42698,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -42849,7 +42926,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityScaleAndShiftNormalizer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityScaleAndShiftNormalizer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43068,7 +43145,7 @@ fail:
 
 SWIGINTERN PyObject *ISquaredFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISquaredFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43300,7 +43377,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionDefault_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionDefault, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43430,7 +43507,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSimError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSimError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43560,7 +43637,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionMeanSquaredError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionMeanSquaredError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43690,7 +43767,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionSystematicError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionSystematicError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43820,7 +43897,7 @@ fail:
 
 SWIGINTERN PyObject *SquaredFunctionGaussianError_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquaredFunctionGaussianError, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -43996,7 +44073,7 @@ fail:
 
 SWIGINTERN PyObject *ChiSquaredModule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ChiSquaredModule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -44459,7 +44536,7 @@ fail:
 
 SWIGINTERN PyObject *FitObject_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitObject, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -44604,7 +44681,7 @@ fail:
 
 SWIGINTERN PyObject *FitOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -45289,7 +45366,7 @@ fail:
 
 SWIGINTERN PyObject *FitParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -47408,7 +47485,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuite_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuite, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -48009,7 +48086,7 @@ fail:
 
 SWIGINTERN PyObject *FitSuiteObjects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FitSuiteObjects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -48579,28 +48656,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *FORWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
-  return SWIG_Py_Void();
-}
-
-
-SWIGINTERN PyObject *BACKWARD_FFT_swigconstant(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *module;
-  PyObject *d;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigconstant", &module)) return NULL;
-  d = PyModule_GetDict(module);
-  if (!d) return NULL;
-  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
-  return SWIG_Py_Void();
-}
-
-
 SWIGINTERN PyObject *_wrap_FastFourierTransform__SWIG_0(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   std::vector< complex_t,std::allocator< complex_t > > *arg1 = 0 ;
@@ -49361,7 +49416,7 @@ fail:
 
 SWIGINTERN PyObject *AdjustMinimizerStrategy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AdjustMinimizerStrategy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -49885,7 +49940,7 @@ fail:
 
 SWIGINTERN PyObject *IMultiLayerBuilder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__shared_ptrT_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55173,7 +55228,7 @@ fail:
 
 SWIGINTERN PyObject *INodeVisitor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_INodeVisitor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55402,7 +55457,7 @@ fail:
 
 SWIGINTERN PyObject *IClusteredParticles_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IClusteredParticles, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -55746,7 +55801,7 @@ fail:
 
 SWIGINTERN PyObject *Crystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Crystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56373,7 +56428,7 @@ fail:
 
 SWIGINTERN PyObject *IDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -56817,7 +56872,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57239,7 +57294,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -57661,7 +57716,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58158,7 +58213,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionLogNormal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionLogNormal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -58580,7 +58635,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59076,7 +59131,7 @@ fail:
 
 SWIGINTERN PyObject *DistributionTrapezoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DistributionTrapezoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -59536,7 +59591,7 @@ fail:
 
 SWIGINTERN PyObject *DetectorMask_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_DetectorMask, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60033,7 +60088,7 @@ fail:
 
 SWIGINTERN PyObject *Ellipse_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Ellipse, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60136,7 +60191,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60269,7 +60324,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60402,7 +60457,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60535,7 +60590,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60699,7 +60754,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -60997,7 +61052,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDecayFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDecayFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61248,7 +61303,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61499,7 +61554,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61802,7 +61857,7 @@ fail:
 
 SWIGINTERN PyObject *FTDecayFunction2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDecayFunction2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -61935,7 +61990,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62068,7 +62123,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62201,7 +62256,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62334,7 +62389,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62467,7 +62522,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DTriangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DTriangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62600,7 +62655,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DCosine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DCosine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62764,7 +62819,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution1DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution1DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -62972,7 +63027,7 @@ fail:
 
 SWIGINTERN PyObject *IFTDistribution2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFTDistribution2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63223,7 +63278,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCauchy_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCauchy, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63474,7 +63529,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63725,7 +63780,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DGate_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DGate, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -63976,7 +64031,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -64279,7 +64334,7 @@ fail:
 
 SWIGINTERN PyObject *FTDistribution2DVoigt_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FTDistribution2DVoigt, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -64659,7 +64714,7 @@ fail:
 
 SWIGINTERN PyObject *FixedBinAxis_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FixedBinAxis, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -65082,57 +65137,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IFormFactor_setSpecularInfo(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
-  PyObject *resultobj = 0;
-  IFormFactor *arg1 = (IFormFactor *) 0 ;
-  ILayerRTCoefficients *arg2 = (ILayerRTCoefficients *) 0 ;
-  ILayerRTCoefficients *arg3 = (ILayerRTCoefficients *) 0 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  void *argp2 = 0 ;
-  int res2 = 0 ;
-  void *argp3 = 0 ;
-  int res3 = 0 ;
-  PyObject * obj0 = 0 ;
-  PyObject * obj1 = 0 ;
-  PyObject * obj2 = 0 ;
-  Swig::Director *director = 0;
-  bool upcall = false;
-  
-  if (!PyArg_ParseTuple(args,(char *)"OOO:IFormFactor_setSpecularInfo",&obj0,&obj1,&obj2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_IFormFactor, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IFormFactor_setSpecularInfo" "', argument " "1"" of type '" "IFormFactor *""'"); 
-  }
-  arg1 = reinterpret_cast< IFormFactor * >(argp1);
-  res2 = SWIG_ConvertPtr(obj1, &argp2,SWIGTYPE_p_ILayerRTCoefficients, 0 |  0 );
-  if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IFormFactor_setSpecularInfo" "', argument " "2"" of type '" "ILayerRTCoefficients const *""'"); 
-  }
-  arg2 = reinterpret_cast< ILayerRTCoefficients * >(argp2);
-  res3 = SWIG_ConvertPtr(obj2, &argp3,SWIGTYPE_p_ILayerRTCoefficients, 0 |  0 );
-  if (!SWIG_IsOK(res3)) {
-    SWIG_exception_fail(SWIG_ArgError(res3), "in method '" "IFormFactor_setSpecularInfo" "', argument " "3"" of type '" "ILayerRTCoefficients const *""'"); 
-  }
-  arg3 = reinterpret_cast< ILayerRTCoefficients * >(argp3);
-  director = SWIG_DIRECTOR_CAST(arg1);
-  upcall = (director && (director->swig_get_self()==obj0));
-  try {
-    if (upcall) {
-      (arg1)->IFormFactor::setSpecularInfo((ILayerRTCoefficients const *)arg2,(ILayerRTCoefficients const *)arg3);
-    } else {
-      (arg1)->setSpecularInfo((ILayerRTCoefficients const *)arg2,(ILayerRTCoefficients const *)arg3);
-    }
-  } catch (Swig::DirectorException&) {
-    SWIG_fail;
-  }
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
 SWIGINTERN PyObject *_wrap_IFormFactor_canSliceAnalytically(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   IFormFactor *arg1 = (IFormFactor *) 0 ;
@@ -65307,7 +65311,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67258,7 +67262,7 @@ fail:
 
 SWIGINTERN PyObject *vector_IFormFactorPtr_t_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_IFormFactor_p_std__allocatorT_IFormFactor_p_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67763,7 +67767,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorBorn_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorBorn, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -67960,7 +67964,7 @@ fail:
 
 SWIGINTERN PyObject *SlicingEffects_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SlicingEffects, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68190,7 +68194,7 @@ fail:
 
 SWIGINTERN PyObject *IFormFactorDecorator_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFormFactorDecorator, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68335,7 +68339,7 @@ fail:
 
 SWIGINTERN PyObject *PolygonalTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolygonalTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68480,7 +68484,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralTopology_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralTopology, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -68734,7 +68738,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralEdge_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralEdge, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69214,7 +69218,7 @@ fail:
 
 SWIGINTERN PyObject *PolyhedralFace_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PolyhedralFace, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69385,7 +69389,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolyhedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolyhedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69518,7 +69522,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalPrism_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalPrism, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69629,7 +69633,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPolygonalSurface_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPolygonalSurface, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -69846,7 +69850,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorAnisoPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorAnisoPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70093,7 +70097,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorBox_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorBox, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70340,7 +70344,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70526,7 +70530,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCone6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCone6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -70839,7 +70843,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71056,7 +71060,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCuboctahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCuboctahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71272,7 +71276,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71519,7 +71523,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDecoratorDebyeWaller_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDecoratorDebyeWaller, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71643,7 +71647,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDodecahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDodecahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -71797,7 +71801,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorDot_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorDot, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72044,7 +72048,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorEllipsoidalCylinder_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorEllipsoidalCylinder, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72297,7 +72301,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72513,7 +72517,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorFullSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorFullSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -72799,7 +72803,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73046,7 +73050,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorHemiEllipsoid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorHemiEllipsoid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73170,7 +73174,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorIcosahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorIcosahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73417,7 +73421,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxGauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxGauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73664,7 +73668,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongBoxLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongBoxLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -73911,7 +73915,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74158,7 +74162,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple1Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple1Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74436,7 +74440,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Gauss_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Gauss, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -74714,7 +74718,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLongRipple2Lorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLongRipple2Lorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75000,7 +75004,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorLorentz_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorLorentz, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75133,7 +75137,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism3_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism3, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75266,7 +75270,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPrism6_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPrism6, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75452,7 +75456,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorPyramid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorPyramid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75699,7 +75703,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple1_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple1, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -75977,7 +75981,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorRipple2_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorRipple2, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76149,7 +76153,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereGaussianRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereGaussianRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76330,7 +76334,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereLogNormalRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereLogNormalRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76502,7 +76506,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorSphereUniformRadius_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorSphereUniformRadius, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76688,7 +76692,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTetrahedron_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTetrahedron, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -76843,7 +76847,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedCube_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedCube, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -77181,7 +77185,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSphere_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSphere, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -77571,7 +77575,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorTruncatedSpheroid_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorTruncatedSpheroid, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -77955,7 +77959,7 @@ fail:
 
 SWIGINTERN PyObject *FormFactorWeighted_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FormFactorWeighted, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -78088,7 +78092,7 @@ fail:
 
 SWIGINTERN PyObject *IFootprintFactor_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFootprintFactor, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -78221,7 +78225,7 @@ fail:
 
 SWIGINTERN PyObject *FootprintFactorGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FootprintFactorGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -78354,7 +78358,7 @@ fail:
 
 SWIGINTERN PyObject *FootprintFactorSquare_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_FootprintFactorSquare, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -79551,7 +79555,7 @@ fail:
 
 SWIGINTERN PyObject *Simulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Simulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -79937,7 +79941,7 @@ fail:
 
 SWIGINTERN PyObject *Simulation2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Simulation2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -80465,7 +80469,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationOptions_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationOptions, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -80764,7 +80768,7 @@ fail:
 
 SWIGINTERN PyObject *GISASSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_GISASSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -82695,7 +82699,7 @@ fail:
 
 SWIGINTERN PyObject *IHistogram_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IHistogram, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -83294,7 +83298,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram1D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram1D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84334,7 +84338,7 @@ fail:
 
 SWIGINTERN PyObject *Histogram2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Histogram2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -84538,7 +84542,7 @@ fail:
 
 SWIGINTERN PyObject *AxisInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AxisInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85162,7 +85166,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationResult_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationResult, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85243,7 +85247,7 @@ fail:
 
 SWIGINTERN PyObject *IBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -85398,7 +85402,7 @@ fail:
 
 SWIGINTERN PyObject *ConstantBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ConstantBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86216,7 +86220,7 @@ fail:
 
 SWIGINTERN PyObject *IDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86679,7 +86683,7 @@ fail:
 
 SWIGINTERN PyObject *IDetector2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetector2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -86759,7 +86763,7 @@ fail:
 
 SWIGINTERN PyObject *IDetectorResolution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IDetectorResolution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87039,7 +87043,7 @@ fail:
 
 SWIGINTERN PyObject *IInterferenceFunction_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IInterferenceFunction, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87298,7 +87302,7 @@ fail:
 
 SWIGINTERN PyObject *ILayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ILayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87501,7 +87505,7 @@ fail:
 
 SWIGINTERN PyObject *IAbstractParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IAbstractParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87744,7 +87748,7 @@ fail:
 
 SWIGINTERN PyObject *IParameterReal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParameterT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -87889,7 +87893,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLimits_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLimits, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88595,7 +88599,7 @@ fail:
 
 SWIGINTERN PyObject *IParticle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IParticle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88685,7 +88689,7 @@ fail:
 
 SWIGINTERN PyObject *IResolutionFunction2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IResolutionFunction2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -88869,7 +88873,7 @@ fail:
 
 SWIGINTERN PyObject *IRotation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IRotation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89090,7 +89094,7 @@ fail:
 
 SWIGINTERN PyObject *IdentityRotation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IdentityRotation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89258,7 +89262,7 @@ fail:
 
 SWIGINTERN PyObject *RotationX_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationX, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89426,7 +89430,7 @@ fail:
 
 SWIGINTERN PyObject *RotationY_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationY, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89642,7 +89646,7 @@ fail:
 
 SWIGINTERN PyObject *RotationZ_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationZ, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89872,7 +89876,7 @@ fail:
 
 SWIGINTERN PyObject *RotationEuler_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RotationEuler, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -89956,7 +89960,7 @@ fail:
 
 SWIGINTERN PyObject *ISelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ISelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -90089,7 +90093,7 @@ fail:
 
 SWIGINTERN PyObject *SimpleSelectionRule_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimpleSelectionRule, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91078,7 +91082,7 @@ fail:
 
 SWIGINTERN PyObject *Instrument_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Instrument, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -91780,7 +91784,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityDataIOFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IntensityDataIOFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92007,7 +92011,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction1DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction1DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -92461,7 +92465,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionRadialParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionRadialParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -93149,7 +93153,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94508,7 +94512,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunction2DParaCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunction2DParaCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94640,7 +94644,7 @@ fail:
 
 SWIGINTERN PyObject *InterferenceFunctionNone_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_InterferenceFunctionNone, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -94841,7 +94845,7 @@ fail:
 
 SWIGINTERN PyObject *IPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95144,7 +95148,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95392,7 +95396,7 @@ fail:
 
 SWIGINTERN PyObject *SphericalPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SphericalPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -95651,7 +95655,7 @@ fail:
 
 SWIGINTERN PyObject *IsGISAXSDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IsGISAXSDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96277,7 +96281,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96494,7 +96498,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice1DParameters_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice1DParameters, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -96706,7 +96710,7 @@ fail:
 
 SWIGINTERN PyObject *Lattice2D_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Lattice2D, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97035,7 +97039,7 @@ fail:
 
 SWIGINTERN PyObject *BasicLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_BasicLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97304,7 +97308,7 @@ fail:
 
 SWIGINTERN PyObject *SquareLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SquareLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -97573,7 +97577,7 @@ fail:
 
 SWIGINTERN PyObject *HexagonalLattice_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HexagonalLattice, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -98291,7 +98295,7 @@ fail:
 
 SWIGINTERN PyObject *Layer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Layer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -98705,7 +98709,7 @@ fail:
 
 SWIGINTERN PyObject *LayerRoughness_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_LayerRoughness, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -98950,7 +98954,7 @@ fail:
 
 SWIGINTERN PyObject *Line_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Line, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99190,7 +99194,7 @@ fail:
 
 SWIGINTERN PyObject *VerticalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_VerticalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99430,7 +99434,7 @@ fail:
 
 SWIGINTERN PyObject *HorizontalLine_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_HorizontalLine, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -99853,7 +99857,7 @@ fail:
 
 SWIGINTERN PyObject *Material_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Material, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -100548,7 +100552,7 @@ fail:
 
 SWIGINTERN PyObject *MesoCrystal_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MesoCrystal, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -101495,7 +101499,7 @@ fail:
 
 SWIGINTERN PyObject *MultiLayer_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_MultiLayer, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -101819,7 +101823,7 @@ fail:
 
 SWIGINTERN PyObject *OffSpecSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OffSpecSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -103335,7 +103339,7 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_IntensityData___idiv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
+SWIGINTERN PyObject *_wrap_IntensityData___itruediv__(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *resultobj = 0;
   OutputData< double > *arg1 = (OutputData< double > *) 0 ;
   OutputData< double > *arg2 = 0 ;
@@ -103347,18 +103351,18 @@ SWIGINTERN PyObject *_wrap_IntensityData___idiv__(PyObject *SWIGUNUSEDPARM(self)
   PyObject * obj1 = 0 ;
   OutputData< double > *result = 0 ;
   
-  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___idiv__",&obj0,&obj1)) SWIG_fail;
+  if (!PyArg_ParseTuple(args,(char *)"OO:IntensityData___itruediv__",&obj0,&obj1)) SWIG_fail;
   res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_OutputDataT_double_t, SWIG_POINTER_DISOWN |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___idiv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "IntensityData___itruediv__" "', argument " "1"" of type '" "OutputData< double > *""'"); 
   }
   arg1 = reinterpret_cast< OutputData< double > * >(argp1);
   res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_OutputDataT_double_t,  0  | 0);
   if (!SWIG_IsOK(res2)) {
-    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   if (!argp2) {
-    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___idiv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "IntensityData___itruediv__" "', argument " "2"" of type '" "OutputData< double > const &""'"); 
   }
   arg2 = reinterpret_cast< OutputData< double > * >(argp2);
   result = (OutputData< double > *) &(arg1)->operator /=((OutputData< double > const &)*arg2);
@@ -103572,7 +103576,7 @@ fail:
 
 SWIGINTERN PyObject *IntensityData_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_OutputDataT_double_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104299,7 +104303,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -104933,7 +104937,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterPool_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterPool, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -105183,7 +105187,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSample_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParameterSample, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107099,7 +107103,7 @@ fail:
 
 SWIGINTERN PyObject *ParameterSampleVector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_std__vectorT_ParameterSample_std__allocatorT_ParameterSample_t_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107537,7 +107541,7 @@ fail:
 
 SWIGINTERN PyObject *Particle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Particle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -107999,7 +108003,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleComposition_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleComposition, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108327,7 +108331,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleCoreShell_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleCoreShell, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -108603,7 +108607,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleDistribution_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleDistribution, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109296,7 +109300,7 @@ fail:
 
 SWIGINTERN PyObject *ParticleLayout_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ParticleLayout, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109420,7 +109424,7 @@ fail:
 
 SWIGINTERN PyObject *PoissonNoiseBackground_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_PoissonNoiseBackground, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -109816,7 +109820,7 @@ fail:
 
 SWIGINTERN PyObject *Polygon_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Polygon, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -110656,7 +110660,7 @@ fail:
 
 SWIGINTERN PyObject *RealParameter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RealParameter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -111011,7 +111015,7 @@ fail:
 
 SWIGINTERN PyObject *Rectangle_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_Rectangle, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112129,7 +112133,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularDetector_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularDetector, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112434,7 +112438,7 @@ fail:
 
 SWIGINTERN PyObject *RectangularPixel_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_RectangularPixel, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -112629,7 +112633,7 @@ fail:
 
 SWIGINTERN PyObject *ResolutionFunction2DGaussian_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ResolutionFunction2DGaussian, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -113256,7 +113260,7 @@ fail:
 
 SWIGINTERN PyObject *SpecularSimulation_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SpecularSimulation, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -113453,7 +113457,7 @@ fail:
 
 SWIGINTERN PyObject *ThreadInfo_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_ThreadInfo, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -113832,7 +113836,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_IMultiLayerBuilder_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -113911,7 +113915,7 @@ fail:
 
 SWIGINTERN PyObject *SampleBuilderFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SampleBuilderFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -114280,7 +114284,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactoryTemp_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IFactoryT_std__string_Simulation_t, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -114321,7 +114325,7 @@ fail:
 
 SWIGINTERN PyObject *SimulationFactory_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_SimulationFactory, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -114349,7 +114353,7 @@ fail:
 
 SWIGINTERN PyObject *AxesUnits_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_AxesUnitsWrap, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -114683,7 +114687,7 @@ fail:
 
 SWIGINTERN PyObject *IUnitConverter_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
   PyObject *obj;
-  if (!PyArg_ParseTuple(args,(char*)"O:swigregister", &obj)) return NULL;
+  if (!PyArg_ParseTuple(args,(char *)"O:swigregister", &obj)) return NULL;
   SWIG_TypeNewClientData(SWIGTYPE_p_IUnitConverter, SWIG_NewClientData(obj));
   return SWIG_Py_Void();
 }
@@ -114751,7 +114755,6 @@ static PyMethodDef SwigMethods[] = {
 		"SwigPyIterator___sub__(SwigPyIterator self, SwigPyIterator x) -> ptrdiff_t\n"
 		""},
 	 { (char *)"SwigPyIterator_swigregister", SwigPyIterator_swigregister, METH_VARARGS, NULL},
-	 { (char *)"SHARED_PTR_DISOWN_swigconstant", SHARED_PTR_DISOWN_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"vdouble1d_t_iterator", _wrap_vdouble1d_t_iterator, METH_VARARGS, (char *)"vdouble1d_t_iterator(vdouble1d_t self) -> SwigPyIterator"},
 	 { (char *)"vdouble1d_t___nonzero__", _wrap_vdouble1d_t___nonzero__, METH_VARARGS, (char *)"vdouble1d_t___nonzero__(vdouble1d_t self) -> bool"},
 	 { (char *)"vdouble1d_t___bool__", _wrap_vdouble1d_t___bool__, METH_VARARGS, (char *)"vdouble1d_t___bool__(vdouble1d_t self) -> bool"},
@@ -118009,8 +118012,6 @@ static PyMethodDef SwigMethods[] = {
 		"Complex Bessel function Bessel_J1(x)/x. \n"
 		"\n"
 		""},
-	 { (char *)"FORWARD_FFT_swigconstant", FORWARD_FFT_swigconstant, METH_VARARGS, NULL},
-	 { (char *)"BACKWARD_FFT_swigconstant", BACKWARD_FFT_swigconstant, METH_VARARGS, NULL},
 	 { (char *)"FastFourierTransform", _wrap_FastFourierTransform, METH_VARARGS, (char *)"\n"
 		"FastFourierTransform(vector_complex_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
 		"FastFourierTransform(vdouble1d_t data, MathFunctions::EFFTDirection tcase) -> vector_complex_t\n"
@@ -120013,14 +120014,6 @@ static PyMethodDef SwigMethods[] = {
 		"Returns the z-coordinate of the lowest point in this shape after a given rotation. \n"
 		"\n"
 		""},
-	 { (char *)"IFormFactor_setSpecularInfo", _wrap_IFormFactor_setSpecularInfo, METH_VARARGS, (char *)"\n"
-		"IFormFactor_setSpecularInfo(IFormFactor self, ILayerRTCoefficients const * arg0, ILayerRTCoefficients const * arg1)\n"
-		"\n"
-		"virtual void IFormFactor::setSpecularInfo(const ILayerRTCoefficients *, const ILayerRTCoefficients *)\n"
-		"\n"
-		"Sets reflection/transmission info. \n"
-		"\n"
-		""},
 	 { (char *)"IFormFactor_canSliceAnalytically", _wrap_IFormFactor_canSliceAnalytically, METH_VARARGS, (char *)"IFormFactor_canSliceAnalytically(IFormFactor self, IRotation rot) -> bool"},
 	 { (char *)"IFormFactor_sliceFormFactor", _wrap_IFormFactor_sliceFormFactor, METH_VARARGS, (char *)"IFormFactor_sliceFormFactor(IFormFactor self, ZLimits limits, IRotation rot, kvector_t translation) -> IFormFactor"},
 	 { (char *)"disown_IFormFactor", _wrap_disown_IFormFactor, METH_VARARGS, NULL},
@@ -127401,7 +127394,7 @@ static PyMethodDef SwigMethods[] = {
 		""},
 	 { (char *)"IntensityData___iadd__", _wrap_IntensityData___iadd__, METH_VARARGS, (char *)"IntensityData___iadd__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___isub__", _wrap_IntensityData___isub__, METH_VARARGS, (char *)"IntensityData___isub__(IntensityData self, IntensityData right) -> IntensityData"},
-	 { (char *)"IntensityData___idiv__", _wrap_IntensityData___idiv__, METH_VARARGS, (char *)"IntensityData___idiv__(IntensityData self, IntensityData right) -> IntensityData"},
+	 { (char *)"IntensityData___itruediv__", _wrap_IntensityData___itruediv__, METH_VARARGS, (char *)"IntensityData___itruediv__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData___imul__", _wrap_IntensityData___imul__, METH_VARARGS, (char *)"IntensityData___imul__(IntensityData self, IntensityData right) -> IntensityData"},
 	 { (char *)"IntensityData_getValue", _wrap_IntensityData_getValue, METH_VARARGS, (char *)"\n"
 		"IntensityData_getValue(IntensityData self, size_t index) -> double\n"
@@ -128863,7 +128856,12 @@ static PyMethodDef SwigMethods[] = {
 		"\n"
 		""},
 	 { (char *)"IUnitConverter_swigregister", IUnitConverter_swigregister, METH_VARARGS, NULL},
-	 { (char *)"SubstituteDefaultUnits", _wrap_SubstituteDefaultUnits, METH_VARARGS, (char *)"SubstituteDefaultUnits(IUnitConverter converter, AxesUnits units) -> AxesUnits"},
+	 { (char *)"SubstituteDefaultUnits", _wrap_SubstituteDefaultUnits, METH_VARARGS, (char *)"\n"
+		"SubstituteDefaultUnits(IUnitConverter converter, AxesUnits units) -> AxesUnits\n"
+		"\n"
+		"AxesUnits SubstituteDefaultUnits(const IUnitConverter &converter, AxesUnits units)\n"
+		"\n"
+		""},
 	 { NULL, NULL, 0, NULL }
 };
 
@@ -131418,7 +131416,6 @@ static swig_type_info _swigt__p_IHistogram = {"_p_IHistogram", "IHistogram *", 0
 static swig_type_info _swigt__p_IIntensityFunction = {"_p_IIntensityFunction", "IIntensityFunction *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IIntensityNormalizer = {"_p_IIntensityNormalizer", "IIntensityNormalizer *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IInterferenceFunction = {"_p_IInterferenceFunction", "IInterferenceFunction *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_ILayerRTCoefficients = {"_p_ILayerRTCoefficients", "ILayerRTCoefficients *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_ILayout = {"_p_ILayout", "ILayout *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IMinimizer = {"_p_IMinimizer", "IMinimizer *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_IMultiLayerBuilder = {"_p_IMultiLayerBuilder", "IMultiLayerBuilder *", 0, 0, (void*)0, 0};
@@ -131741,7 +131738,6 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_IIntensityFunction,
   &_swigt__p_IIntensityNormalizer,
   &_swigt__p_IInterferenceFunction,
-  &_swigt__p_ILayerRTCoefficients,
   &_swigt__p_ILayout,
   &_swigt__p_IMinimizer,
   &_swigt__p_IMultiLayerBuilder,
@@ -132064,7 +132060,6 @@ static swig_cast_info _swigc__p_IHistogram[] = {  {&_swigt__p_IHistogram, 0, 0,
 static swig_cast_info _swigc__p_IIntensityFunction[] = {  {&_swigt__p_IntensityFunctionSqrt, _p_IntensityFunctionSqrtTo_p_IIntensityFunction, 0, 0},  {&_swigt__p_IIntensityFunction, 0, 0, 0},  {&_swigt__p_IntensityFunctionLog, _p_IntensityFunctionLogTo_p_IIntensityFunction, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IIntensityNormalizer[] = {  {&_swigt__p_IIntensityNormalizer, 0, 0, 0},  {&_swigt__p_IntensityNormalizer, _p_IntensityNormalizerTo_p_IIntensityNormalizer, 0, 0},  {&_swigt__p_IntensityScaleAndShiftNormalizer, _p_IntensityScaleAndShiftNormalizerTo_p_IIntensityNormalizer, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IInterferenceFunction[] = {  {&_swigt__p_IInterferenceFunction, 0, 0, 0},  {&_swigt__p_InterferenceFunction1DLattice, _p_InterferenceFunction1DLatticeTo_p_IInterferenceFunction, 0, 0},  {&_swigt__p_InterferenceFunction2DLattice, _p_InterferenceFunction2DLatticeTo_p_IInterferenceFunction, 0, 0},  {&_swigt__p_InterferenceFunctionNone, _p_InterferenceFunctionNoneTo_p_IInterferenceFunction, 0, 0},  {&_swigt__p_InterferenceFunctionRadialParaCrystal, _p_InterferenceFunctionRadialParaCrystalTo_p_IInterferenceFunction, 0, 0},  {&_swigt__p_InterferenceFunction2DParaCrystal, _p_InterferenceFunction2DParaCrystalTo_p_IInterferenceFunction, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_ILayerRTCoefficients[] = {  {&_swigt__p_ILayerRTCoefficients, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_ILayout[] = {  {&_swigt__p_ILayout, 0, 0, 0},  {&_swigt__p_ParticleLayout, _p_ParticleLayoutTo_p_ILayout, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMinimizer[] = {  {&_swigt__p_IMinimizer, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_IMultiLayerBuilder[] = {  {&_swigt__p_IMultiLayerBuilder, 0, 0, 0},{0, 0, 0, 0}};
@@ -132387,7 +132382,6 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_IIntensityFunction,
   _swigc__p_IIntensityNormalizer,
   _swigc__p_IInterferenceFunction,
-  _swigc__p_ILayerRTCoefficients,
   _swigc__p_ILayout,
   _swigc__p_IMinimizer,
   _swigc__p_IMultiLayerBuilder,
@@ -132946,7 +132940,6 @@ extern "C" {
     static int type_init = 0;
     if (!type_init) {
       const PyTypeObject tmp = {
-        /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
         PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -133178,13 +133171,13 @@ SWIG_init(void) {
   static PyGetSetDef thisown_getset_def = {
     (char *)"thisown", SwigPyBuiltin_GetterClosure, SwigPyBuiltin_SetterClosure, NULL, &thisown_getset_closure
   };
-  PyObject *metatype_args;
   PyTypeObject *builtin_pytype;
   int builtin_base_count;
   swig_type_info *builtin_basetype;
   PyObject *tuple;
   PyGetSetDescrObject *static_getset;
   PyTypeObject *metatype;
+  PyTypeObject *swigpyobject;
   SwigPyClientData *cd;
   PyObject *public_interface, *public_symbol;
   PyObject *this_descr;
@@ -133199,14 +133192,9 @@ SWIG_init(void) {
   (void)static_getset;
   (void)self;
   
-  /* metatype is used to implement static member variables. */
-  metatype_args = Py_BuildValue("(s(O){})", "SwigPyObjectType", &PyType_Type);
-  assert(metatype_args);
-  metatype = (PyTypeObject *) PyType_Type.tp_call((PyObject *) &PyType_Type, metatype_args, NULL);
+  /* Metaclass is used to implement static member variables */
+  metatype = SwigPyObjectType();
   assert(metatype);
-  Py_DECREF(metatype_args);
-  metatype->tp_setattro = (setattrofunc) &SwigPyObjectType_setattro;
-  assert(PyType_Ready(metatype) >= 0);
 #endif
   
   /* Fix SwigMethods to carry the callback ptrs when needed */
@@ -133224,13 +133212,15 @@ SWIG_init(void) {
   SWIG_InitializeModule(0);
   
 #ifdef SWIGPYTHON_BUILTIN
+  swigpyobject = SwigPyObject_TypeOnce();
+  
   SwigPyObject_stype = SWIG_MangledTypeQuery("_p_SwigPyObject");
   assert(SwigPyObject_stype);
   cd = (SwigPyClientData*) SwigPyObject_stype->clientdata;
   if (!cd) {
     SwigPyObject_stype->clientdata = &SwigPyObject_clientdata;
-    SwigPyObject_clientdata.pytype = SwigPyObject_TypeOnce();
-  } else if (SwigPyObject_TypeOnce()->tp_basicsize != cd->pytype->tp_basicsize) {
+    SwigPyObject_clientdata.pytype = swigpyobject;
+  } else if (swigpyobject->tp_basicsize != cd->pytype->tp_basicsize) {
     PyErr_SetString(PyExc_RuntimeError, "Import error: attempted to load two incompatible swig-generated modules.");
 # if PY_VERSION_HEX >= 0x03000000
     return NULL;
@@ -133261,30 +133251,33 @@ SWIG_init(void) {
   
   SWIG_InstallConstants(d,swig_const_table);
   
+  SWIG_Python_SetConstant(d, "SHARED_PTR_DISOWN",SWIG_From_int(static_cast< int >(0)));
   
   import_array();
   
-  PyDict_SetItemString(md,(char*)"cvar", SWIG_globals());
-  SWIG_addvarlink(SWIG_globals(),(char*)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"meter",Swig_var_meter_get, Swig_var_meter_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"nm",Swig_var_nm_get, Swig_var_nm_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"barn",Swig_var_barn_get, Swig_var_barn_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"radian",Swig_var_radian_get, Swig_var_radian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"degree",Swig_var_degree_get, Swig_var_degree_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"rad",Swig_var_rad_get, Swig_var_rad_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"sr",Swig_var_sr_get, Swig_var_sr_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"deg",Swig_var_deg_get, Swig_var_deg_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
-  SWIG_addvarlink(SWIG_globals(),(char*)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
+  PyDict_SetItemString(md,(char *)"cvar", SWIG_globals());
+  SWIG_addvarlink(SWIG_globals(),(char *)"major_version_number",Swig_var_major_version_number_get, Swig_var_major_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"minor_version_number",Swig_var_minor_version_number_get, Swig_var_minor_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"patch_version_number",Swig_var_patch_version_number_get, Swig_var_patch_version_number_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"nanometer",Swig_var_nanometer_get, Swig_var_nanometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"angstrom",Swig_var_angstrom_get, Swig_var_angstrom_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"micrometer",Swig_var_micrometer_get, Swig_var_micrometer_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"millimeter",Swig_var_millimeter_get, Swig_var_millimeter_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"meter",Swig_var_meter_get, Swig_var_meter_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"nm",Swig_var_nm_get, Swig_var_nm_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"barn",Swig_var_barn_get, Swig_var_barn_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"radian",Swig_var_radian_get, Swig_var_radian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"milliradian",Swig_var_milliradian_get, Swig_var_milliradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"degree",Swig_var_degree_get, Swig_var_degree_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"steradian",Swig_var_steradian_get, Swig_var_steradian_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"rad",Swig_var_rad_get, Swig_var_rad_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"mrad",Swig_var_mrad_get, Swig_var_mrad_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"sr",Swig_var_sr_get, Swig_var_sr_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"deg",Swig_var_deg_get, Swig_var_deg_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"tesla",Swig_var_tesla_get, Swig_var_tesla_set);
+  SWIG_addvarlink(SWIG_globals(),(char *)"gauss",Swig_var_gauss_get, Swig_var_gauss_set);
+  SWIG_Python_SetConstant(d, "FORWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::FORWARD_FFT)));
+  SWIG_Python_SetConstant(d, "BACKWARD_FFT",SWIG_From_int(static_cast< int >(MathFunctions::BACKWARD_FFT)));
   SWIG_Python_SetConstant(d, "IHistogram_INTEGRAL",SWIG_From_int(static_cast< int >(IHistogram::INTEGRAL)));
   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)));
diff --git a/auto/Wrap/libBornAgainCore_wrap.h b/auto/Wrap/libBornAgainCore_wrap.h
index 4901028c873f5d1fced5d9facec601c1334ebdd8..0fac9d8f8e9e0909e0560866045bafe4126c58da 100644
--- a/auto/Wrap/libBornAgainCore_wrap.h
+++ b/auto/Wrap/libBornAgainCore_wrap.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -329,7 +329,6 @@ public:
     virtual double radialExtension() const;
     virtual double bottomZ(IRotation const &rotation) const;
     virtual double topZ(IRotation const &rotation) const;
-    virtual void setSpecularInfo(ILayerRTCoefficients const *arg0, ILayerRTCoefficients const *arg1);
     virtual bool canSliceAnalytically(IRotation const &rot) const;
     virtual bool canSliceAnalyticallySwigPublic(IRotation const &rot) const {
       return IFormFactor::canSliceAnalytically(rot);
@@ -368,7 +367,7 @@ private:
       return method;
     }
 private:
-    mutable swig::SwigVar_PyObject vtable[18];
+    mutable swig::SwigVar_PyObject vtable[17];
 #endif
 
 };
@@ -394,7 +393,6 @@ public:
     virtual double radialExtension() const;
     virtual double bottomZ(IRotation const &rotation) const;
     virtual double topZ(IRotation const &rotation) const;
-    virtual void setSpecularInfo(ILayerRTCoefficients const *arg0, ILayerRTCoefficients const *arg1);
     virtual bool canSliceAnalytically(IRotation const &rot) const;
     virtual bool canSliceAnalyticallySwigPublic(IRotation const &rot) const {
       return IFormFactorBorn::canSliceAnalytically(rot);
@@ -434,7 +432,7 @@ private:
       return method;
     }
 private:
-    mutable swig::SwigVar_PyObject vtable[19];
+    mutable swig::SwigVar_PyObject vtable[18];
 #endif
 
 };
diff --git a/auto/Wrap/swig_runtime.h b/auto/Wrap/swig_runtime.h
index 96d50bdb9a2cb380943883a9a7dd1050b29d8bf4..de3fda4358271c36fbaf611150d8bc567608a740 100644
--- a/auto/Wrap/swig_runtime.h
+++ b/auto/Wrap/swig_runtime.h
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 3.0.8
+ * Version 3.0.12
  *
  * This file is not intended to be easily readable and contains a number of
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -75,9 +75,11 @@
 #endif
 
 /* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-#  ifndef GCC_HASCLASSVISIBILITY
-#    define GCC_HASCLASSVISIBILITY
+#if defined(__GNUC__)
+#  if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
+#    ifndef GCC_HASCLASSVISIBILITY
+#      define GCC_HASCLASSVISIBILITY
+#    endif
 #  endif
 #endif
 
@@ -642,16 +644,16 @@ SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
     char d = *(c++);
     unsigned char uu;
     if ((d >= '0') && (d <= '9'))
-      uu = ((d - '0') << 4);
+      uu = (unsigned char)((d - '0') << 4);
     else if ((d >= 'a') && (d <= 'f'))
-      uu = ((d - ('a'-10)) << 4);
+      uu = (unsigned char)((d - ('a'-10)) << 4);
     else
       return (char *) 0;
     d = *(c++);
     if ((d >= '0') && (d <= '9'))
-      uu |= (d - '0');
+      uu |= (unsigned char)(d - '0');
     else if ((d >= 'a') && (d <= 'f'))
-      uu |= (d - ('a'-10));
+      uu |= (unsigned char)(d - ('a'-10));
     else
       return (char *) 0;
     *u = uu;
@@ -816,10 +818,6 @@ PyString_FromFormat(const char *fmt, ...) {
 }
 #endif
 
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
 #ifndef PyObject_DEL
 # define PyObject_DEL PyObject_Del
 #endif
@@ -934,6 +932,7 @@ typedef destructor freefunc;
 #if PY_VERSION_HEX < 0x03020000
 #define PyDescr_TYPE(x) (((PyDescrObject *)(x))->d_type)
 #define PyDescr_NAME(x) (((PyDescrObject *)(x))->d_name)
+#define Py_hash_t long
 #endif
 /* -----------------------------------------------------------------------------
  * error manipulation
@@ -1878,7 +1877,6 @@ SwigPyObject_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX >= 0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else
@@ -1889,7 +1887,7 @@ SwigPyObject_TypeOnce(void) {
       sizeof(SwigPyObject),                 /* tp_basicsize */
       0,                                    /* tp_itemsize */
       (destructor)SwigPyObject_dealloc,     /* tp_dealloc */
-      0,				    /* tp_print */
+      0,                                    /* tp_print */
 #if PY_VERSION_HEX < 0x02020000
       (getattrfunc)SwigPyObject_getattr,    /* tp_getattr */
 #else
@@ -1897,7 +1895,7 @@ SwigPyObject_TypeOnce(void) {
 #endif
       (setattrfunc)0,                       /* tp_setattr */
 #if PY_VERSION_HEX >= 0x03000000
-    0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
+      0, /* tp_reserved in 3.0.1, tp_compare in 3.0.0 but not used */
 #else
       (cmpfunc)SwigPyObject_compare,        /* tp_compare */
 #endif
@@ -1907,7 +1905,7 @@ SwigPyObject_TypeOnce(void) {
       0,                                    /* tp_as_mapping */
       (hashfunc)0,                          /* tp_hash */
       (ternaryfunc)0,                       /* tp_call */
-      0,				    /* tp_str */
+      0,                                    /* tp_str */
       PyObject_GenericGetAttr,              /* tp_getattro */
       0,                                    /* tp_setattro */
       0,                                    /* tp_as_buffer */
@@ -2070,7 +2068,6 @@ SwigPyPacked_TypeOnce(void) {
   static int type_init = 0;
   if (!type_init) {
     const PyTypeObject tmp = {
-      /* PyObject header changed in Python 3 */
 #if PY_VERSION_HEX>=0x03000000
       PyVarObject_HEAD_INIT(NULL, 0)
 #else