diff --git a/Sample/Multilayer/Layer.cpp b/Sample/Multilayer/Layer.cpp
index 739a3d12f1e61f5ef2c1dd8edf5c5b69b1243882..1b4082caf68b6bf02b0dfbd4c9f4d42f3c8e44a0 100644
--- a/Sample/Multilayer/Layer.cpp
+++ b/Sample/Multilayer/Layer.cpp
@@ -42,8 +42,8 @@ Layer* Layer::clone() const
 std::vector<const INode*> Layer::nodeChildren() const
 {
     std::vector<const INode*> result;
-    for (const auto& layout : m_layouts)
-        result.push_back(layout.get());
+    for (const auto* layout : m_layouts)
+        result.push_back(layout);
     return result;
 }
 
@@ -55,8 +55,8 @@ void Layer::addLayout(const ParticleLayout& layout)
 std::vector<const ParticleLayout*> Layer::layouts() const
 {
     std::vector<const ParticleLayout*> result;
-    for (const auto& layout : m_layouts)
-        result.push_back(layout.get());
+    for (const auto* layout : m_layouts)
+        result.push_back(layout);
     return result;
 }
 
diff --git a/Sample/Multilayer/Layer.h b/Sample/Multilayer/Layer.h
index 4d09e9eed21bcb96af8a0ab8b14f15d6f923aec9..9f01c2fcb4223c8857d7b1bb4081e40ff3d28e28 100644
--- a/Sample/Multilayer/Layer.h
+++ b/Sample/Multilayer/Layer.h
@@ -16,6 +16,7 @@
 #define BORNAGAIN_SAMPLE_MULTILAYER_LAYER_H
 
 #include "Sample/Material/Material.h"
+#include "Base/Types/OwningVector.h"
 #include "Sample/Scattering/ISampleNode.h"
 
 class ParticleLayout;
@@ -47,10 +48,10 @@ public:
     std::string validate() const override;
 
 private:
-    Material m_material;                                    //!< material
-    R3 m_B_field;                                           //!< cached value of magnetic induction
-    double m_thickness;                                     //!< layer thickness in nanometers
-    std::vector<std::unique_ptr<ParticleLayout>> m_layouts; //!< independent layouts in this layer
+    Material m_material;                    //!< material
+    R3 m_B_field;                           //!< cached value of magnetic induction
+    double m_thickness;                     //!< layer thickness in nanometers
+    OwningVector<ParticleLayout> m_layouts; //!< independent layouts in this layer
     unsigned int m_n_slices = 1; //!< number of slices to create for graded layer approach
 };