diff --git a/Core/Particle/IAbstractParticle.cpp b/Core/Particle/IAbstractParticle.cpp
index 7f3afc36c058719f9f38f79263bbf7788b6cb576..fac41db3e0c165c3fd6eb8acd497d2a0a16b5a3b 100644
--- a/Core/Particle/IAbstractParticle.cpp
+++ b/Core/Particle/IAbstractParticle.cpp
@@ -14,9 +14,10 @@
 
 #include "Core/Particle/IAbstractParticle.h"
 
-IAbstractParticle::IAbstractParticle() : m_abundance(1.0) {}
-
-IAbstractParticle::~IAbstractParticle() {}
+IAbstractParticle::IAbstractParticle(const NodeMeta& meta, const std::vector<double>& PValues)
+    : ISample(meta, PValues)
+{
+}
 
 void IAbstractParticle::accept(INodeVisitor* visitor) const
 {
diff --git a/Core/Particle/IAbstractParticle.h b/Core/Particle/IAbstractParticle.h
index 63d7dceb398ff5abaf1a23475570d468b3c4fd00..a0311484aad6f68a6c00c12d41cdf5555288d608 100644
--- a/Core/Particle/IAbstractParticle.h
+++ b/Core/Particle/IAbstractParticle.h
@@ -29,8 +29,9 @@ class IRotation;
 class BA_CORE_API_ IAbstractParticle : public ISample
 {
 public:
-    IAbstractParticle();
-    virtual ~IAbstractParticle();
+    IAbstractParticle() = default;
+    IAbstractParticle(const NodeMeta& meta, const std::vector<double>& PValues);
+    virtual ~IAbstractParticle() = default;
 
     virtual IAbstractParticle* clone() const = 0;
 
@@ -50,7 +51,7 @@ public:
     virtual void rotate(const IRotation& rotation) = 0;
 
 protected:
-    double m_abundance;
+    double m_abundance { 1.0 }; // not a Parameter
 };
 
 #endif // BORNAGAIN_CORE_PARTICLE_IABSTRACTPARTICLE_H