diff --git a/App/src/TestBugs.cpp b/App/src/TestBugs.cpp
index b24bec48d7ad40b30a251fb84f2bb8107fe2fde8..d6477344de0f40948d6d727b3e3c7632c39751cf 100644
--- a/App/src/TestBugs.cpp
+++ b/App/src/TestBugs.cpp
@@ -55,7 +55,7 @@ void TestBugs::test_item339()
 
     ParticleLayout *decoration = new ParticleLayout();
 
-    decoration->addParticle(particle,0., 1.0);
+    decoration->addParticle(particle, 1.0);
 
 
 
diff --git a/App/src/TestFittingModule1.cpp b/App/src/TestFittingModule1.cpp
index 3200130ff562b5616fc147a3c90a851f89558161..a7a6338ce957f4beb56d8cd5b1d1aef8f440004c 100644
--- a/App/src/TestFittingModule1.cpp
+++ b/App/src/TestFittingModule1.cpp
@@ -175,8 +175,8 @@ void TestFittingModule1::initializeSample2()
                            cylinder_radius, cylinder_height) );
     Particle particle2(particle_material, FormFactorPrism3(
                            prism3_length, prism3_height) );
-    particle_layout.addParticle(particle1, 0.0, 0.2);
-    particle_layout.addParticle(particle2, 0.0, 0.8);
+    particle_layout.addParticle(particle1, 0.2);
+    particle_layout.addParticle(particle2, 0.8);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule2.cpp b/App/src/TestFittingModule2.cpp
index b1234e11a985343d61aa31bcbbfa7eab6d271451..396a22c98846236760173a65a92c6389bc59d211 100644
--- a/App/src/TestFittingModule2.cpp
+++ b/App/src/TestFittingModule2.cpp
@@ -391,8 +391,8 @@ ISample *TestFittingModule2::SampleBuilder::buildSample() const
                            m_cylinder_radius, m_cylinder_height) );
     Particle particle2(particle_material, FormFactorPrism3(
                            m_prism3_length, m_prism3_height) );
-    particle_layout.addParticle(particle1, 0.0, m_cylinder_ratio);
-    particle_layout.addParticle(particle2, 0.0, 1.0 - m_cylinder_ratio);
+    particle_layout.addParticle(particle1, m_cylinder_ratio);
+    particle_layout.addParticle(particle2, 1.0 - m_cylinder_ratio);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule3.cpp b/App/src/TestFittingModule3.cpp
index a98fd0c56cd77ec966a49b389b73bc31df2e734b..c76ba47948c207fb6831cfd4de4e0238479f01c5 100644
--- a/App/src/TestFittingModule3.cpp
+++ b/App/src/TestFittingModule3.cpp
@@ -130,8 +130,8 @@ void TestFittingModule3::initializeSample()
     Particle particle2(particle_material, FormFactorPrism3(
                            prism3_length, prism3_height) );
     ParticleLayout particle_layout;
-    particle_layout.addParticle(particle1,0.0, 0.2);
-    particle_layout.addParticle(particle2, 0.0, 0.8);
+    particle_layout.addParticle(particle1, 0.2);
+    particle_layout.addParticle(particle2, 0.8);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestIsGISAXS12.cpp b/App/src/TestIsGISAXS12.cpp
index 7d3bc6e9c4830f1e1caac38190da50b48bafb585..ec330f7b350f6b47e2af5a6a73ff81e873f284ad 100644
--- a/App/src/TestIsGISAXS12.cpp
+++ b/App/src/TestIsGISAXS12.cpp
@@ -514,10 +514,10 @@ ISample *TestIsGISAXS12::TestSampleBuilder::buildSample() const
     // building nano particles
     ParameterDistribution par_distr1("*/radius", gauss1, nbins, nfwhm);
     ParticleDistribution particle_collection1(cylinder1, par_distr1);
-    particle_layout.addParticle(particle_collection1, 0.0, particle_probability1);
+    particle_layout.addParticle(particle_collection1, particle_probability1);
     ParameterDistribution par_distr2("*/radius", gauss2, nbins, nfwhm);
     ParticleDistribution particle_collection2(cylinder2, par_distr2);
-    particle_layout.addParticle(particle_collection2, 0.0, particle_probability2);
+    particle_layout.addParticle(particle_collection2, particle_probability2);
 
     air_layer.addLayout(particle_layout);
 
diff --git a/App/src/TestRipple1.cpp b/App/src/TestRipple1.cpp
index dc7071bd51932b690f2981a253bfaaa727f605c1..80bf1adfeaa4bfedbd2e1f0aa710b00482793ccb 100644
--- a/App/src/TestRipple1.cpp
+++ b/App/src/TestRipple1.cpp
@@ -186,7 +186,7 @@ ISample *TestRipple1::TestSampleBuilder::buildSample() const
 
 
     ParticleLayout particle_layout;
-    particle_layout.addParticle(ripple,0.0,1.0);
+    particle_layout.addParticle(ripple, 1.0);
     InterferenceFunctionRadialParaCrystal *p_interference_function =
             new InterferenceFunctionRadialParaCrystal(m_interf_distance,
                     1e7*Units::nanometer); // peak_distance, corr_length
diff --git a/App/src/TestRipple2.cpp b/App/src/TestRipple2.cpp
index dbf977c3f5e034e9f27e078829e48f2c3506d17b..b764c5864e768e9a878e2642cba554903c565b92 100644
--- a/App/src/TestRipple2.cpp
+++ b/App/src/TestRipple2.cpp
@@ -188,7 +188,7 @@ ISample *TestRipple2::TestSampleBuilder::buildSample() const
 
 
     ParticleLayout particle_layout;
-    particle_layout.addParticle(ripple,0.0,1.0);
+    particle_layout.addParticle(ripple, 1.0);
     InterferenceFunctionRadialParaCrystal *p_interference_function =
             new InterferenceFunctionRadialParaCrystal(m_interf_distance,
                     1e7*Units::nanometer); // peak_distance, corr_length
diff --git a/Core/StandardSamples/MesoCrystal01Builder.cpp b/Core/StandardSamples/MesoCrystal01Builder.cpp
index 399cce7c37774e2a9a0c8c304cc46cabfd4d42d3..9bafceb35cf4567a3fe90f61adc3124147077fe9 100644
--- a/Core/StandardSamples/MesoCrystal01Builder.cpp
+++ b/Core/StandardSamples/MesoCrystal01Builder.cpp
@@ -109,7 +109,8 @@ ISample* MesoCrystal01Builder::buildSample() const
             boost::scoped_ptr<MesoCrystal> P_meso(createMesoCrystal(
                                     m_lattice_length_a, m_lattice_length_c,
                                     n_particle_adapted, &ff_meso) );
-            particle_layout.addParticle(*P_meso, z_rotation, m_meso_height);
+            P_meso->setPosition(0.0, 0.0, -m_meso_height);
+            particle_layout.addParticle(*P_meso, z_rotation);
         }
     }
 
diff --git a/Core/Tools/src/PyGenVisitor.cpp b/Core/Tools/src/PyGenVisitor.cpp
index 15362997c68b5d805376f4017a4311bfb566d24e..21c6e54833594193e70613243617fac9a526a1ee 100644
--- a/Core/Tools/src/PyGenVisitor.cpp
+++ b/Core/Tools/src/PyGenVisitor.cpp
@@ -1147,7 +1147,7 @@ std::string PyGenVisitor::defineParticleLayouts() const
                 double abundance = particleLayout->getAbundanceOfParticle(particleIndex);
                 kvector_t pos = p_particle->getPosition();
                 result << indent() << it->second << ".addParticle("
-                       << m_label->getLabel(p_particle)
+                       << m_label->getLabel(p_particle) << ", "
                        << PyGenTools::printDouble(abundance) << ")\n";
                 particleIndex++;
             }
diff --git a/Doc/UserManual/Assemblies.tex b/Doc/UserManual/Assemblies.tex
index 39d62c30456a778cb142eac101bef92a99893b20..f88d79205e77efbc08add7141bd9adc8231f0fb9 100644
--- a/Doc/UserManual/Assemblies.tex
+++ b/Doc/UserManual/Assemblies.tex
@@ -799,7 +799,7 @@ def get_sample():
     ff= FormFactorTruncatedSpheroid(7.5*nanometer, 9.0*nanometer, 1.2)
     particleshape = Particle(m_particle, ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(particleshape, 0.0, 1.0)
+    particle_layout.addParticle(particleshape, 1.0)
 
     # interferences
     interference = InterferenceFunctionNone()
@@ -880,8 +880,9 @@ def get_sample():
     # collection of particles 
     ff = FormFactorFullSphere(10.2*nanometer)
     particleshape = Particle(m_particle, ff)
+    particleshape.setPosition(0.0, 0.0, -25.2)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(particleshape,25.2,1.0)
+    particle_layout.addParticle(particleshape, 1.0)
 
     # interferences 
     interference = InterferenceFunctionNone()
@@ -1052,7 +1053,7 @@ def get_sample():
     sphere_ff = FormFactorTruncatedSphere(5*nanometer, 5*nanometer)
     sphere = Particle(m_particle, sphere_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(sphere, 0.0, 1.0)
+    particle_layout.addParticle(sphere, 1.0)
     |interference = InterferenceFunctionNone()| 
     |particle_layout.addInterferenceFunction(interference)|
     # assembling the sample
@@ -1145,7 +1146,7 @@ To illustrate the radial paracrystal interference function, we use the same samp
 
 \begin{lstlisting}[language=python, style=eclipseboxed,numbers=none,nolol,caption={\Code{Python} script to define the radial paracrystal interference function between half-spheres, where \Code{trsphere} is of type \Code{Particle}.},label={lst:1dpara}]
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(trsphere, 0.0, 1.0)
+    particle_layout.addParticle(trsphere, 1.0)
     interference = InterferenceFunctionRadialParaCrystal(25.0*nanometer, 1e3*nanometer)
     pdf = FTDistribution1DGauss(7 * nanometer)
     interference.setProbabilityDistribution(pdf)
@@ -1195,7 +1196,7 @@ Like for the one-dimensional case, a probability distribution function \Code{pdf
     |pdf = FTDistribution2DGauss(200.0*nanometer/2.0/M_PI, 75.0*nanometer/2.0/M_PI)|
     |interference.setProbabilityDistribution(pdf)|
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(sphere, 0.0, 1.0)
+    particle_layout.addParticle(sphere, 1.0)
     |particle_layout.addInterferenceFunction(interference)|
 
     # interference approx chosen between: DA (default) and SSCA
diff --git a/Doc/UserManual/Usage.tex b/Doc/UserManual/Usage.tex
index 76674161b97e042ddaaa441cb2236d6058c6d112..44f76efc02a27c9b39688276c20bc01dc87ae236 100644
--- a/Doc/UserManual/Usage.tex
+++ b/Doc/UserManual/Usage.tex
@@ -146,8 +146,8 @@ The same procedure has been applied for the prism in lines~\ref{particlesprism1}
 %-------------------------------------------------------------------------------
 \begin{lstlisting}[language=python, style=eclipseboxed, name=ex1,nolol]
     particle_layout = ParticleLayout()  @\label{particlesdecor1}@
-    particle_layout.addParticle(cylinder, 0.0, 0.5)  @\label{particlesdecor2}@
-    particle_layout.addParticle(prism, 0.0, 0.5)@\label{particlesdecor3}@
+    particle_layout.addParticle(cylinder, 0.5)  @\label{particlesdecor2}@
+    particle_layout.addParticle(prism, 0.5)@\label{particlesdecor3}@
     interference = InterferenceFunctionNone()  @\label{particlesnointerf}@
     particle_layout.addInterferenceFunction(interference)  @\label{particlesinterf}@
 \end{lstlisting}
@@ -157,27 +157,14 @@ in our sample is called \Code{ParticleLayout}
 for each particle shape (lines~\ref{particlesdecor2}, \ref{particlesdecor3}). Its general syntax is 
 
 \begin{lstlisting}[language=python, style=eclipse,numbers=none]
-addParticle(<particle_name>, depth, abundance) 
+addParticle(<particle_name>, abundance) 
 \end{lstlisting}
 where \Code{<particle\_name>} is the name used to define the particles
-(lines~\ref{particlescyl2} and \ref{particlesprism2}), \Code{depth}
-(default value = 0)
-is the vertical position, expressed in nanometers, of the particles in a given layer (the
-association with a particular layer will be done during the next step) and
+(lines~\ref{particlescyl2} and \ref{particlesprism2}) and
 \Code{abundance} is the proportion of this type of particles, 
 normalized to the total number of particles. Here we have 50\% of cylinders
 and 50\% of prisms.
 
-\ImportantPoint{Remark:}{Depth of particles\\
-The vertical positions of the particles in a layer are given in relative
-coordinates. For the top layer, the bottom of the layer corresponds to
-\Code{depth}=0 and negative values would correspond to particles
-floating above layer 1 since the vertical axis,
-shown in Fig.~\ref{fig:multil3d} is pointing upwards.
-But for all the other layers, it is the top of the
-layer which corresponds to \Code{depth}=0.}\\
-
-
 \noindent Finally, lines~\ref{particlesnointerf} and
 \ref{particlesinterf} specify that there is \textbf{no coherent interference} between
 the waves scattered by these particles. In this case, the intensity is calculated by
@@ -903,8 +890,8 @@ def get_sample(): @\label{script2::get_sample}@
     prism_ff = FormFactorPrism3(2.0*nanometer, 1.0*nanometer)
     prism = Particle(m_particle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Examples/Demos/simul_demo_lattice1.py b/Examples/Demos/simul_demo_lattice1.py
index a30580ff1599fd3f62095c49a64cb3994a00d693..e7af7203a8817706eeb2fe5629519eba0674bc96 100644
--- a/Examples/Demos/simul_demo_lattice1.py
+++ b/Examples/Demos/simul_demo_lattice1.py
@@ -23,7 +23,7 @@ def RunSimulation():
     position = kvector_t(0.0, 0.0, 0.0)
     cylinder.setPosition(position)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     # interference function
     interference = InterferenceFunction2DLattice.createSquare(10.0*nanometer)
diff --git a/Examples/Demos/simul_demo_lattice2.py b/Examples/Demos/simul_demo_lattice2.py
index 121df2a0efc3c9120d273bb8cb0d529a36d9f7cf..4f84e603148059c60046c1939cf8d44ce23a8111 100644
--- a/Examples/Demos/simul_demo_lattice2.py
+++ b/Examples/Demos/simul_demo_lattice2.py
@@ -23,12 +23,12 @@ def RunSimulation():
     position = kvector_t(0.0, 0.0, 0.0)
     cylinder.setPosition(position)
     particle_layout1 = ParticleLayout()
-    particle_layout1.addParticle(cylinder, 0.0, 1.0)
+    particle_layout1.addParticle(cylinder, 1.0)
     # particle 2
     position_2 = kvector_t(5.0*nanometer, 5.0*nanometer, 0.0)
     cylinder.setPosition(position_2)
     particle_layout2 = ParticleLayout()
-    particle_layout2.addParticle(cylinder, 0.0, 1.0)
+    particle_layout2.addParticle(cylinder, 1.0)
 
     # interference function
     interference = InterferenceFunction2DLattice.createSquare(10.0*nanometer)
diff --git a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
index 488dbad684cc98606637d7c62fc485255140d6eb..a562ca72bfd2744836ebac90a08037bad13ee7e6 100644
--- a/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
+++ b/Examples/cpp/CylindersAndPrisms/CylindersAndPrisms.cpp
@@ -20,7 +20,7 @@
 #include "CylindersAndPrisms.h"
 
 
-void CylindersAndPrismsExample::initSample() 
+void CylindersAndPrismsExample::initSample()
 {
     m_sample = new MultiLayer();
 
@@ -34,10 +34,10 @@ void CylindersAndPrismsExample::initSample()
     HomogeneousMaterial particle_material("Particle", 6e-4, 2e-8);
 
     Particle cylinder(particle_material, FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer));
-    particle_layout.addParticle(cylinder, 0.0, 0.5);
-    
+    particle_layout.addParticle(cylinder, 0.5);
+
     Particle prism(particle_material, FormFactorPrism3(10*Units::nanometer, 5*Units::nanometer));
-    particle_layout.addParticle(prism, 0.0, 0.5);
+    particle_layout.addParticle(prism, 0.5);
 
     air_layer.addLayout(particle_layout);
 
@@ -46,7 +46,7 @@ void CylindersAndPrismsExample::initSample()
 
 }
 
-void CylindersAndPrismsExample::initSimulation()  
+void CylindersAndPrismsExample::initSimulation()
 {
     m_simulation = new GISASSimulation();
 
@@ -65,7 +65,7 @@ CylindersAndPrismsExample::CylindersAndPrismsExample() : m_result(0), m_simulati
     initSimulation();
 }
 
-void CylindersAndPrismsExample::runSimulation() 
+void CylindersAndPrismsExample::runSimulation()
 {
     m_simulation->runSimulation();
     m_result = m_simulation->getIntensityData();
diff --git a/Examples/python/fitting/ex01_SampleParametersIntro/SampleParametersIntro.py b/Examples/python/fitting/ex01_SampleParametersIntro/SampleParametersIntro.py
index 65928a8698c8ea4ef8114a209eacf060488a1fe4..fcc56a71381d1411daa7fb1149135f8d40ee32b9 100644
--- a/Examples/python/fitting/ex01_SampleParametersIntro/SampleParametersIntro.py
+++ b/Examples/python/fitting/ex01_SampleParametersIntro/SampleParametersIntro.py
@@ -29,8 +29,8 @@ def get_sample():
     prism_ff = FormFactorPrism3(5*nanometer, 5*nanometer)
     prism = Particle(m_particle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder,0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms.py b/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms.py
index a74a65f2ceea92403cb65cf4079aefbcaf7f8619..e1ec08dd42fbcce5346610e498c6b10051a41616 100644
--- a/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms.py
+++ b/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms.py
@@ -37,8 +37,8 @@ def get_sample():
     prism_ff = FormFactorPrism3(1.0*nanometer, 1.0*nanometer)
     prism = Particle(m_particle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms_detailed.py b/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms_detailed.py
index b39f43c7230e5882766589b43b22f89e8191802d..2d3ab2f5cb28d43903594b915777fff1951e7087 100644
--- a/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms_detailed.py
+++ b/Examples/python/fitting/ex02_FitCylindersAndPrisms/FitCylindersPrisms_detailed.py
@@ -52,8 +52,8 @@ def get_sample(cylinder_height=1.0*nanometer,
     prism_ff = FormFactorPrism3(prism_length, prism_height)
     prism = Particle(m_particle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
index 5dd9e5d4a039eddcf990e9b75977db2cce640f72..181862e7521ed979d14a912e34be6c80ea72863e 100644
--- a/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
+++ b/Examples/python/simulation/ex01_BasicParticles/AllFormFactorsAvailable.py
@@ -44,7 +44,7 @@ def get_sample(formfactor):
     # collection of particles
     particle = Particle(m_particle, formfactor)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(particle, 0.0, 1.0)
+    particle_layout.addParticle(particle, 1.0)
 
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex01_BasicParticles/CylindersAndPrisms.py b/Examples/python/simulation/ex01_BasicParticles/CylindersAndPrisms.py
index 84f238e4bc688e79eb9711c46cbf7e0bcfd1bd4f..28ebf156cd6e0ad48e886fbb0c6ce43eb3166862 100644
--- a/Examples/python/simulation/ex01_BasicParticles/CylindersAndPrisms.py
+++ b/Examples/python/simulation/ex01_BasicParticles/CylindersAndPrisms.py
@@ -26,8 +26,8 @@ def get_sample():
     prism_ff = FormFactorPrism3(10*nanometer, 5*nanometer)
     prism = Particle(m_particle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Examples/python/simulation/ex01_BasicParticles/CylindersInBA.py b/Examples/python/simulation/ex01_BasicParticles/CylindersInBA.py
index d71bad79aab89c409cf1e0ef028f11ab5374468b..b7f57d205ea5bdbea5ea5f3d3521da76cf691114 100644
--- a/Examples/python/simulation/ex01_BasicParticles/CylindersInBA.py
+++ b/Examples/python/simulation/ex01_BasicParticles/CylindersInBA.py
@@ -22,7 +22,7 @@ def get_sample():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex01_BasicParticles/CylindersInDWBA.py b/Examples/python/simulation/ex01_BasicParticles/CylindersInDWBA.py
index ec0245b582cacaf436a864abd2b68eec1bb106ab..5caad4999504af4e5d47ed13ef4ded5942ae1970 100644
--- a/Examples/python/simulation/ex01_BasicParticles/CylindersInDWBA.py
+++ b/Examples/python/simulation/ex01_BasicParticles/CylindersInDWBA.py
@@ -23,7 +23,7 @@ def get_sample():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex01_BasicParticles/TwoTypesOfCylindersWithSizeDistribution.py b/Examples/python/simulation/ex01_BasicParticles/TwoTypesOfCylindersWithSizeDistribution.py
index 399cc06b8216c35a9741c85e22a50347b30c29a2..d9df1c7ae57f28ebde5c6bb71f526a7cc01510e1 100644
--- a/Examples/python/simulation/ex01_BasicParticles/TwoTypesOfCylindersWithSizeDistribution.py
+++ b/Examples/python/simulation/ex01_BasicParticles/TwoTypesOfCylindersWithSizeDistribution.py
@@ -49,8 +49,8 @@ def get_sample():
 
     # assembling the sample
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(part_coll1, 0.0, 0.95)
-    particle_layout.addParticle(part_coll2, 0.0, 0.05)
+    particle_layout.addParticle(part_coll1, 0.95)
+    particle_layout.addParticle(part_coll2, 0.05)
 
     air_layer = Layer(m_air)
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex02_LayeredStructures/BuriedParticles.py b/Examples/python/simulation/ex02_LayeredStructures/BuriedParticles.py
index 7e2415e19973c7cd8b900cd67a726b423d4db459..ff9b7f2c7b9344f768b4fcb5001c2b084e32bfa1 100644
--- a/Examples/python/simulation/ex02_LayeredStructures/BuriedParticles.py
+++ b/Examples/python/simulation/ex02_LayeredStructures/BuriedParticles.py
@@ -23,8 +23,9 @@ def get_sample():
     # collection of particles
     ff_sphere = FormFactorFullSphere(10.2*nanometer)
     sphere = Particle(m_particle, ff_sphere)
+    sphere.setPosition(0.0, 0.0, -25.2)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(sphere, 25.2, 1.0)
+    particle_layout.addParticle(sphere, 1.0)
 
     # assembling the sample
     air_layer = Layer(m_ambience)
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationDA.py b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationDA.py
index 68f0405470f18801ffa09b7e7802a12b6a7ae10e..49326b406c84813a79cb21e1007a0ece736e05d6 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationDA.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationDA.py
@@ -38,8 +38,8 @@ def get_sample():
 
      # assembling the sample
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder1, 0.0, 0.8)
-    particle_layout.addParticle(cylinder2, 0.0, 0.2)
+    particle_layout.addParticle(cylinder1, 0.8)
+    particle_layout.addParticle(cylinder2, 0.2)
     particle_layout.addInterferenceFunction(interference)
 
     air_layer = Layer(m_ambience)
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationLMA.py b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationLMA.py
index c912efa40a373f53676936eec19585ea3fe34cb7..2c4c32a93240f1f70311ecea96ec6800bcf33990 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationLMA.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationLMA.py
@@ -42,11 +42,11 @@ def get_sample():
 
      # assembling the sample
     particle_layout1 = ParticleLayout()
-    particle_layout1.addParticle(cylinder1, 0.0, 0.8)
+    particle_layout1.addParticle(cylinder1, 0.8)
     particle_layout1.addInterferenceFunction(interference1)
 
     particle_layout2 = ParticleLayout()
-    particle_layout2.addParticle(cylinder2, 0.0, 0.2)
+    particle_layout2.addParticle(cylinder2, 0.2)
     particle_layout2.addInterferenceFunction(interference2)
 
     air_layer = Layer(m_ambience)
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
index 7ce344c74b28e16a2e534ddb4be79971372b11d0..550b62c6a6863dfd2edd3ed360c1c0584f1aaff2 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/ApproximationSSCA.py
@@ -39,8 +39,8 @@ def get_sample():
     
     # assembling the sample
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder1, 0.0, 0.8)
-    particle_layout.addParticle(cylinder2, 0.0, 0.2)
+    particle_layout.addParticle(cylinder1, 0.8)
+    particle_layout.addParticle(cylinder2, 0.2)
     particle_layout.addInterferenceFunction(interference)
     particle_layout.setApproximation(ILayout.SSCA)
     
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py b/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
index fa44253519c60ad934be7a9939db7cd1cc7d881c..c25cd7739edcca6d805d3e3c2c89ffaabd843047 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/CosineRipplesAtRectLattice.py
@@ -24,7 +24,7 @@ def get_sample():
     ripple = Particle(m_particle, ripple1_ff)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(ripple, 0.0, 1.0)
+    particle_layout.addParticle(ripple, 1.0)
 
     interference = InterferenceFunction2DLattice(200.0*nanometer, 50.0*nanometer, 90.0*degree, 0.0*degree)
     pdf = FTDistribution2DCauchy(1000.*nanometer/2./numpy.pi, 100.*nanometer/2./numpy.pi)
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DRadialParaCrystal.py b/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DRadialParaCrystal.py
index 3bc12d9eb7650b35b8fa69e5d8f6215ae9f83de9..91ac516d3c332aa3701bae529c75ceebd0c3e3a5 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DRadialParaCrystal.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/Interference1DRadialParaCrystal.py
@@ -28,7 +28,7 @@ def get_sample():
     interference.setProbabilityDistribution(pdf)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     # assembling the sample
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLatticeSumOfRotated.py b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLatticeSumOfRotated.py
index 136a5e6dc9aa471a16ce37fbc90b3347070818b0..2ecc10fd4cac173a5f92e777340eeab239ffcf32 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLatticeSumOfRotated.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DLatticeSumOfRotated.py
@@ -29,7 +29,7 @@ def get_sample(xi_value):
     position = kvector_t(0.0, 0.0, 0.0)
     cylinder = Particle(m_particle, ff_cyl.clone())
     cylinder.setPosition(position)
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(p_interference_function)
 
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DParaCrystal.py b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DParaCrystal.py
index 6fc6392a0e34b992b5cb5a81aa885bafe30dbfbb..4e82530daf4e2d443fc56371a77231cf7f60d1f2 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DParaCrystal.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/Interference2DParaCrystal.py
@@ -29,7 +29,7 @@ def get_sample():
     interference.setProbabilityDistributions(pdf, pdf)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     # assembling the sample
diff --git a/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py b/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
index dbf1c83d011790fd03947e1b8ef28ee3fb54b504..c3bb6e0cff611cc09e9c4d5ec555617db329cc35 100644
--- a/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
+++ b/Examples/python/simulation/ex03_InterferenceFunctions/TriangularRipple.py
@@ -24,7 +24,7 @@ def get_sample():
     ripple = Particle(m_particle, ripple2_ff)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(ripple, 0.0, 1.0)
+    particle_layout.addParticle(ripple, 1.0)
 
     interference = InterferenceFunction2DLattice(200.0*nanometer, 50.0*nanometer, 90.0*degree, 0.0*degree)
     pdf = FTDistribution2DGauss(1000.*nanometer/2./numpy.pi, 100.*nanometer/2./numpy.pi)
diff --git a/Examples/python/simulation/ex04_ComplexShapes/CustomFormFactor.py b/Examples/python/simulation/ex04_ComplexShapes/CustomFormFactor.py
index d6b971f38dec5d09c6cfc93c34282478705f2fa8..918234b766818c105670036afe997631bae9d17f 100644
--- a/Examples/python/simulation/ex04_ComplexShapes/CustomFormFactor.py
+++ b/Examples/python/simulation/ex04_ComplexShapes/CustomFormFactor.py
@@ -61,7 +61,7 @@ def get_sample():
     ff = CustomFormFactor(20.0*nanometer, 15.0*nanometer)
     particle = Particle(m_particle, ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(particle, 0.0, 1.0)
+    particle_layout.addParticle(particle, 1.0)
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
     substrate_layer = Layer(m_substrate)
diff --git a/Examples/python/simulation/ex04_ComplexShapes/LargeParticlesFormFactor.py b/Examples/python/simulation/ex04_ComplexShapes/LargeParticlesFormFactor.py
index 8322f8592f3db258325f5bde615504dcea0b1feb..15483bed15410dd39cb4f3fb3276f8597366d95f 100644
--- a/Examples/python/simulation/ex04_ComplexShapes/LargeParticlesFormFactor.py
+++ b/Examples/python/simulation/ex04_ComplexShapes/LargeParticlesFormFactor.py
@@ -30,7 +30,7 @@ def get_sample(cylinder_radius, cylinder_height):
     cylinder_ff = FormFactorCylinder(cylinder_radius, cylinder_height)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/Examples/python/simulation/ex05_BeamAndDetector/BeamDivergence.py b/Examples/python/simulation/ex05_BeamAndDetector/BeamDivergence.py
index fd943f74378a8fd50a76524616825e96fb26f55a..0c0b1a4c28e588df332f49d8996dbf0f218cb334 100644
--- a/Examples/python/simulation/ex05_BeamAndDetector/BeamDivergence.py
+++ b/Examples/python/simulation/ex05_BeamAndDetector/BeamDivergence.py
@@ -23,7 +23,7 @@ def get_sample():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     # assembling the sample
     air_layer = Layer(m_ambience)
diff --git a/Examples/python/simulation/ex05_BeamAndDetector/DetectorResolutionFunction.py b/Examples/python/simulation/ex05_BeamAndDetector/DetectorResolutionFunction.py
index 53a5e89e5ba03312d3f3c878175fea01b984239d..f34760585396935421395d45e8aa4327399a8ba4 100644
--- a/Examples/python/simulation/ex05_BeamAndDetector/DetectorResolutionFunction.py
+++ b/Examples/python/simulation/ex05_BeamAndDetector/DetectorResolutionFunction.py
@@ -23,7 +23,7 @@ def get_sample():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     # assembling the sample
     air_layer = Layer(m_ambience)
diff --git a/Tests/FunctionalTests/TestPyCore/beam_divergence.py b/Tests/FunctionalTests/TestPyCore/beam_divergence.py
index cb54c41c72b8c81d73f3ffaa5ddbd5888e47220f..fc7b327d885f93377609e10c295ce4b34050d946 100644
--- a/Tests/FunctionalTests/TestPyCore/beam_divergence.py
+++ b/Tests/FunctionalTests/TestPyCore/beam_divergence.py
@@ -26,7 +26,7 @@ def RunSimulation():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     # assembling the sample
     air_layer = Layer(m_ambience)
diff --git a/Tests/FunctionalTests/TestPyCore/customformfactor.py b/Tests/FunctionalTests/TestPyCore/customformfactor.py
index 317f94f2cdd1f0da31e0e889d779c74645b7da50..6dec7c3ae4601a2ed836600e0cc4b8cb696733e3 100644
--- a/Tests/FunctionalTests/TestPyCore/customformfactor.py
+++ b/Tests/FunctionalTests/TestPyCore/customformfactor.py
@@ -56,7 +56,7 @@ def get_sample():
     ff = CustomFormFactor(343.0*nanometer, 7.0*nanometer)
     particle = Particle(m_particle, ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(particle, 0.0, 1.0)
+    particle_layout.addParticle(particle, 1.0)
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
     substrate_layer = Layer(m_substrate)
diff --git a/Tests/FunctionalTests/TestPyCore/cylinders_ba_dwba_size.py b/Tests/FunctionalTests/TestPyCore/cylinders_ba_dwba_size.py
index 66067387181738d918b8e5cd28e48896c1f7a5cd..099c5c9b26bd27a39ee448d75881d107d3f874f3 100644
--- a/Tests/FunctionalTests/TestPyCore/cylinders_ba_dwba_size.py
+++ b/Tests/FunctionalTests/TestPyCore/cylinders_ba_dwba_size.py
@@ -23,7 +23,7 @@ def RunSimulationDWBA():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(mParticle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
     # air layer with particles and substrate form multi layer
@@ -58,7 +58,7 @@ def RunSimulationBA():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(mParticle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
     
diff --git a/Tests/FunctionalTests/TestPyCore/detector_resolution.py b/Tests/FunctionalTests/TestPyCore/detector_resolution.py
index 97fccdab60c0d81de3ec692c3624fb65ef3dabf9..5d7fe6f76e086ad4a5dc2b6451f517f4999e4c86 100644
--- a/Tests/FunctionalTests/TestPyCore/detector_resolution.py
+++ b/Tests/FunctionalTests/TestPyCore/detector_resolution.py
@@ -26,7 +26,7 @@ def RunSimulation():
     cylinder_ff = FormFactorCylinder(5*nanometer, 5*nanometer)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     # assembling the sample
     air_layer = Layer(m_ambience)
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs01.py b/Tests/FunctionalTests/TestPyCore/isgisaxs01.py
index 74d9f4c1adb661277b254a9bd5b92d0d5278468d..db20bf796f56aea0a477b5942718103bff9cd06a 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs01.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs01.py
@@ -28,8 +28,8 @@ def RunSimulation():
     prism_ff = FormFactorPrism3(10*nanometer, 5*nanometer)
     prism = Particle(mParticle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
     # air layer with particles and substrate form multi layer
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs01_normalize.py b/Tests/FunctionalTests/TestPyCore/isgisaxs01_normalize.py
index e0970fc3f0c126715b850c72f451f0e0af61b426..51a16860864fa330b1670f13b60e5ec1be52b170 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs01_normalize.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs01_normalize.py
@@ -28,8 +28,8 @@ def RunSimulation():
     prism_ff = FormFactorPrism3(10*nanometer, 5*nanometer)
     prism = Particle(mParticle, prism_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 0.5)
-    particle_layout.addParticle(prism, 0.0, 0.5)
+    particle_layout.addParticle(cylinder, 0.5)
+    particle_layout.addParticle(prism, 0.5)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
     # air layer with particles and substrate form multi layer
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs02.py b/Tests/FunctionalTests/TestPyCore/isgisaxs02.py
index 6ddcd1c066ad3e077add8276bb97cc560f645da6..1f3b2fea8008a2726200fca277d4409649599f1e 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs02.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs02.py
@@ -41,10 +41,10 @@ def RunSimulation():
 
     par_distr1 = ParameterDistribution("*/radius", gauss1, nbins, n_sigma)
     part_coll1 = ParticleDistribution(cylinder1, par_distr1)
-    particle_layout.addParticle(part_coll1, 0.0, 0.95)
+    particle_layout.addParticle(part_coll1, 0.95)
     par_distr2 = ParameterDistribution("*/radius", gauss2, nbins, n_sigma)
     part_coll2 = ParticleDistribution(cylinder2, par_distr2)
-    particle_layout.addParticle(part_coll2, 0.0, 0.05)
+    particle_layout.addParticle(part_coll2, 0.05)
 
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs04.py b/Tests/FunctionalTests/TestPyCore/isgisaxs04.py
index 7d9759f5db084ca53d66dd0bfa8568dd80d641de..63501214ff6d58164f3fd73737b066a616cd7d5c 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs04.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs04.py
@@ -27,7 +27,7 @@ def RunSimulation1():
     pdf = FTDistribution1DGauss(7 * nanometer)
     interference.setProbabilityDistribution(pdf)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     air_layer = Layer(mAmbience)
@@ -67,7 +67,7 @@ def RunSimulation2():
     interference.setProbabilityDistributions(pdf, pdf)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     air_layer = Layer(mAmbience)
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs07.py b/Tests/FunctionalTests/TestPyCore/isgisaxs07.py
index 0c7490d353e4ca2ff998a3e4c308f2deac7360c9..852e3d09756e12bac1cea04bf8d19b74dfb6e876 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs07.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs07.py
@@ -28,70 +28,70 @@ def RunSimulation():
     pos1 = kvector_t(0.0*nanometer, 0.0*nanometer, 0.0)
     particle1 = Particle(mParticle, ff1)
     particle1.setPosition(pos1)
-    particle_layout.addParticle(particle1, 0.0, 0.5)
+    particle_layout.addParticle(particle1, 0.5)
     #add particle number 2:
     ff2 = FormFactorBox(2.0*nanometer, 4.0*nanometer, 1.0*nanometer)
     pos2 = kvector_t(5.0*nanometer, 5.0*nanometer, 0.0)
     p_rot2 = RotationZ(10*degree)
     particle2 = Particle(mParticle, ff2, p_rot2)   
     particle2.setPosition(pos2)
-    particle_layout.addParticle(particle2, 0.0, 0.5)
+    particle_layout.addParticle(particle2, 0.5)
     #add particle number 3:
     ff3 = FormFactorBox(2.0*nanometer, 6.0*nanometer, 1.0*nanometer)
     pos3 = kvector_t(-5.0*nanometer, -5.0*nanometer, 0.0)
     p_rot3 = RotationZ(20*degree)
     particle3 = Particle(mParticle, ff3, p_rot3)
     particle3.setPosition(pos3)
-    particle_layout.addParticle(particle3, 0.0, 0.5)
+    particle_layout.addParticle(particle3, 0.5)
     #add particle number 4:
     ff4 = FormFactorBox(2.0*nanometer, 8.0*nanometer, 1.0*nanometer)
     pos4 = kvector_t(5.0*nanometer, -5.0*nanometer, 0.0)
     p_rot4 = RotationZ(30*degree)
     particle4 = Particle(mParticle, ff4, p_rot4)   
     particle4.setPosition(pos4)
-    particle_layout.addParticle(particle4, 0.0, 0.5)
+    particle_layout.addParticle(particle4, 0.5)
     #add particle number 5:
     ff5 = FormFactorBox(2.0*nanometer, 10.0*nanometer, 1.0*nanometer)
     pos5 = kvector_t(-5.0*nanometer, 5.0*nanometer, 0.0)
     p_rot5 = RotationZ(40*degree)
     particle5 = Particle(mParticle, ff5, p_rot5)   
     particle5.setPosition(pos5)
-    particle_layout.addParticle(particle5, 0.0, 0.5)
+    particle_layout.addParticle(particle5, 0.5)
     #add particle number 6:
     ff6 = FormFactorBox(2.0*nanometer, 2.0*nanometer, 1.0*nanometer)
     pos6 = kvector_t(0.0*nanometer, 0.0*nanometer, 0.0)
     p_rot6 = RotationZ(50*degree)
     particle6 = Particle(mParticle, ff6, p_rot6)   
     particle6.setPosition(pos6)
-    particle_layout.addParticle(particle6, 0.0, 0.5)
+    particle_layout.addParticle(particle6, 0.5)
     #add particle number 7:
     ff7 = FormFactorBox(2.0*nanometer, 4.0*nanometer, 1.0*nanometer)
     pos7 = kvector_t(5.0*nanometer, 5.0*nanometer, 0.0)
     p_rot7 = RotationZ(60*degree)
     particle7 = Particle(mParticle, ff7, p_rot7)
     particle7.setPosition(pos7)
-    particle_layout.addParticle(particle7, 0.0, 0.5)
+    particle_layout.addParticle(particle7, 0.5)
     #add particle number 8:
     ff8 = FormFactorBox(2.0*nanometer, 6.0*nanometer, 1.0*nanometer)
     pos8 = kvector_t(-5.0*nanometer, -5.0*nanometer, 0.0)
     p_rot8 = RotationZ(70*degree)
     particle8 = Particle(mParticle, ff8, p_rot8)    
     particle8.setPosition(pos8)
-    particle_layout.addParticle(particle8, 0.0, 0.5)
+    particle_layout.addParticle(particle8, 0.5)
     #add particle number 9:
     ff9 = FormFactorBox(2.0*nanometer, 8.0*nanometer, 1.0*nanometer)
     pos9 = kvector_t(5.0*nanometer, -5.0*nanometer, 0.0)
     p_rot9 = RotationZ(80*degree)
     particle9 = Particle(mParticle, ff9, p_rot9)     
     particle9.setPosition(pos9)
-    particle_layout.addParticle(particle9, 0.0, 0.5)
+    particle_layout.addParticle(particle9, 0.5)
     #add particle number 10:
     ff10 = FormFactorBox(2.0*nanometer, 10.0*nanometer, 1.0*nanometer)
     pos10 = kvector_t(-5.0*nanometer, 5.0*nanometer, 0.0)
     p_rot10 = RotationZ(90*degree)
     particle10 = Particle(mParticle, ff10, p_rot10)
     particle10.setPosition(pos10)
-    particle_layout.addParticle(particle10, 0.0, 0.5)
+    particle_layout.addParticle(particle10, 0.5)
 
     particle_layout.setApproximation(ILayout.ISGISAXSMOR)
 
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs08.py b/Tests/FunctionalTests/TestPyCore/isgisaxs08.py
index aed829003bf976917aac58b11c89124bf1b282e3..5252e353ec4868b05a0ce202363f6c988aada6d8 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs08.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs08.py
@@ -29,7 +29,7 @@ def RunSimulation1():
     pdf2 = FTDistribution2DCauchy(0.5*nanometer, 2.0*nanometer)
     interference.setProbabilityDistributions(pdf1, pdf2)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     air_layer = Layer(mAmbience)
@@ -68,7 +68,7 @@ def RunSimulation2():
     pdf2 = FTDistribution2DCauchy(0.5*nanometer, 0.5*nanometer)
     interference.setProbabilityDistributions(pdf1, pdf2)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
     
     air_layer = Layer(mAmbience)
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs09.py b/Tests/FunctionalTests/TestPyCore/isgisaxs09.py
index acf41b876ee3678a183acd96c39d0b93a3b5d906..9d037f2a8fad5d70371f28b191c4fba5d6d1259b 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs09.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs09.py
@@ -26,7 +26,7 @@ def RunSimulation1():
     pyramid = Particle(mParticle, pyramid_ff)
     interference = InterferenceFunctionNone()
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(pyramid, 0.0, 1.0)
+    particle_layout.addParticle(pyramid, 1.0)
     particle_layout.addInterferenceFunction(interference)
 
     air_layer = Layer(mAmbience)
diff --git a/Tests/FunctionalTests/TestPyCore/isgisaxs10.py b/Tests/FunctionalTests/TestPyCore/isgisaxs10.py
index bd8b362493cd8a512d4ec1e4d51f9a5eaf9d78cb..df7a20d7aa41c478c0c19c18a5ab88c7811ace89 100644
--- a/Tests/FunctionalTests/TestPyCore/isgisaxs10.py
+++ b/Tests/FunctionalTests/TestPyCore/isgisaxs10.py
@@ -26,7 +26,7 @@ def RunSimulation():
     pdf = FTDistribution1DGauss(7 * nanometer)
     interference.setProbabilityDistribution(pdf)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     particle_layout.addInterferenceFunction(interference)
     # air layer with particles and substrate form multi layer
     air_layer = Layer(mAmbience)
diff --git a/Tests/FunctionalTests/TestPyCore/mesocrystal1.py b/Tests/FunctionalTests/TestPyCore/mesocrystal1.py
index b625c6d7c08fd324ac99bd8625241630be1b2c96..dc64fb104d8ef9dc0d23e2a7720c828a693eecc8 100644
--- a/Tests/FunctionalTests/TestPyCore/mesocrystal1.py
+++ b/Tests/FunctionalTests/TestPyCore/mesocrystal1.py
@@ -88,7 +88,8 @@ class MySampleBuilder(ISampleBuilder):
 
                 total_transform = RotationZ(phi_start + i*phi_step)
                 meso = self.createMesoCrystal(self.lattice_length_a.value, self.lattice_length_c.value, n_particle_adapted, ff_meso)
-                particle_layout.addParticle(meso, total_transform, self.meso_height.value)
+                meso.setPosition(0.0, 0.0, -self.meso_height.value)
+                particle_layout.addParticle(meso, total_transform)
 
         particle_layout.setTotalParticleSurfaceDensity(surface_density)
         particle_layout.addInterferenceFunction(p_interference_funtion)
diff --git a/Tests/FunctionalTests/TestPyCore/montecarlo_integration.py b/Tests/FunctionalTests/TestPyCore/montecarlo_integration.py
index 365567692e7ac78e89dcc960d838ef196976d6bd..9f4112bab7b480de19ac15bfb1a9d28fcbc56d8b 100644
--- a/Tests/FunctionalTests/TestPyCore/montecarlo_integration.py
+++ b/Tests/FunctionalTests/TestPyCore/montecarlo_integration.py
@@ -33,7 +33,7 @@ def get_sample(cylinder_radius, cylinder_height):
     cylinder_ff = FormFactorCylinder(cylinder_radius, cylinder_height)
     cylinder = Particle(m_particle, cylinder_ff)
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
 
     air_layer = Layer(m_ambience)
     air_layer.addLayout(particle_layout)
diff --git a/Tests/FunctionalTests/TestPyCore/polmagcylinders1.py b/Tests/FunctionalTests/TestPyCore/polmagcylinders1.py
index 9c60799ca7bc3551b54d475d1aeb2c0a79f29c1f..443cde2b487610cabe0b0c9d4c13be26c3954fdb 100644
--- a/Tests/FunctionalTests/TestPyCore/polmagcylinders1.py
+++ b/Tests/FunctionalTests/TestPyCore/polmagcylinders1.py
@@ -30,7 +30,7 @@ def RunSimulation():
     cylinder = Particle(magParticle, cylinder_ff)
     
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Tests/FunctionalTests/TestPyCore/polmagcylinders2.py b/Tests/FunctionalTests/TestPyCore/polmagcylinders2.py
index 728e7ad6f75eb1bf3b3a07a167350fea661db47d..ea5a89ddec02066b1260e35d9c6603fa8022635f 100644
--- a/Tests/FunctionalTests/TestPyCore/polmagcylinders2.py
+++ b/Tests/FunctionalTests/TestPyCore/polmagcylinders2.py
@@ -30,7 +30,7 @@ def getSimulationIntensity(rho_beam, efficiency):
     cylinder = Particle(magParticle, cylinder_ff)
     
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(cylinder, 0.0, 1.0)
+    particle_layout.addParticle(cylinder, 1.0)
     interference = InterferenceFunctionNone()
     particle_layout.addInterferenceFunction(interference)
 
diff --git a/Tests/FunctionalTests/TestPyCore/ripple1.py b/Tests/FunctionalTests/TestPyCore/ripple1.py
index 93128626004cd7c97a8c4c291b4daa709b425227..6be3046dec5848aaab4846246b562a2d00f85bd8 100644
--- a/Tests/FunctionalTests/TestPyCore/ripple1.py
+++ b/Tests/FunctionalTests/TestPyCore/ripple1.py
@@ -25,7 +25,7 @@ def RunSimulation():
     ripple = Particle(mParticle, ripple1_ff)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(ripple, 0.0, 1.0)
+    particle_layout.addParticle(ripple, 1.0)
 
     interference = InterferenceFunctionRadialParaCrystal(20 * nanometer, 1e7 * nanometer)
     pdf = FTDistribution1DGauss(4 * nanometer)
diff --git a/Tests/FunctionalTests/TestPyCore/ripple2_asym.py b/Tests/FunctionalTests/TestPyCore/ripple2_asym.py
index cf3c36288ae785bec8838b8cf1eb867dab40683d..90a722dca63a60ca04e890deb4e679424233ca6c 100644
--- a/Tests/FunctionalTests/TestPyCore/ripple2_asym.py
+++ b/Tests/FunctionalTests/TestPyCore/ripple2_asym.py
@@ -25,7 +25,7 @@ def RunSimulation():
     ripple = Particle(mParticle, ripple2_ff)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(ripple, 0.0, 1.0)
+    particle_layout.addParticle(ripple, 1.0)
 
     interference = InterferenceFunctionRadialParaCrystal(20 * nanometer, 1e7 * nanometer)
     pdf = FTDistribution1DGauss(4 * nanometer)
diff --git a/Tests/FunctionalTests/TestPyCore/ripple2_sym.py b/Tests/FunctionalTests/TestPyCore/ripple2_sym.py
index db3d9b9470cf248c3da8644f9ee51bb9380434b9..4696c480ca589fa372c903fb37462281b2848146 100644
--- a/Tests/FunctionalTests/TestPyCore/ripple2_sym.py
+++ b/Tests/FunctionalTests/TestPyCore/ripple2_sym.py
@@ -26,7 +26,7 @@ def RunSimulation():
     ripple = Particle(mParticle, ripple2_ff)
 
     particle_layout = ParticleLayout()
-    particle_layout.addParticle(ripple, 0.0, 1.0)
+    particle_layout.addParticle(ripple, 1.0)
 
     interference = InterferenceFunctionRadialParaCrystal(20 * nanometer, 1e7 * nanometer)
     pdf = FTDistribution1DGauss(4 * nanometer)
diff --git a/Tests/FunctionalTests/TestPyFit/testfit_UsingBuilder.py b/Tests/FunctionalTests/TestPyFit/testfit_UsingBuilder.py
index 974b9bff861aa8b50cd709868cd0156772609667..d39b003a400a5d6173283cd49e96bd0d1ca6e05c 100644
--- a/Tests/FunctionalTests/TestPyFit/testfit_UsingBuilder.py
+++ b/Tests/FunctionalTests/TestPyFit/testfit_UsingBuilder.py
@@ -135,8 +135,8 @@ class MySampleBuilder(ISampleBuilder):
         interference = InterferenceFunctionNone()
 
         particle_layout = ParticleLayout()
-        particle_layout.addParticle(cylinder, 0.0, self.cylinder_ratio.value)
-        particle_layout.addParticle(prism, 0.0, 1.0 - self.cylinder_ratio.value)
+        particle_layout.addParticle(cylinder, self.cylinder_ratio.value)
+        particle_layout.addParticle(prism, 1.0 - self.cylinder_ratio.value)
         particle_layout.addInterferenceFunction(interference)
 
         air_layer.addLayout(particle_layout)