diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index 539f91baed9686ad067cf65291571e9e2cac185d..9f0b3440e532977407413981068d37653e2145e5 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -259,60 +259,60 @@ void DataItem::setAxesRangeToData()
     setUpperY(yMax());
 }
 
-void DataItem::writeTo(QXmlStreamWriter* writer) const
+void DataItem::writeTo(QXmlStreamWriter* w) const
 {
-    XML::writeAttribute(writer, XML::Attrib::version, uint(1));
+    XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
     // file name
-    writer->writeStartElement(Tag::FileName);
-    XML::writeAttribute(writer, XML::Attrib::value, m_fileName);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::FileName);
+    XML::writeAttribute(w, XML::Attrib::value, m_fileName);
+    w->writeEndElement();
 
     // axes units
-    writer->writeStartElement(Tag::AxesUnits);
-    m_axesUnits.writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::AxesUnits);
+    m_axesUnits.writeTo(w);
+    w->writeEndElement();
 
     // x axis
-    writer->writeStartElement(Tag::XAxis);
-    m_xAxis->writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::XAxis);
+    m_xAxis->writeTo(w);
+    w->writeEndElement();
 
     // y axis
-    writer->writeStartElement(Tag::YAxis);
-    m_yAxis->writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::YAxis);
+    m_yAxis->writeTo(w);
+    w->writeEndElement();
 }
 
-void DataItem::readFrom(QXmlStreamReader* reader)
+void DataItem::readFrom(QXmlStreamReader* r)
 {
-    const uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
+    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    while (reader->readNextStartElement()) {
-        QString name = reader->name().toString();
+    while (r->readNextStartElement()) {
+        QString name = r->name().toString();
 
         // file name
         if (name == Tag::FileName) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_fileName);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_fileName);
+            XML::gotoEndElementOfTag(r, name);
 
             // axes units
         } else if (name == Tag::AxesUnits) {
-            m_axesUnits.readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            m_axesUnits.readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
             // x axis
         } else if (name == Tag::XAxis) {
-            m_xAxis->readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            m_xAxis->readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
             // y axis
         } else if (name == Tag::YAxis) {
-            m_yAxis->readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            m_yAxis->readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
         } else
-            reader->skipCurrentElement();
+            r->skipCurrentElement();
     }
 }
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index e9ee652da59fa9024a10e269972a9c47e2dfd060..ea4eaae38ae366a7299c27f91f4a8080486dd826 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -121,8 +121,8 @@ public:
     //! Set axes viewport to original data.
     virtual void resetView() = 0;
 
-    virtual void writeTo(QXmlStreamWriter* writer) const = 0;
-    virtual void readFrom(QXmlStreamReader* reader) = 0;
+    virtual void writeTo(QXmlStreamWriter* w) const;
+    virtual void readFrom(QXmlStreamReader* r);
 
 signals:
     void datafieldChanged();
diff --git a/GUI/Model/Data/IntensityDataItem.cpp b/GUI/Model/Data/IntensityDataItem.cpp
index 77195d8b52e4f2119743bb872d4ee3915834923f..e48ea08e8364429e497436e452c43fbf2c25e53e 100644
--- a/GUI/Model/Data/IntensityDataItem.cpp
+++ b/GUI/Model/Data/IntensityDataItem.cpp
@@ -314,72 +314,72 @@ void IntensityDataItem::resetView()
         computeDataRange();
 }
 
-void IntensityDataItem::writeTo(QXmlStreamWriter* writer) const
+void IntensityDataItem::writeTo(QXmlStreamWriter* w) const
 {
-    XML::writeAttribute(writer, XML::Attrib::version, uint(1));
+    XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
     // parameters from base class
-    writer->writeStartElement(Tag::BaseData);
-    DataItem::writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::BaseData);
+    DataItem::writeTo(w);
+    w->writeEndElement();
 
     // interpolation
-    writer->writeStartElement(Tag::Interpolation);
-    XML::writeAttribute(writer, XML::Attrib::value, m_isInterpolated);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::Interpolation);
+    XML::writeAttribute(w, XML::Attrib::value, m_isInterpolated);
+    w->writeEndElement();
 
     // gradient
-    writer->writeStartElement(Tag::Gradient);
-    m_gradient.writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::Gradient);
+    m_gradient.writeTo(w);
+    w->writeEndElement();
 
     // z axis
-    writer->writeStartElement(Tag::ZAxis);
-    m_zAxis->writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::ZAxis);
+    m_zAxis->writeTo(w);
+    w->writeEndElement();
 }
 
-void IntensityDataItem::readFrom(QXmlStreamReader* reader)
+void IntensityDataItem::readFrom(QXmlStreamReader* r)
 {
-    const uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
+    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    while (reader->readNextStartElement()) {
-        QString name = reader->name().toString();
+    while (r->readNextStartElement()) {
+        QString name = r->name().toString();
 
         // parameters from base class
         if (name == Tag::BaseData) {
-            DataItem::readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            DataItem::readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
             // interpolation
         } else if (name == Tag::Interpolation) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_isInterpolated);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_isInterpolated);
+            XML::gotoEndElementOfTag(r, name);
 
             // gradient
         } else if (name == Tag::Gradient) {
-            m_gradient.readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            m_gradient.readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
             // z axis
         } else if (name == Tag::ZAxis) {
-            m_zAxis->readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            m_zAxis->readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
         } else
-            reader->skipCurrentElement();
+            r->skipCurrentElement();
     }
 }
 
-void IntensityDataItem::writeNonSessionItems(QXmlStreamWriter* writer) const
+void IntensityDataItem::writeNonSessionItems(QXmlStreamWriter* w) const
 {
-    writeTo(writer);
+    writeTo(w);
 }
 
-void IntensityDataItem::readNonSessionItems(QXmlStreamReader* reader)
+void IntensityDataItem::readNonSessionItems(QXmlStreamReader* r)
 {
-    readFrom(reader);
+    readFrom(r);
 }
 
 MaskContainerItem* IntensityDataItem::maskContainerItem()
diff --git a/GUI/Model/Data/IntensityDataItem.h b/GUI/Model/Data/IntensityDataItem.h
index d5aa362419d899814844929043c4653ecea34eb8..190d940a230bddb372b3a27be5db5aa6a303b36d 100644
--- a/GUI/Model/Data/IntensityDataItem.h
+++ b/GUI/Model/Data/IntensityDataItem.h
@@ -107,11 +107,11 @@ public:
 
     // write/read
 
-    void writeTo(QXmlStreamWriter* writer) const override;
-    void readFrom(QXmlStreamReader* reader) override;
+    void writeTo(QXmlStreamWriter* w) const override;
+    void readFrom(QXmlStreamReader* r) override;
 
-    void writeNonSessionItems(QXmlStreamWriter* writer) const override;
-    void readNonSessionItems(QXmlStreamReader* reader) override;
+    void writeNonSessionItems(QXmlStreamWriter* w) const override;
+    void readNonSessionItems(QXmlStreamReader* r) override;
 
 signals:
     void gradientChanged();
diff --git a/GUI/Model/Data/SpecularDataItem.cpp b/GUI/Model/Data/SpecularDataItem.cpp
index 9539543d65cbade9c2d14998f0e6cf9589db397b..e73af68cd88c0cdf56581c1e7aa755e0d0a3e385 100644
--- a/GUI/Model/Data/SpecularDataItem.cpp
+++ b/GUI/Model/Data/SpecularDataItem.cpp
@@ -207,83 +207,83 @@ void SpecularDataItem::setRealPlotStyle()
     setLineStyle(QCPGraph::LineStyle::lsNone);
 }
 
-void SpecularDataItem::writeTo(QXmlStreamWriter* writer) const
+void SpecularDataItem::writeTo(QXmlStreamWriter* w) const
 {
-    XML::writeAttribute(writer, XML::Attrib::version, uint(1));
+    XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
     // parameters from base class
-    writer->writeStartElement(Tag::BaseData);
-    DataItem::writeTo(writer);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::BaseData);
+    DataItem::writeTo(w);
+    w->writeEndElement();
 
     // line type
-    writer->writeStartElement(Tag::LineType);
-    XML::writeAttribute(writer, XML::Attrib::value, m_lineType);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::LineType);
+    XML::writeAttribute(w, XML::Attrib::value, m_lineType);
+    w->writeEndElement();
 
     // color
-    writer->writeStartElement(Tag::Color);
-    XML::writeAttribute(writer, XML::Attrib::value, m_color.name(QColor::HexArgb));
-    writer->writeEndElement();
+    w->writeStartElement(Tag::Color);
+    XML::writeAttribute(w, XML::Attrib::value, m_color.name(QColor::HexArgb));
+    w->writeEndElement();
 
     // thickness
-    writer->writeStartElement(Tag::Thickness);
-    XML::writeAttribute(writer, XML::Attrib::value, m_thickness);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::Thickness);
+    XML::writeAttribute(w, XML::Attrib::value, m_thickness);
+    w->writeEndElement();
 
     // scatter type
-    writer->writeStartElement(Tag::ScatterType);
-    XML::writeAttribute(writer, XML::Attrib::value, m_scatterType);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::ScatterType);
+    XML::writeAttribute(w, XML::Attrib::value, m_scatterType);
+    w->writeEndElement();
 
     // scatter size
-    writer->writeStartElement(Tag::ScatterSize);
-    XML::writeAttribute(writer, XML::Attrib::value, m_scatterSize);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::ScatterSize);
+    XML::writeAttribute(w, XML::Attrib::value, m_scatterSize);
+    w->writeEndElement();
 }
 
-void SpecularDataItem::readFrom(QXmlStreamReader* reader)
+void SpecularDataItem::readFrom(QXmlStreamReader* r)
 {
-    const uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
+    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
     Q_UNUSED(version)
 
-    while (reader->readNextStartElement()) {
-        QString name = reader->name().toString();
+    while (r->readNextStartElement()) {
+        QString name = r->name().toString();
 
         // parameters from base class
         if (name == Tag::BaseData) {
-            DataItem::readFrom(reader);
-            XML::gotoEndElementOfTag(reader, name);
+            DataItem::readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
 
             // line type
         } else if (name == Tag::LineType) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_lineType);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_lineType);
+            XML::gotoEndElementOfTag(r, name);
 
             // color
         } else if (name == Tag::Color) {
             QString col;
-            XML::readAttribute(reader, XML::Attrib::value, &col);
+            XML::readAttribute(r, XML::Attrib::value, &col);
             m_color = QColor(col);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::gotoEndElementOfTag(r, name);
 
             // thickness
         } else if (name == Tag::Thickness) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_thickness);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_thickness);
+            XML::gotoEndElementOfTag(r, name);
 
             // scatter type
         } else if (name == Tag::ScatterType) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_scatterType);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_scatterType);
+            XML::gotoEndElementOfTag(r, name);
 
             // scatter size
         } else if (name == Tag::ScatterSize) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_scatterSize);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_scatterSize);
+            XML::gotoEndElementOfTag(r, name);
 
         } else
-            reader->skipCurrentElement();
+            r->skipCurrentElement();
     }
 }
 
diff --git a/GUI/Model/Data/SpecularDataItem.h b/GUI/Model/Data/SpecularDataItem.h
index c76936b2fb75152fb954c73faa8d3ba0a1f23780..5ec5489d976d1d76d3d6ebc812789e8e032ef1b6 100644
--- a/GUI/Model/Data/SpecularDataItem.h
+++ b/GUI/Model/Data/SpecularDataItem.h
@@ -84,8 +84,8 @@ public:
 
     // write/read
 
-    void writeTo(QXmlStreamWriter* writer) const override;
-    void readFrom(QXmlStreamReader* reader) override;
+    void writeTo(QXmlStreamWriter* w) const override;
+    void readFrom(QXmlStreamReader* r) override;
 
     void writeNonSessionItems(QXmlStreamWriter* writer) const override;
     void readNonSessionItems(QXmlStreamReader* reader) override;
diff --git a/GUI/Model/Job/JobItem.h b/GUI/Model/Job/JobItem.h
index 60a89e7576f95f6749ae2a80abbc63976b1cda29..91606d1dcea4b8404a4fbba0af81094b16452510 100644
--- a/GUI/Model/Job/JobItem.h
+++ b/GUI/Model/Job/JobItem.h
@@ -16,7 +16,7 @@
 #define BORNAGAIN_GUI_MODEL_JOB_JOBITEM_H
 
 #include "GUI/Model/BaseItem/JobRealBase.h"
-#include "GUI/Support/Data/JobStatus.h" // enum cannot be forward declared
+#include "GUI/Support/Data/JobStatus.h"
 #include "GUI/Support/Data/SimulationOptionsItem.h"
 
 #include <QDateTime>
diff --git a/GUI/Model/Model/JobModel.cpp b/GUI/Model/Model/JobModel.cpp
index b2f0d4ad2f604758df1ac4758c83e984fa08a706..f49af0077e214e0ee9fdf9286befe037d0e870ea 100644
--- a/GUI/Model/Model/JobModel.cpp
+++ b/GUI/Model/Model/JobModel.cpp
@@ -28,12 +28,6 @@ namespace Tag {
 
 const QString Job("Job");
 
-}
-
-namespace Attrib {
-
-const QString name("name");
-
 }
 } // namespace
 
@@ -145,9 +139,9 @@ void JobModel::writeTo(QXmlStreamWriter* writer)
     ASSERT(writer);
 
     // jobs
-    for (const auto* job : jobItems()) {
+    for (const auto* job : m_jobItems) {
         writer->writeStartElement(Tag::Job);
-        writer->writeAttribute(Attrib::name, job->jobName());
+        writer->writeAttribute(XML::Attrib::name, job->jobName());
         job->writeTo(writer);
         writer->writeEndElement();
     }
diff --git a/GUI/Model/Project/ProjectDocument.cpp b/GUI/Model/Project/ProjectDocument.cpp
index e43174cb755b6c6a67bd18ef7d5554d49b188875..18d71fd2eb24986ed74409de580602025c61062c 100644
--- a/GUI/Model/Project/ProjectDocument.cpp
+++ b/GUI/Model/Project/ProjectDocument.cpp
@@ -314,13 +314,14 @@ void ProjectDocument::writeProject(QIODevice* device)
     writer.writeAttribute(XML::Attrib::projectName, projectName());
     writer.writeEndElement();
 
+    // simulation options
     writer.writeStartElement(Tag::SimulationOptions);
     m_simulationOptionsItem.writeTo(&writer);
     writer.writeEndElement();
 
+    // samples
     writer.writeStartElement(Tag::Samples);
-    Streamer s(&writer);
-    m_sampleItems.serialize(s);
+    m_sampleItems.writeTo(&writer);
     writer.writeEndElement();
 
     writer.writeStartElement(Tag::Instruments);
@@ -361,24 +362,19 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
                     while (reader.readNextStartElement()) {
                         QString name = reader.name().toString();
 
-                        // simulation options
-                        if (name == Tag::SimulationOptions) {
+                        if (name == Tag::DocumentInfo) {
+                            reader.skipCurrentElement();
+
+                            // simulation options
+                        } else if (name == Tag::SimulationOptions) {
                             m_simulationOptionsItem.readFrom(&reader);
                             XML::gotoEndElementOfTag(&reader, name);
 
-                        } else if (reader.name() == Tag::Samples) {
-                            Streamer s(&reader);
-                            m_sampleItems.serialize(s);
-                            // cleanup
-                            if (reader.name() != Tag::Samples) {
-                                if (!reader.isEndElement())
-                                    reader.skipCurrentElement();
-                                reader.skipCurrentElement();
-                            }
-                            XML::assertExpectedTag(&reader, Tag::Samples);
-                            ASSERT(reader.isEndElement());
+                            // samples
+                        } else if (name == Tag::Samples) {
+                            m_sampleItems.readFrom(&reader);
+                            XML::gotoEndElementOfTag(&reader, name);
 
-                            XML::assertExpectedTag(&reader, Tag::Samples);
                         } else if (reader.name() == Tag::Instruments) {
                             Streamer s(&reader);
                             m_instruments.serialize(s);
diff --git a/GUI/Model/Sample/MultiLayerItems.cpp b/GUI/Model/Sample/MultiLayerItems.cpp
index 02b48b3fadf9b119ab9a478802766e013696c03a..b1361827877b26e2ea57385989229316c598c52c 100644
--- a/GUI/Model/Sample/MultiLayerItems.cpp
+++ b/GUI/Model/Sample/MultiLayerItems.cpp
@@ -15,34 +15,38 @@
 #include "GUI/Model/Sample/MultiLayerItems.h"
 #include "GUI/Model/Sample/ItemWithMaterial.h"
 #include "GUI/Model/Sample/MultiLayerItem.h"
-#include "GUI/Support/XML/Serialize.h"
+#include "GUI/Support/XML/UtilXML.h"
 #include <QApplication>
 
-MultiLayerItems::~MultiLayerItems()
-{
-    qDeleteAll(m_samples);
-}
+namespace {
+namespace Tag {
+
+const QString Sample("Sample");
+
+} // namespace Tag
+} // namespace
+
+MultiLayerItems::~MultiLayerItems() {}
 
 QVector<MultiLayerItem*> MultiLayerItems::sampleItems() const
 {
-    return m_samples;
+    return QVector<MultiLayerItem*>(m_samples.begin(), m_samples.end());
 }
 
 MultiLayerItem* MultiLayerItems::addMultiLayer()
 {
-    m_samples << new MultiLayerItem();
+    m_samples.emplace_back(new MultiLayerItem());
     return m_samples.back();
 }
 
 void MultiLayerItems::addMultiLayer(MultiLayerItem* sample)
 {
-    m_samples << sample;
+    m_samples.emplace_back(sample);
 }
 
 void MultiLayerItems::removeMultiLayer(MultiLayerItem* sample)
 {
-    m_samples.removeAll(sample);
-    delete sample;
+    m_samples.delete_element(sample);
 }
 
 QStringList MultiLayerItems::sampleNames() const
@@ -53,8 +57,34 @@ QStringList MultiLayerItems::sampleNames() const
     return existingNames;
 }
 
-void MultiLayerItems::serialize(Streamer& s)
+void MultiLayerItems::writeTo(QXmlStreamWriter *w) const
 {
-    s.assertVersion(0);
-    Serialize::rwVector(s, "Multilayers", m_samples);
+    XML::writeAttribute(w, XML::Attrib::version, uint(1));
+
+    // samples
+    for (const auto* sample : m_samples) {
+        w->writeStartElement(Tag::Sample);
+        sample->writeTo(w);
+        w->writeEndElement();
+    }
+}
+
+void MultiLayerItems::readFrom(QXmlStreamReader *r)
+{
+    m_samples.clear();
+
+    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
+    Q_UNUSED(version)
+
+    while (r->readNextStartElement()) {
+        QString name = r->name().toString();
+
+        // sample
+        if (name == Tag::Sample) {
+            addMultiLayer()->readFrom(r);
+            XML::gotoEndElementOfTag(r, name);
+
+        } else
+            r->skipCurrentElement();
+    }
 }
diff --git a/GUI/Model/Sample/MultiLayerItems.h b/GUI/Model/Sample/MultiLayerItems.h
index ca38ab143657de28f39b6273e85477537645cfd2..7fd8cc96d9d17a7e5d86ce897a3b554ddc210a38 100644
--- a/GUI/Model/Sample/MultiLayerItems.h
+++ b/GUI/Model/Sample/MultiLayerItems.h
@@ -15,10 +15,12 @@
 #ifndef BORNAGAIN_GUI_MODEL_SAMPLE_MULTILAYERITEMS_H
 #define BORNAGAIN_GUI_MODEL_SAMPLE_MULTILAYERITEMS_H
 
+#include "Base/Types/OwningVector.h"
 #include <QVector>
 
 class MultiLayerItem;
-class Streamer;
+class QXmlStreamWriter;
+class QXmlStreamReader;
 
 //! Main model to hold sample items.
 
@@ -27,17 +29,17 @@ public:
     ~MultiLayerItems();
     QVector<MultiLayerItem*> sampleItems() const;
 
-    //! Adds a sample and returns the new item.
     MultiLayerItem* addMultiLayer();
     void addMultiLayer(MultiLayerItem* sample);
     void removeMultiLayer(MultiLayerItem* sample);
 
     QStringList sampleNames() const;
 
-    void serialize(Streamer& s);
+    void writeTo(QXmlStreamWriter* w) const;
+    void readFrom(QXmlStreamReader* r);
 
 private:
-    QVector<MultiLayerItem*> m_samples;
+    OwningVector<MultiLayerItem> m_samples;
 };
 
 #endif // BORNAGAIN_GUI_MODEL_SAMPLE_MULTILAYERITEMS_H
diff --git a/GUI/Support/Data/SimulationOptionsItem.cpp b/GUI/Support/Data/SimulationOptionsItem.cpp
index 74499f7fb8b93ac3b45f1008411e0b6d61585382..d999906836b030c376148519008c85a322fd8ff0 100644
--- a/GUI/Support/Data/SimulationOptionsItem.cpp
+++ b/GUI/Support/Data/SimulationOptionsItem.cpp
@@ -115,81 +115,81 @@ bool SimulationOptionsItem::includeSpecularPeak() const
     return m_includeSpecularPeak;
 }
 
-void SimulationOptionsItem::writeTo(QXmlStreamWriter* writer) const
+void SimulationOptionsItem::writeTo(QXmlStreamWriter* w) const
 {
-    XML::writeAttribute(writer, XML::Attrib::version, uint(1));
+    XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
     // run immediately
-    writer->writeStartElement(Tag::RunImmediately);
-    XML::writeAttribute(writer, XML::Attrib::value, m_runImmediately);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::RunImmediately);
+    XML::writeAttribute(w, XML::Attrib::value, m_runImmediately);
+    w->writeEndElement();
 
     // number of threads
-    writer->writeStartElement(Tag::NumberOfThreads);
-    XML::writeAttribute(writer, XML::Attrib::value, m_numberOfThreads);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::NumberOfThreads);
+    XML::writeAttribute(w, XML::Attrib::value, m_numberOfThreads);
+    w->writeEndElement();
 
     // computaion method
-    writer->writeStartElement(Tag::Analytical);
-    XML::writeAttribute(writer, XML::Attrib::value, m_computationMethodAnalytical);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::Analytical);
+    XML::writeAttribute(w, XML::Attrib::value, m_computationMethodAnalytical);
+    w->writeEndElement();
 
     // number of Monte Carlo points
-    writer->writeStartElement(Tag::NumberOfMonteCarloPoints);
-    XML::writeAttribute(writer, XML::Attrib::value, m_numberOfMonteCarloPoints);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::NumberOfMonteCarloPoints);
+    XML::writeAttribute(w, XML::Attrib::value, m_numberOfMonteCarloPoints);
+    w->writeEndElement();
 
     // use average materials
-    writer->writeStartElement(Tag::UseAverageMaterials);
-    XML::writeAttribute(writer, XML::Attrib::value, m_useAverageMaterials);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::UseAverageMaterials);
+    XML::writeAttribute(w, XML::Attrib::value, m_useAverageMaterials);
+    w->writeEndElement();
 
     // include specular peak
-    writer->writeStartElement(Tag::IncludeSpecularPeak);
-    XML::writeAttribute(writer, XML::Attrib::value, m_includeSpecularPeak);
-    writer->writeEndElement();
+    w->writeStartElement(Tag::IncludeSpecularPeak);
+    XML::writeAttribute(w, XML::Attrib::value, m_includeSpecularPeak);
+    w->writeEndElement();
 }
 
-void SimulationOptionsItem::readFrom(QXmlStreamReader* reader)
+void SimulationOptionsItem::readFrom(QXmlStreamReader* r)
 {
-    const uint version = XML::readUIntAttribute(reader, XML::Attrib::version);
+    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
 
     Q_UNUSED(version)
 
-    while (reader->readNextStartElement()) {
-        QString name = reader->name().toString();
+    while (r->readNextStartElement()) {
+        QString name = r->name().toString();
 
         // run immediately
         if (name == Tag::RunImmediately) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_runImmediately);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_runImmediately);
+            XML::gotoEndElementOfTag(r, name);
 
             // number of threads
         } else if (name == Tag::NumberOfThreads) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_numberOfThreads);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_numberOfThreads);
+            XML::gotoEndElementOfTag(r, name);
 
             // computaion method
         } else if (name == Tag::Analytical) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_computationMethodAnalytical);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_computationMethodAnalytical);
+            XML::gotoEndElementOfTag(r, name);
 
             // number of Monte Carlo points
         } else if (name == Tag::NumberOfMonteCarloPoints) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_numberOfMonteCarloPoints);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_numberOfMonteCarloPoints);
+            XML::gotoEndElementOfTag(r, name);
 
             // use average materials
         } else if (name == Tag::UseAverageMaterials) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_useAverageMaterials);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_useAverageMaterials);
+            XML::gotoEndElementOfTag(r, name);
 
             // include specular peak
         } else if (name == Tag::IncludeSpecularPeak) {
-            XML::readAttribute(reader, XML::Attrib::value, &m_includeSpecularPeak);
-            XML::gotoEndElementOfTag(reader, name);
+            XML::readAttribute(r, XML::Attrib::value, &m_includeSpecularPeak);
+            XML::gotoEndElementOfTag(r, name);
 
         } else
-            reader->skipCurrentElement();
+            r->skipCurrentElement();
     }
 }
diff --git a/GUI/Support/Data/SimulationOptionsItem.h b/GUI/Support/Data/SimulationOptionsItem.h
index e6c947ff1ad9a6f462bb39018601a9cddd6fa6e3..b6d611965a84bed73de89986de6b41201b08b0c9 100644
--- a/GUI/Support/Data/SimulationOptionsItem.h
+++ b/GUI/Support/Data/SimulationOptionsItem.h
@@ -46,8 +46,8 @@ public:
     void setIncludeSpecularPeak(bool includeSpecularPeak);
     bool includeSpecularPeak() const;
 
-    void writeTo(QXmlStreamWriter* writer) const;
-    void readFrom(QXmlStreamReader* reader);
+    void writeTo(QXmlStreamWriter* w) const;
+    void readFrom(QXmlStreamReader* r);
 
 private:
     bool m_runImmediately;
diff --git a/GUI/Support/XML/UtilXML.h b/GUI/Support/XML/UtilXML.h
index dab31d1dca8af67f361f978d991667ae29a48cc7..737c7ec84b110012c89a0c0624abf44800f676a3 100644
--- a/GUI/Support/XML/UtilXML.h
+++ b/GUI/Support/XML/UtilXML.h
@@ -27,6 +27,7 @@ const QString version("version");
 const QString value("value");
 const QString BA_Version("BA_Version");
 const QString projectName("projectName");
+const QString name("name");
 
 } // namespace Attrib