diff --git a/App/src/TestBugs.cpp b/App/src/TestBugs.cpp
index 3b1d0d5c0cbea5ac98de9ffbbcbf68be1bb15e4e..de3842d0c6aed989b94ee673e6c12decfd0ac5da 100644
--- a/App/src/TestBugs.cpp
+++ b/App/src/TestBugs.cpp
@@ -31,7 +31,7 @@ void TestBugs::test_item339()
 
     FormFactorTruncatedSphere sphere_ff(8.0*Units::nanometer, 8.0*Units::nanometer);
 
-    Particle *particle = new Particle(mParticle, sphere_ff);
+    Particle particle(mParticle, sphere_ff);
 
     InterferenceFunction2DParaCrystal *interf =
             InterferenceFunction2DParaCrystal::createHexagonal(20.0*Units::nanometer,
diff --git a/App/src/TestDetectorResolution.cpp b/App/src/TestDetectorResolution.cpp
index 2042c3032d2b9520c4efd54a0296e45e6596e3e0..f7a70f66b8035dbb8b394af4042cb86db920ee78 100644
--- a/App/src/TestDetectorResolution.cpp
+++ b/App/src/TestDetectorResolution.cpp
@@ -68,10 +68,9 @@ void TestDetectorResolution::initializeSample()
             1e7*Units::nanometer);
     FTDistribution1DGauss pdf(7*Units::nanometer);
     p_interference_function->setProbabilityDistribution(pdf);
-    ParticleLayout particle_layout(
-        new Particle(particle_material,
-                     FormFactorCylinder(5*Units::nanometer,
-                                            5*Units::nanometer)));
+    Particle particle(particle_material, FormFactorCylinder(5*Units::nanometer,
+                                                            5*Units::nanometer));
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(p_interference_function);
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule1.cpp b/App/src/TestFittingModule1.cpp
index 43e7a912e08ad398fa02b95791513be438344176..06d87ff1fe06ab1b05372787d8e47c71c74d9ac7 100644
--- a/App/src/TestFittingModule1.cpp
+++ b/App/src/TestFittingModule1.cpp
@@ -125,8 +125,9 @@ void TestFittingModule1::initializeSample1()
 
     Layer air_layer;
     air_layer.setMaterial(air_material);
-    ParticleLayout particle_layout( new Particle(particle_material,
-            FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
+    Particle particle(particle_material, FormFactorCylinder(
+                          5*Units::nanometer, 5*Units::nanometer));
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
@@ -170,8 +171,12 @@ void TestFittingModule1::initializeSample2()
     Layer substrate_layer;
     substrate_layer.setMaterial(substrate_material);
     ParticleLayout particle_layout;
-    particle_layout.addParticle(new Particle(particle_material, FormFactorCylinder(cylinder_radius, cylinder_height)),0.0, 0.2);
-    particle_layout.addParticle(new Particle(particle_material, FormFactorPrism3(prism3_length, prism3_height)), 0.0, 0.8);
+    Particle particle1(particle_material, FormFactorCylinder(
+                           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.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule2.cpp b/App/src/TestFittingModule2.cpp
index ee6171d5100c8d0f0186879e5e3e1a0582685e8b..3d45915c9b681a587690487a86e767b44980aea8 100644
--- a/App/src/TestFittingModule2.cpp
+++ b/App/src/TestFittingModule2.cpp
@@ -386,17 +386,12 @@ ISample *TestFittingModule2::SampleBuilder::buildSample() const
     Layer substrate_layer;
     substrate_layer.setMaterial(substrate_material);
     ParticleLayout particle_layout;
-    particle_layout.addParticle(
-        new Particle(particle_material,
-                     FormFactorCylinder(m_cylinder_radius,
-                                            m_cylinder_height)),
-        0.0, m_cylinder_ratio);
-    particle_layout.addParticle(
-        new Particle(particle_material,
-                     FormFactorPrism3(m_prism3_length,
-                                          m_prism3_height
-                                          )),
-        0.0, 1.0 - m_cylinder_ratio);
+    Particle particle1(particle_material, FormFactorCylinder(
+                           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.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule3.cpp b/App/src/TestFittingModule3.cpp
index 1d2db2db00a333327eab87f1c95ae5829d426684..87eb0bd4c36c800e7655a026d516273f20008973 100644
--- a/App/src/TestFittingModule3.cpp
+++ b/App/src/TestFittingModule3.cpp
@@ -125,9 +125,13 @@ void TestFittingModule3::initializeSample()
     air_layer.setMaterial(air_material);
     Layer substrate_layer;
     substrate_layer.setMaterial(substrate_material);
+    Particle particle1(particle_material, FormFactorCylinder(
+                           cylinder_radius, cylinder_height) );
+    Particle particle2(particle_material, FormFactorPrism3(
+                           prism3_length, prism3_height) );
     ParticleLayout particle_layout;
-    particle_layout.addParticle(new Particle(particle_material, FormFactorCylinder(cylinder_radius, cylinder_height)),0.0, 0.2);
-    particle_layout.addParticle(new Particle(particle_material, FormFactorPrism3(prism3_length, prism3_height)), 0.0, 0.8);
+    particle_layout.addParticle(particle1,0.0, 0.2);
+    particle_layout.addParticle(particle2, 0.0, 0.8);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/App/src/TestFittingModule4.cpp b/App/src/TestFittingModule4.cpp
index c5737883b23e8fb574bc6d04db618ccc095fa79d..952a87dabebe72de12d5d5823e351a9c687b824e 100644
--- a/App/src/TestFittingModule4.cpp
+++ b/App/src/TestFittingModule4.cpp
@@ -140,8 +140,9 @@ void TestFittingModule4::initializeSample()
 
     Layer air_layer;
     air_layer.setMaterial(air_material);
-    ParticleLayout particle_layout( new Particle(particle_material,
-            FormFactorCylinder(5*Units::nanometer, 5*Units::nanometer)));
+    Particle particle(particle_material, FormFactorCylinder(
+                          5*Units::nanometer, 5*Units::nanometer) );
+    ParticleLayout particle_layout(particle);
 
     air_layer.addLayout(particle_layout);
 
diff --git a/App/src/TestFormFactors.cpp b/App/src/TestFormFactors.cpp
index 206dac8ef2724b96d43aa452b9fcb16a3c5c4451..c2fb5be9c2b0d0a0d29df9d3709860f607a9fec2 100644
--- a/App/src/TestFormFactors.cpp
+++ b/App/src/TestFormFactors.cpp
@@ -136,8 +136,8 @@ void TestFormFactors::run_isgisaxs_simulation(IFormFactor *p_form_factor)
     air_layer.setMaterial(air_material);
 
     mp_form_factor=p_form_factor;
-    ParticleLayout particle_layout( new Particle(particle_material,
-                                                         *mp_form_factor));
+    Particle particle(particle_material, *mp_form_factor);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
     air_layer.addLayout(particle_layout);
     multi_layer.addLayer(air_layer);
diff --git a/App/src/TestMiscellaneous.cpp b/App/src/TestMiscellaneous.cpp
index ae2b9ebc7d599302822efd70cfed97e922afc42e..b048b61ea74ec01a731d7f1e7b0ba3f566bc579f 100644
--- a/App/src/TestMiscellaneous.cpp
+++ b/App/src/TestMiscellaneous.cpp
@@ -510,9 +510,9 @@ void TestMiscellaneous::test_SampleGeometry()
     HomogeneousMaterial particle_material("Particle", n_particle);
 
     Layer air_layer(air_material);
-    ParticleLayout particle_layout
-        (new Particle(particle_material, FormFactorFullSphere
-                      (5*Units::nanometer)));
+    Particle particle(particle_material, FormFactorFullSphere(
+                          5*Units::nanometer) );
+    ParticleLayout particle_layout(particle);
 
     air_layer.addLayout(particle_layout);
 
diff --git a/App/src/TestPolarizedMeso.cpp b/App/src/TestPolarizedMeso.cpp
index 8d33a320e6e41872bab98718691761a4b48c9e85..0cc00170bd315478fd7ec9e0dfdb7c4c12bd29e2 100644
--- a/App/src/TestPolarizedMeso.cpp
+++ b/App/src/TestPolarizedMeso.cpp
@@ -20,6 +20,7 @@
 #include "InterferenceFunctionNone.h"
 #include "FormFactors.h"
 #include "MesoCrystal.h"
+#include <boost/scoped_ptr.hpp>
 
 
 TestPolarizedMeso::TestPolarizedMeso()
@@ -106,10 +107,10 @@ MultiLayer* TestPolarizedMeso::createSample() const
                 Geometry::Transform3D::createRotateZ(phi_start + i*phi_step);
             double meso_size = m_meso_width + j*m_meso_size_steps;
             FormFactorBox ff_box(meso_size, meso_size, meso_size);
-            particle_layout.addParticle(
-                createMeso(m_lattice_length_a, m_lattice_length_c,
-                        particle_material, m_nanoparticle_size, &ff_box),
-                transform);
+            boost::scoped_ptr<MesoCrystal> meso(createMeso(
+                             m_lattice_length_a, m_lattice_length_c,
+                             particle_material, m_nanoparticle_size, &ff_box) );
+            particle_layout.addParticle(*meso, transform);
         }
     }
 
diff --git a/Core/PythonAPI/src/ParticleLayout.pypp.cpp b/Core/PythonAPI/src/ParticleLayout.pypp.cpp
index 5d8887fec7646ffa3fb05bc4ccd991147a1118b5..8eac39eedf1cf86a23a29cd15b3e633befe09f87 100644
--- a/Core/PythonAPI/src/ParticleLayout.pypp.cpp
+++ b/Core/PythonAPI/src/ParticleLayout.pypp.cpp
@@ -319,7 +319,7 @@ void register_ParticleLayout_class(){
             ParticleLayout_exposer.def( 
                 "addParticle"
                 , addParticle_function_type( &::ParticleLayout::addParticle )
-                , ( bp::arg("p_particle"), bp::arg("transform"), bp::arg("depth")=0, bp::arg("abundance")=1.0e+0 ) );
+                , ( bp::arg("p_particle"), bp::arg("transform"), bp::arg("depth")=0.0, bp::arg("abundance")=1.0e+0 ) );
         
         }
         { //::ParticleLayout::addParticle
diff --git a/Core/Samples/inc/ParticleLayout.h b/Core/Samples/inc/ParticleLayout.h
index cc3ed23cce858c345db9e1f3b86e75a246010f52..e6880e7d7bf6aaa6234e9bd0cd7455eabbe383d3 100644
--- a/Core/Samples/inc/ParticleLayout.h
+++ b/Core/Samples/inc/ParticleLayout.h
@@ -29,8 +29,6 @@ class BA_CORE_API_ ParticleLayout : public ILayout
 {
 public:
     ParticleLayout();
-    ParticleLayout(
-        Particle* p_particle, double depth=0., double abundance=1.);
     ParticleLayout(
         const Particle& p_particle, double depth=0., double abundance=1.);
 
@@ -45,19 +43,13 @@ public:
     virtual void accept(ISampleVisitor *visitor) const { visitor->visit(this); }
 
     //! Adds generic particle
-    void addParticle(
-        Particle *p_particle, const Geometry::Transform3D& transform,
-        double depth=0, double abundance=1.0);
-
     void addParticle(
         const Particle& p_particle, const Geometry::Transform3D& transform,
-        double depth=0, double abundance=1.0);
-
-    //! Adds particle without rotation
-    void addParticle(Particle *p_particle, double depth=0.0, double abundance=1.0);
+        double depth=0.0, double abundance=1.0);
 
     //! Adds particle without rotation
-    void addParticle(const Particle& particle, double depth=0.0, double abundance=1.0);
+    void addParticle(const Particle& particle, double depth=0.0,
+                     double abundance=1.0);
 
     //! Adds particle info
     void addParticleInfo(const ParticleInfo& info);
diff --git a/Core/Samples/src/ParticleLayout.cpp b/Core/Samples/src/ParticleLayout.cpp
index 43b8efdc7e97cb3ceb920eb98acb99ae3aeb360c..2332ad1fa40eb04cb486778f7b75ce5a46539a2f 100644
--- a/Core/Samples/src/ParticleLayout.cpp
+++ b/Core/Samples/src/ParticleLayout.cpp
@@ -28,20 +28,12 @@ ParticleLayout::ParticleLayout()
     setName("ParticleLayout");
 }
 
-ParticleLayout::ParticleLayout(
-        Particle* p_particle, double depth, double abundance)
-: m_total_abundance(0.0)
-{
-    setName("ParticleLayout");
-    addParticle(p_particle, depth, abundance);
-}
-
 ParticleLayout::ParticleLayout(
         const Particle& p_particle, double depth, double abundance)
 : m_total_abundance(0.0)
 {
     setName("ParticleLayout");
-    addParticle(p_particle.clone(), depth, abundance);
+    addParticle(p_particle, depth, abundance);
 }
 
 ParticleLayout::~ParticleLayout()
@@ -86,20 +78,6 @@ ParticleLayout* ParticleLayout::cloneInvertB() const
     return p_new;
 }
 
-//! Adds generic particle, *-version.
-void ParticleLayout::addParticle(
-    Particle* p_particle, const Geometry::Transform3D& transform,
-    double depth, double abundance)
-{
-    if(!abundance) {
-        throw LogicErrorException("ParticleLayout::addParticle() ->"
-                " Error! Abundance can't be equal to 0.0");
-    }
-    p_particle->setTransformation(transform);
-    addAndRegisterParticleInfo(
-        new ParticleInfo(p_particle, depth, abundance));
-}
-
 //! Adds generic particle, &-version.
 void ParticleLayout::addParticle(
     const Particle& p_particle, const Geometry::Transform3D& transform,
@@ -115,15 +93,6 @@ void ParticleLayout::addParticle(
         new ParticleInfo(p_particle_clone, depth, abundance));
 }
 
-//! Adds particle without rotation, *-version.
-void ParticleLayout::addParticle(
-    Particle* p_particle,
-    double depth, double abundance)
-{
-    addAndRegisterParticleInfo(
-        new ParticleInfo(p_particle, depth, abundance));
-}
-
 //! Adds particle without rotation, &-version.
 void ParticleLayout::addParticle(
     const Particle& p_particle,
diff --git a/Core/StandardSamples/IsGISAXS03Builder.cpp b/Core/StandardSamples/IsGISAXS03Builder.cpp
index b69ea5661312dc2c5b65aefbf7ea698ab5e4ea47..6d6b966f97af50ae38cfdc8d73b39230e1335d1c 100644
--- a/Core/StandardSamples/IsGISAXS03Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS03Builder.cpp
@@ -56,7 +56,8 @@ ISample *IsGISAXS03DWBABuilder::buildSample() const
 
     FormFactorCylinder ff_cylinder(m_radius, m_height);
 
-    ParticleLayout particle_layout( new Particle(particle_material,ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/Core/StandardSamples/IsGISAXS04Builder.cpp b/Core/StandardSamples/IsGISAXS04Builder.cpp
index b39404225f9cb1c20b61f5bd51623149e01be8bf..1dab26359bf4a4bc85a05aa3223c2558f3a3c8a8 100644
--- a/Core/StandardSamples/IsGISAXS04Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS04Builder.cpp
@@ -61,8 +61,8 @@ ISample *IsGISAXS04Para1DBuilder::buildSample() const
     p_interference_function->setProbabilityDistribution(pdf);
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
 
-    ParticleLayout particle_layout( new Particle(
-            particle_material, ff_cylinder ) );
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(p_interference_function);
 
     air_layer.addLayout(particle_layout);
diff --git a/Core/StandardSamples/IsGISAXS06Builder.cpp b/Core/StandardSamples/IsGISAXS06Builder.cpp
index 6a18f1a30e413133fc9008d0b1360d751f7ee096..50189d9cbe6d59bbedc191c33b98f0b3f89ee3a0 100644
--- a/Core/StandardSamples/IsGISAXS06Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS06Builder.cpp
@@ -49,8 +49,8 @@ ISample *IsGISAXS06Lattice1Builder::buildSample() const
     // particles
     ParticleLayout particle_layout;
     FormFactorCylinder ff_cyl(5.0*Units::nanometer, 5.0*Units::nanometer);
-    particle_layout.addParticle(
-                new Particle(particle_material, ff_cyl), 0.0, 1.0);
+    Particle particle(particle_material, ff_cyl);
+    particle_layout.addParticle(particle, 0.0, 1.0);
 
     particle_layout.addInterferenceFunction(p_interference_function);
 
diff --git a/Core/StandardSamples/IsGISAXS08Builder.cpp b/Core/StandardSamples/IsGISAXS08Builder.cpp
index c98af63518194684a5bcbea11d8f0330b54d2fde..fa37bdee3439522314db768df0a5a410c718d57e 100644
--- a/Core/StandardSamples/IsGISAXS08Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS08Builder.cpp
@@ -48,7 +48,8 @@ ISample *IsGISAXS08ABuilder::buildSample() const
 
     FormFactorCylinder ff_cylinder(5.0*Units::nanometer, 5.0*Units::nanometer);
 
-    ParticleLayout particle_layout( new Particle(particle_material, ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(p_interference_function);
 
     air_layer.addLayout(particle_layout);
@@ -90,7 +91,8 @@ ISample *IsGISAXS08BBuilder::buildSample() const
 
     FormFactorCylinder ff_cylinder(5*Units::nanometer, 5*Units::nanometer);
 
-    ParticleLayout particle_layout( new Particle(particle_material,ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(p_interference_function);
 
     air_layer.addLayout(particle_layout);
diff --git a/Core/StandardSamples/IsGISAXS09Builder.cpp b/Core/StandardSamples/IsGISAXS09Builder.cpp
index bae8eb71ae389844044c170fc2b814209bc3cd07..633f50f8760877ce6a00b89cf6e5e68f1f43b8fe 100644
--- a/Core/StandardSamples/IsGISAXS09Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS09Builder.cpp
@@ -56,7 +56,8 @@ ISample *IsGISAXS09ABuilder::buildSample() const
 
     FormFactorPyramid ff_pyramid(m_length, m_height, m_alpha);
 
-    ParticleLayout particle_layout(new Particle(particle_material, ff_pyramid ));
+    Particle particle(particle_material, ff_pyramid);
+    ParticleLayout particle_layout(particle);
 
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
@@ -105,7 +106,7 @@ ISample *IsGISAXS09BBuilder::buildSample() const
 
     FormFactorPyramid ff_pyramid(m_length, m_height, m_alpha);
 
-    Particle *pyramid = new Particle(particle_material, ff_pyramid);
+    Particle pyramid(particle_material, ff_pyramid);
 
     Geometry::Transform3D transform =
             Geometry::Transform3D::createRotateZ(m_zangle);
diff --git a/Core/StandardSamples/IsGISAXS10Builder.cpp b/Core/StandardSamples/IsGISAXS10Builder.cpp
index ae89ec0094cee42e181e83942f5919b355784c10..8ebaae427ae17595a4fac194fc4013bcd1d1c9b2 100644
--- a/Core/StandardSamples/IsGISAXS10Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS10Builder.cpp
@@ -55,7 +55,8 @@ ISample *IsGISAXS10Builder::buildSample() const
     p_interference_function->setProbabilityDistribution(pdf);
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
 
-    ParticleLayout particle_layout(new Particle(particle_material, ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(p_interference_function);
 
     air_layer.addLayout(particle_layout);
diff --git a/Core/StandardSamples/IsGISAXS11Builder.cpp b/Core/StandardSamples/IsGISAXS11Builder.cpp
index c2e640ce002a708ded4af8468e5756ac21ae46a8..0e0df0b3b9f1f81d33d7924ae721928bd303510f 100644
--- a/Core/StandardSamples/IsGISAXS11Builder.cpp
+++ b/Core/StandardSamples/IsGISAXS11Builder.cpp
@@ -49,7 +49,7 @@ ISample *IsGISAXS11Builder::buildSample() const
 
     kvector_t core_position(0.0, 0.0, 0.0);
     ParticleCoreShell particle(shell_particle, core_particle, core_position);
-    ParticleLayout particle_layout(particle.clone());
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/Core/StandardSamples/MesoCrystal01Builder.cpp b/Core/StandardSamples/MesoCrystal01Builder.cpp
index a8a517a72b52117a52aa4733991402e8de7bf203..d3c762362cd808e562191b0ee8e220fb7b472841 100644
--- a/Core/StandardSamples/MesoCrystal01Builder.cpp
+++ b/Core/StandardSamples/MesoCrystal01Builder.cpp
@@ -24,6 +24,7 @@
 #include "Units.h"
 #include "Materials.h"
 #include "FormFactorSphereGaussianRadius.h"
+#include <boost/scoped_ptr.hpp>
 
 
 MesoCrystal01Builder::MesoCrystal01Builder()
@@ -108,11 +109,10 @@ ISample* MesoCrystal01Builder::buildSample() const
                 Geometry::Transform3D::createRotateZ(phi_start + i*phi_step);
 //            Geometry::Transform3D transform2 =
 //                Geometry::Transform3D::createRotateY(alpha_start + j*alpha_step);
-            particle_layout.addParticle(
-                createMesoCrystal(
-                    m_lattice_length_a, m_lattice_length_c,
-                    n_particle_adapted, &ff_meso),
-                transform, m_meso_height);
+            boost::scoped_ptr<MesoCrystal> meso(createMesoCrystal(
+                                    m_lattice_length_a, m_lattice_length_c,
+                                    n_particle_adapted, &ff_meso) );
+            particle_layout.addParticle(*meso, transform, m_meso_height);
         }
     }
 
diff --git a/Core/StandardSamples/PolarizedDWBAMagCylindersBuilder.cpp b/Core/StandardSamples/PolarizedDWBAMagCylindersBuilder.cpp
index d4c27927b8066d08b6984a828bb973de8b164578..501a296dbd105a1add7ff90572495de27712f092 100644
--- a/Core/StandardSamples/PolarizedDWBAMagCylindersBuilder.cpp
+++ b/Core/StandardSamples/PolarizedDWBAMagCylindersBuilder.cpp
@@ -45,7 +45,7 @@ void PolarizedDWBAMagCylinders1Builder::init_parameters()
 
 ISample *PolarizedDWBAMagCylinders1Builder::buildSample() const
 {
-	MultiLayer *multi_layer = new MultiLayer();
+    MultiLayer *multi_layer = new MultiLayer();
 
     HomogeneousMaterial air_material("Air", 0.0, 0.0);
     HomogeneousMaterial substrate_material("Substrate", 6e-6, 2e-8);
@@ -57,9 +57,8 @@ ISample *PolarizedDWBAMagCylinders1Builder::buildSample() const
 
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
 
-    ParticleLayout particle_layout(
-            new Particle(particle_material,
-                    ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
 
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
@@ -103,8 +102,8 @@ ISample *PolarizedDWBAMagCylinders2Builder::buildSample() const
 
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
 
-    ParticleLayout particle_layout(
-            new Particle(particle_material,ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
 
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
diff --git a/Core/Tools/src/ParameterPool.cpp b/Core/Tools/src/ParameterPool.cpp
index fae936bf86eac3e067321edd8574c5e0dde98f03..bd2c981f9f0cf7d3fe99f9c89be59ccb16c4c2af 100644
--- a/Core/Tools/src/ParameterPool.cpp
+++ b/Core/Tools/src/ParameterPool.cpp
@@ -105,8 +105,6 @@ bool ParameterPool::setParameterValue(const std::string& name, double value)
 {
     parameter_t x = getParameter(name);
     if( x.isNull() ) {
-//        msglog(MSG::FATAL) << "ParameterPool::setParameterValue() -> Error. No parameter with name '" << name << "'";
-//        throw LogicErrorException("ParameterPool::setParameterValue() -> Error. No such parameter");
         throw LogicErrorException("ParameterPool::getMatchedParameters() -> Error! " + get_error_message(name));
     }
     x.setValue(value);
diff --git a/Tests/FunctionalTests/TestCore/FormFactors/TestFormFactors.cpp b/Tests/FunctionalTests/TestCore/FormFactors/TestFormFactors.cpp
index bab5e00e622c2feeacff5302d7d3faaa3d9177fe..f11d08f939fd87ea6648829f83fbf64c2c41c01a 100644
--- a/Tests/FunctionalTests/TestCore/FormFactors/TestFormFactors.cpp
+++ b/Tests/FunctionalTests/TestCore/FormFactors/TestFormFactors.cpp
@@ -24,8 +24,8 @@ OutputData<double> *run_simulation(IFormFactor *form_factor)
     Layer air_layer;
     air_layer.setMaterial(air_material);
 
-    ParticleLayout particle_layout( new Particle(particle_material,
-                                                         *form_factor));
+    Particle particle(particle_material, *form_factor);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
     air_layer.addLayout(particle_layout);
     multi_layer.addLayer(air_layer);
diff --git a/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp b/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp
index f68631cdee261345032bc1eb0affdf1183c73f62..bf96f49c2537710457052b2439e3729cef281aac 100644
--- a/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp
+++ b/Tests/FunctionalTests/TestFit/TestFit01/TestFit01.cpp
@@ -118,7 +118,8 @@ ISample *TestFit01::buildSample()
 
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
 
-    ParticleLayout particle_layout( new Particle(particle_material, ff_cylinder));
+    Particle particle(particle_material, ff_cylinder);
+    ParticleLayout particle_layout(particle);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp b/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp
index 9bd6fc21cf53af643b22d4775cd05d1db525b0e7..34e57b78cbd7d80243c46105f9c1ec0f9bd8a8f6 100644
--- a/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp
+++ b/Tests/FunctionalTests/TestFit/TestFit02/SampleBuilder.cpp
@@ -53,8 +53,10 @@ ISample *SampleBuilder::buildSample() const
     FormFactorCylinder ff_cylinder(m_cylinder_radius, m_cylinder_height);
     FormFactorPrism3 ff_prism3(m_prism3_length, m_prism3_height);
 
-    particle_layout.addParticle(new Particle(particle_material, ff_cylinder),0.0, m_cylinder_ratio);
-    particle_layout.addParticle(new Particle(particle_material, ff_prism3), 0.0, 1.0 - m_cylinder_ratio);
+    Particle particle_cyl(particle_material, ff_cylinder);
+    Particle particle_prism3(particle_material, ff_prism3);
+    particle_layout.addParticle(particle_cyl, 0.0, m_cylinder_ratio);
+    particle_layout.addParticle(particle_prism3, 0.0, 1.0 - m_cylinder_ratio);
     particle_layout.addInterferenceFunction(new InterferenceFunctionNone());
 
     air_layer.addLayout(particle_layout);
diff --git a/Tests/UnitTests/TestCore/ParticleLayoutTest.h b/Tests/UnitTests/TestCore/ParticleLayoutTest.h
index d34fbe80fe3e1939c6098c9087b82f4a666e8ad8..831226ae935eef8bd7958aade9049c150844d78c 100644
--- a/Tests/UnitTests/TestCore/ParticleLayoutTest.h
+++ b/Tests/UnitTests/TestCore/ParticleLayoutTest.h
@@ -46,7 +46,7 @@ TEST_F(ParticleLayoutTest, ParticleLayoutInitByValue)
 TEST_F(ParticleLayoutTest, ParticleLayoutInitByRef)
 {
     HomogeneousMaterial mat("Stone",0,0);
-    Particle * particle = new Particle(mat);
+    Particle particle(mat);
 
     ParticleLayout particleDecoration(particle, 3.0, -2.0);
 
@@ -102,13 +102,13 @@ TEST_F(ParticleLayoutTest, ParticleLayoutAddParticle)
     Particle particle1(mat1);
 
     HomogeneousMaterial mat2("Stone",0,0);
-    Particle * particle2 = new Particle(mat2);
+    Particle particle2(mat2);
 
     HomogeneousMaterial mat3("wood",0,0);
     Particle particle3(mat3);
 
     HomogeneousMaterial mat4("silica",0,0);
-    Particle * particle4 = new Particle(mat4);
+    Particle particle4(mat4);
 
     Geometry::Transform3D transform3 =
             Geometry::Transform3D::createRotateY(45.*Units::degree);
@@ -165,13 +165,13 @@ TEST_F(ParticleLayoutTest, ParticleLayoutAbundanceFraction)
     Particle particle1(mat1);
 
     HomogeneousMaterial mat2("Stone",0,0);
-    Particle * particle2 = new Particle(mat2);
+    Particle particle2(mat2);
 
     HomogeneousMaterial mat3("wood",0,0);
     Particle particle3(mat3);
 
     HomogeneousMaterial mat4("silica",0,0);
-    Particle * particle4 = new Particle(mat4);
+    Particle particle4(mat4);
 
     Geometry::Transform3D transform3 =
             Geometry::Transform3D::createRotateY(45.*Units::degree);
@@ -209,13 +209,13 @@ TEST_F(ParticleLayoutTest, ParticleLayoutClone)
     Particle particle1(mat1);
 
     HomogeneousMaterial mat2 ("Stone",0,0);
-    Particle * particle2 = new Particle(mat2);
+    Particle particle2(mat2);
 
     HomogeneousMaterial mat3("wood",0,0);
     Particle particle3(mat3);
 
     HomogeneousMaterial mat4("silica",0,0);
-    Particle * particle4 = new Particle(mat4);
+    Particle particle4(mat4);
 
     Geometry::Transform3D transform3 =
             Geometry::Transform3D::createRotateY(45.*Units::degree);
@@ -304,13 +304,13 @@ TEST_F(ParticleLayoutTest, ParticleLayoutCloneInvertB)
     Particle particle1(mat1);
 
     HomogeneousMaterial mat2("Stone",0,0);
-    Particle * particle2 = new Particle(mat2);
+    Particle particle2(mat2);
 
     HomogeneousMaterial mat3("wood",0,0);
     Particle particle3(mat3);
 
     HomogeneousMaterial mat4("silica",0,0);
-    Particle * particle4 = new Particle(mat4);
+    Particle particle4(mat4);
 
     Geometry::Transform3D transform3 =
             Geometry::Transform3D::createRotateY(45.*Units::degree);