diff --git a/GUI/Model/Files/DatafilesSet.cpp b/GUI/Model/Files/DatafilesSet.cpp
index f1be1a7d1a9547f1ae7de0980ca5b237c18481a6..c9d756be004c901aaab8f6e2f2e2a6fdf7545710 100644
--- a/GUI/Model/Files/DatafilesSet.cpp
+++ b/GUI/Model/Files/DatafilesSet.cpp
@@ -42,19 +42,19 @@ void DatafilesSet::removeDatafileItem(DatafileItem* dfi)
 {
     ASSERT(dfi);
     int index = dfileItems().indexOf(dfi);
-    m_dfile_items.erase(m_dfile_items.begin() + index);
+    m_dfile_items.release_at(index);
 }
 
 void DatafilesSet::clear()
 {
-    for (auto* dfi : dfileItems())
+    for (auto* dfi : m_dfile_items)
         removeDatafileItem(dfi);
 }
 
 QVector<DataItem*> DatafilesSet::dataItems() const
 {
     QVector<DataItem*> result;
-    for (auto* dfi : dfileItems())
+    for (auto* dfi : m_dfile_items)
         if (auto* data_item = dfi->dataItem())
             result.push_back(data_item);
     return result;
@@ -65,7 +65,7 @@ void DatafilesSet::writeTo(QXmlStreamWriter* w) const
     XML::writeAttribute(w, XML::Attrib::version, uint(1));
 
     // real items
-    for (auto* dfi : dfileItems()) {
+    for (auto* dfi : m_dfile_items) {
         w->writeStartElement(Tag::RealData);
         XML::writeAttribute(w, XML::Attrib::name, dfi->realItemName());
         dfi->writeTo(w);
@@ -110,7 +110,7 @@ void DatafilesSet::readFrom(QXmlStreamReader* r)
 
 void DatafilesSet::writeDatafiles(const QString& projectDir) const
 {
-    for (const auto* dfi : dfileItems())
+    for (const auto* dfi : m_dfile_items)
         dfi->saveDatafield(projectDir);
 
     dataFilesCleaner.cleanOldFiles(projectDir, dataItems());
@@ -118,7 +118,7 @@ void DatafilesSet::writeDatafiles(const QString& projectDir) const
 
 void DatafilesSet::readDatafiles(const QString& projectDir, MessageService* messageService)
 {
-    for (auto* dfi : dfileItems())
+    for (auto* dfi : m_dfile_items)
         dfi->loadDatafield(projectDir, messageService);
 
     dataFilesCleaner.recollectDataNames(dataItems());
@@ -128,14 +128,14 @@ QVector<DatafileItem*> DatafilesSet::dfileItems() const
 {
     QVector<DatafileItem*> items(m_dfile_items.size());
     for (int i = 0; i < items.size(); i++)
-        items[i] = m_dfile_items[i].get();
+        items[i] = m_dfile_items[i];
     return items;
 }
 
 QStringList DatafilesSet::realItemNames() const
 {
     QStringList result;
-    for (DatafileItem* dfi : dfileItems())
+    for (DatafileItem* dfi : m_dfile_items)
         result.append(dfi->realItemName());
     return result;
 }
diff --git a/GUI/Model/Files/DatafilesSet.h b/GUI/Model/Files/DatafilesSet.h
index 38f9e45ec9875b971b234543a2ebc76cf4c0c768..afdeb10412caa4375b4cad3ef83b0f6ba9c24b27 100644
--- a/GUI/Model/Files/DatafilesSet.h
+++ b/GUI/Model/Files/DatafilesSet.h
@@ -15,6 +15,7 @@
 #ifndef BORNAGAIN_GUI_MODEL_FILES_DATAFILESSET_H
 #define BORNAGAIN_GUI_MODEL_FILES_DATAFILESSET_H
 
+#include "Base/Types/OwningVector.h"
 #include "GUI/Model/Files/DatafilesCleaner.h"
 #include <QObject>
 #include <QXmlStreamWriter>
@@ -48,7 +49,7 @@ private:
     QVector<DataItem*> dataItems() const;
 
     mutable DatafilesCleaner dataFilesCleaner;
-    std::vector<std::unique_ptr<DatafileItem>> m_dfile_items;
+    OwningVector<DatafileItem> m_dfile_items;
     int m_current_index = -1;
 };