diff --git a/GUI/Model/Sample/FTDecayFunctionItems.cpp b/GUI/Model/Sample/FTDecayFunctionItems.cpp
index fcf4001067f498ad7dfb2b4a8bc5ddea408b36cb..740aea9b4dc9bf81a82d327b47cccba8d7dca98a 100644
--- a/GUI/Model/Sample/FTDecayFunctionItems.cpp
+++ b/GUI/Model/Sample/FTDecayFunctionItems.cpp
@@ -14,6 +14,7 @@
 
 #include "GUI/Model/Sample/FTDecayFunctionItems.h"
 #include "Base/Const/Units.h"
+#include "GUI/Model/Session/Serializer.h"
 #include <QList>
 
 // --------------------------------------------------------------------------------------------- //
@@ -24,6 +25,12 @@ FTDecayFunction1DItem::FTDecayFunction1DItem()
                        Unit::nanometer, "decay");
 }
 
+void FTDecayFunction1DItem::serialize(Serializer& s)
+{
+    s.assertVersion(0);
+    s.rw(m_decayLength);
+}
+
 DoubleDescriptor FTDecayFunction1DItem::decayLength() const
 {
     return m_decayLength;
@@ -68,6 +75,13 @@ std::unique_ptr<IFTDecayFunction1D> FTDecayFunction1DVoigtItem::createFTDecayFun
     return std::make_unique<FTDecayFunction1DVoigt>(decayLength(), m_eta);
 }
 
+void FTDecayFunction1DVoigtItem::serialize(Serializer& s)
+{
+    s.assertVersion(0);
+    s.rw(m_decayLength);
+    s.rw(m_eta);
+}
+
 DoubleDescriptor FTDecayFunction1DVoigtItem::eta() const
 {
     return m_eta;
@@ -94,6 +108,14 @@ FTDecayFunction2DItem::FTDecayFunction2DItem()
                  Unit::degree, "gamma");
 }
 
+void FTDecayFunction2DItem::serialize(Serializer& s)
+{
+    s.assertVersion(0);
+    s.rw(m_decayLengthX);
+    s.rw(m_decayLengthY);
+    s.rw(m_gamma);
+}
+
 DoubleDescriptor FTDecayFunction2DItem::decayLengthX() const
 {
     return m_decayLengthX;
@@ -159,6 +181,15 @@ std::unique_ptr<IFTDecayFunction2D> FTDecayFunction2DVoigtItem::createFTDecayFun
                                                     Units::deg2rad(gamma()));
 }
 
+void FTDecayFunction2DVoigtItem::serialize(Serializer& s)
+{
+    s.assertVersion(0);
+    s.rw(m_decayLengthX);
+    s.rw(m_decayLengthY);
+    s.rw(m_gamma);
+    s.rw(m_eta);
+}
+
 void FTDecayFunction2DVoigtItem::setEta(const double eta)
 {
     m_eta.set(eta);
diff --git a/GUI/Model/Sample/FTDecayFunctionItems.h b/GUI/Model/Sample/FTDecayFunctionItems.h
index c7525cfec608e115fde6f516550a453a8385f0de..ab79420c147b87d08de9187ad39995b9b554e587 100644
--- a/GUI/Model/Sample/FTDecayFunctionItems.h
+++ b/GUI/Model/Sample/FTDecayFunctionItems.h
@@ -21,10 +21,13 @@
 #include "Sample/Correlations/FTDecay2D.h"
 #include <memory>
 
+class Serializer;
+
 class FTDecayFunction1DItem {
 public:
     virtual ~FTDecayFunction1DItem() = default;
     virtual std::unique_ptr<IFTDecayFunction1D> createFTDecayFunction() const = 0;
+    virtual void serialize(Serializer& s);
 
     DoubleDescriptor decayLength() const;
     virtual DoubleDescriptors valueDescriptors() const;
@@ -53,6 +56,7 @@ class FTDecayFunction1DVoigtItem : public FTDecayFunction1DItem {
 public:
     FTDecayFunction1DVoigtItem();
     std::unique_ptr<IFTDecayFunction1D> createFTDecayFunction() const override;
+    void serialize(Serializer& s) override;
 
     DoubleDescriptor eta() const;
     DoubleDescriptors valueDescriptors() const override;
@@ -67,6 +71,7 @@ class FTDecayFunction2DItem {
 public:
     virtual ~FTDecayFunction2DItem() = default;
     virtual std::unique_ptr<IFTDecayFunction2D> createFTDecayFunction() const = 0;
+    virtual void serialize(Serializer& s);
 
     DoubleDescriptor decayLengthX() const;
     void setDecayLengthX(double decay_length_x);
@@ -101,6 +106,7 @@ class FTDecayFunction2DVoigtItem : public FTDecayFunction2DItem {
 public:
     FTDecayFunction2DVoigtItem();
     std::unique_ptr<IFTDecayFunction2D> createFTDecayFunction() const override;
+    void serialize(Serializer& s) override;
 
     void setEta(double eta);
     DoubleDescriptor eta() const;