diff --git a/GUI/Model/Job/FitSuiteItem.cpp b/GUI/Model/Job/FitSuiteItem.cpp
index 2c52cea0aa81743859275c7d9d1545e427554e82..f1df138e0ff43174167ab6a1700e1d0cf1bb0d53 100644
--- a/GUI/Model/Job/FitSuiteItem.cpp
+++ b/GUI/Model/Job/FitSuiteItem.cpp
@@ -23,20 +23,30 @@ namespace {
 
 namespace Tag {
 
+const QString UpdateInterval("UpdateInterval");
+const QString IterationsCount("IterationsCount");
+const QString Chi2("Chi2");
+
+const QString MinimizerContainer("MinimizerContainer");
 const QString FitParameterContainer("FitParameterContainer");
 
 } // namespace Tag
 
+namespace Attrib {
+
+const QString value("value");
+
+} // namespace Attrib
+
 } // namespace
 
 FitSuiteItem::FitSuiteItem()
     : SessionItem(M_TYPE)
+    , m_updateInterval(10)
+    , m_iterCount(0)
+    , m_chi2(0.0)
 {
-    addProperty(P_UPDATE_INTERVAL, int(10));
-    addProperty(P_ITERATION_COUNT, int(0));
-    addProperty(P_CHI2, double(0.0));
-
-    registerTag(T_MINIMIZER, 1, 1, {MinimizerContainerItem::M_TYPE});
+    setObjectName("FitSuite");
 }
 
 FitParameterContainerItem* FitSuiteItem::createFitParametersContainer()
@@ -56,52 +66,75 @@ FitParameterContainerItem* FitSuiteItem::fitParameterContainerItem()
 
 MinimizerContainerItem* FitSuiteItem::createMinimizerContainer()
 {
-    if (getItem(T_MINIMIZER))
+    if (m_minimizerContainer)
         throw Error("FitSuiteItem::createMinimizerContainer() -> Error. Attempt to create "
                     "a second MinimizerContainer.");
 
-    return model()->insertItem<MinimizerContainerItem>(this, -1, T_MINIMIZER);
+    m_minimizerContainer = std::make_unique<MinimizerContainerItem>();
+    return m_minimizerContainer.get();
 }
 
 MinimizerContainerItem* FitSuiteItem::minimizerContainerItem()
 {
-    return item<MinimizerContainerItem>(T_MINIMIZER);
+    return m_minimizerContainer.get();
 }
 
 int FitSuiteItem::updateInterval() const
 {
-    return getItemValue(P_UPDATE_INTERVAL).toInt();
+    return m_updateInterval;
 }
 
-void FitSuiteItem::setUpdateInterval(const int interval)
+void FitSuiteItem::setUpdateInterval(int interval)
 {
-    setItemValue(P_UPDATE_INTERVAL, interval);
+    m_updateInterval = interval;
     emit updateIntervalChanged(interval);
 }
 
 int FitSuiteItem::iterationCount() const
 {
-    return getItemValue(P_ITERATION_COUNT).toInt();
+    return m_iterCount;
 }
 
-void FitSuiteItem::setIterationCount(const int count)
+void FitSuiteItem::setIterationCount(int count)
 {
-    setItemValue(P_ITERATION_COUNT, count);
+    m_iterCount = count;
     emit iterationCountChanged(count);
 }
 
 double FitSuiteItem::chi2() const
 {
-    return getItemValue(P_CHI2).toDouble();
+    return m_chi2;
 }
 
 void FitSuiteItem::setChi2(const double chi2)
 {
-    setItemValue(P_CHI2, chi2);
+    m_chi2 = chi2;
 }
 
 void FitSuiteItem::writeNonSessionItems(QXmlStreamWriter* writer) const
 {
+    // update interval
+    writer->writeStartElement(Tag::UpdateInterval);
+    GUI::Session::XML::writeAttribute(writer, Attrib::value, m_updateInterval);
+    writer->writeEndElement();
+
+    // iterations count
+    writer->writeStartElement(Tag::IterationsCount);
+    GUI::Session::XML::writeAttribute(writer, Attrib::value, m_iterCount);
+    writer->writeEndElement();
+
+    // chi2
+    writer->writeStartElement(Tag::Chi2);
+    GUI::Session::XML::writeAttribute(writer, Attrib::value, m_chi2);
+    writer->writeEndElement();
+
+    // minimizer container
+    if (m_minimizerContainer) {
+        writer->writeStartElement(Tag::MinimizerContainer);
+        m_minimizerContainer->writeTo(writer);
+        writer->writeEndElement();
+    }
+
     // fit parameter container
     if (m_fitContainer) {
         writer->writeStartElement(Tag::FitParameterContainer);
@@ -114,12 +147,34 @@ void FitSuiteItem::readNonSessionItems(QXmlStreamReader* reader)
 {
     while (reader->readNextStartElement()) {
 
-        // fit parameter container
-        if (reader->name() == Tag::FitParameterContainer) {
-            if (!m_fitContainer)
-                createFitParametersContainer();
-            m_fitContainer->readFrom(reader);
-            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::FitParameterContainer);
+        // update interval
+        if (reader->name() == Tag::UpdateInterval) {
+            GUI::Session::XML::readAttribute(reader, Attrib::value, &m_updateInterval);
+            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::UpdateInterval);
+
+            // iterations count
+        } else if (reader->name() == Tag::IterationsCount) {
+            GUI::Session::XML::readAttribute(reader, Attrib::value, &m_iterCount);
+            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::IterationsCount);
+
+            // chi2
+        } else if (reader->name() == Tag::Chi2) {
+            GUI::Session::XML::readAttribute(reader, Attrib::value, &m_chi2);
+            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::Chi2);
+
+            // minimizer container
+        } else if (reader->name() == Tag::MinimizerContainer) {
+            if (!m_minimizerContainer)
+                createMinimizerContainer();
+            m_minimizerContainer->readFrom(reader);
+            GUI::Session::XML::gotoEndElementOfTag(reader, Tag::MinimizerContainer);
+
+            // fit parameter container
+        } else if (reader->name() == Tag::FitParameterContainer) {
+                if (!m_fitContainer)
+                    createFitParametersContainer();
+                m_fitContainer->readFrom(reader);
+                GUI::Session::XML::gotoEndElementOfTag(reader, Tag::FitParameterContainer);
 
         } else {
             reader->skipCurrentElement();
diff --git a/GUI/Model/Job/FitSuiteItem.h b/GUI/Model/Job/FitSuiteItem.h
index c91e85d2154b4083a21ec6b1c4afaf8bd025f398..a0be3e4e3d67d1165874f706d90625aa2844f854 100644
--- a/GUI/Model/Job/FitSuiteItem.h
+++ b/GUI/Model/Job/FitSuiteItem.h
@@ -23,12 +23,6 @@ class MinimizerContainerItem;
 
 class BA_CORE_API_ FitSuiteItem : public QObject, public SessionItem {
     Q_OBJECT
-private:
-    static constexpr auto P_UPDATE_INTERVAL{"Update interval"};
-    static constexpr auto P_ITERATION_COUNT{"Number of iterations"};
-    static constexpr auto P_CHI2{"Chi2"};
-    static constexpr auto T_MINIMIZER{"Minimizer settings"};
-
 public:
     static constexpr auto M_TYPE{"FitSuite"};
 
@@ -57,6 +51,10 @@ signals:
     void updateIntervalChanged(int interval);
 
 private:
+    int m_updateInterval;
+    int m_iterCount;
+    double m_chi2;
+    std::unique_ptr<MinimizerContainerItem> m_minimizerContainer;
     std::unique_ptr<FitParameterContainerItem> m_fitContainer;
 };
 
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 0b9d5f280e596771a6888cb140dd15c5695ad697..31e4365aa5d906946cd3dd6cff83dac0e381dcdb 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -12,7 +12,6 @@
 //
 //  ************************************************************************************************
 
-#include "GUI/Model/Job/JobItem.h"
 #include "Base/Util/Assert.h"
 #include "Device/Detector/SimulationAreaIterator.h"
 #include "GUI/Model/CatDevice/InstrumentItemCatalog.h"
@@ -25,6 +24,8 @@
 #include "GUI/Model/Device/InstrumentItems.h"
 #include "GUI/Model/Job/FitParameterContainerItem.h"
 #include "GUI/Model/Job/FitSuiteItem.h"
+#include "GUI/Model/Job/JobItem.h"
+#include "GUI/Model/Job/MinimizerItem.h"
 #include "GUI/Model/Job/ParameterTreeItems.h"
 #include "GUI/Model/Model/SessionXML.h" // writeItemAndChildItems
 #include "GUI/Model/Sample/ItemWithMaterial.h"
diff --git a/Tests/Unit/GUI/TestFitParameterModel.cpp b/Tests/Unit/GUI/TestFitParameterModel.cpp
index dd7e07e25dfe93e55804c27026d043e64e57d435..bdeec6dc656d9e7ec3aedf88349a4fa83085d7ce 100644
--- a/Tests/Unit/GUI/TestFitParameterModel.cpp
+++ b/Tests/Unit/GUI/TestFitParameterModel.cpp
@@ -2,6 +2,7 @@
 #include "GUI/Model/Job/FitParameterItem.h"
 #include "GUI/Model/Job/FitParameterLinkItem.h"
 #include "GUI/Model/Job/FitSuiteItem.h"
+#include "GUI/Model/Job/MinimizerItem.h"
 #include "GUI/Model/Model/FitParameterModel.h"
 #include "GUI/Model/Model/JobModel.h"
 #include "Tests/GTestWrapper/google_test.h"