diff --git a/GUI/coregui/Models/IntensityDataItem.cpp b/GUI/coregui/Models/IntensityDataItem.cpp
index ad59b4efc202129257f189cf1deb3f56298137c5..9d525e02d1901e59a1cd87d1e1ef511b3d4139a1 100644
--- a/GUI/coregui/Models/IntensityDataItem.cpp
+++ b/GUI/coregui/Models/IntensityDataItem.cpp
@@ -35,13 +35,14 @@ const QString IntensityDataItem::P_PROPERTY_PANEL_FLAG = "Property Panel Flag";
 const QString IntensityDataItem::P_XAXIS = "x-axis";
 const QString IntensityDataItem::P_YAXIS = "y-axis";
 const QString IntensityDataItem::P_ZAXIS = "color-axis";
+const QString IntensityDataItem::P_FILE_NAME = "FileName";
 const QString IntensityDataItem::T_MASKS = "Mask tag";
 
 
 IntensityDataItem::IntensityDataItem()
     : SessionItem(Constants::IntensityDataType)
 {
-    setItemName(Constants::IntensityDataType);
+//    setItemName(Constants::IntensityDataType);
 
     ComboProperty units;
     addProperty(P_AXES_UNITS, units.getVariant())->setVisible(false);
@@ -71,6 +72,9 @@ IntensityDataItem::IntensityDataItem()
     item = addGroupProperty(P_ZAXIS, Constants::AmplitudeAxisType);
     item->getItem(BasicAxisItem::P_NBINS)->setVisible(false);
 
+    // name of the file used to serialize given IntensityDataItem
+    addProperty(P_FILE_NAME, QStringLiteral("undefined"))->setVisible(false);
+
     registerTag(T_MASKS, 0, -1, QStringList() << Constants::MaskContainerType);
     setDefaultTag(T_MASKS);
 }
@@ -197,14 +201,6 @@ void IntensityDataItem::setZAxisLocked(bool state)
     return getItem(P_ZAXIS)->setItemValue(AmplitudeAxisItem::P_LOCK_MIN_MAX, state);
 }
 
-//! Sets the name of intensity data item from proposed name. This name will be used to save file
-//! on disk, so special characters should be removed.
-void IntensityDataItem::setNameFromProposed(const QString &proposed_name)
-{
-    QString valid_name = GUIHelpers::getValidFileName(proposed_name);
-    setItemName(QString("data_%1_%2.int").arg(valid_name, QString::number(0)));
-}
-
 QString IntensityDataItem::getSelectedAxesUnits() const
 {
     ComboProperty combo= getItemValue(IntensityDataItem::P_AXES_UNITS)
diff --git a/GUI/coregui/Models/IntensityDataItem.h b/GUI/coregui/Models/IntensityDataItem.h
index 6e008c7423b3cfd4c87a8d90d08f2d474929b8df..83f7472f33a7339b57a3060ec8b0eeeb5f77404d 100644
--- a/GUI/coregui/Models/IntensityDataItem.h
+++ b/GUI/coregui/Models/IntensityDataItem.h
@@ -38,8 +38,10 @@ public:
     static const QString P_XAXIS;
     static const QString P_YAXIS;
     static const QString P_ZAXIS;
+    static const QString P_FILE_NAME;
     static const QString T_MASKS;
 
+
     explicit IntensityDataItem();
     virtual ~IntensityDataItem();
 
@@ -77,7 +79,7 @@ public:
     bool isZAxisLocked() const;
     void setZAxisLocked(bool state);
 
-    void setNameFromProposed(const QString &proposed_name);
+//    void setNameFromProposed(const QString &proposed_name);
 
     virtual QString getSelectedAxesUnits() const;
 
diff --git a/GUI/coregui/Models/JobResultsPresenter.cpp b/GUI/coregui/Models/JobResultsPresenter.cpp
index 8b2758e28ff19bf13709f68cfb57879e7d83500a..570e1e6c78618f16823799b456d976be18a79fa0 100644
--- a/GUI/coregui/Models/JobResultsPresenter.cpp
+++ b/GUI/coregui/Models/JobResultsPresenter.cpp
@@ -103,8 +103,11 @@ void JobResultsPresenter::updateDataAxes(IntensityDataItem *intensityItem,
 void JobResultsPresenter::saveIntensityData(JobItem *jobItem, const QString &projectDir)
 {
     IntensityDataItem *dataItem = jobItem->getIntensityDataItem();
-    if (dataItem && dataItem->getOutputData()) {
-        QString filename = projectDir + QStringLiteral("/") + dataItem->itemName();
+
+    if(dataItem && dataItem->getOutputData()) {
+
+        QString filename = projectDir + QStringLiteral("/")
+                + dataItem->getItemValue(IntensityDataItem::P_FILE_NAME).toString();
 
         std::unique_ptr<OutputData<double>> dataToSave(
             createDetectorMap(jobItem->getInstrumentItem(), IDetector2D::DEFAULT));
diff --git a/GUI/coregui/Models/RealDataModel.cpp b/GUI/coregui/Models/RealDataModel.cpp
index 27d8c6228787d8b5574cc185022bdcb8c383d2a9..8f8da6d5c7c47acee94055ee24ec27e1909c02f9 100644
--- a/GUI/coregui/Models/RealDataModel.cpp
+++ b/GUI/coregui/Models/RealDataModel.cpp
@@ -15,6 +15,10 @@
 // ************************************************************************** //
 
 #include "RealDataModel.h"
+#include "JobResultsPresenter.h"
+#include "RealDataItem.h"
+#include "IntensityDataItem.h"
+#include "IntensityDataIOFactory.h"
 
 RealDataModel::RealDataModel(QObject *parent)
     : SessionModel(SessionXML::RealDataModelTag, parent)
@@ -22,3 +26,38 @@ RealDataModel::RealDataModel(QObject *parent)
     setObjectName(SessionXML::RealDataModelTag);
 }
 
+//Qt::ItemFlags RealDataModel::flags(const QModelIndex &index) const
+//{
+//    Qt::ItemFlags result_flags =  SessionModel::flags(index);
+//    result_flags |= Qt::ItemIsEditable;
+//    return result_flags;
+//}
+
+
+//! Loads OutputData from the projectDir to JobItem
+
+void RealDataModel::loadNonXMLData(const QString &projectDir)
+{
+//    for (int i = 0; i < rowCount(QModelIndex()); ++i) {
+//        JobItem *jobItem = getJobItemForIndex(index(i, 0, QModelIndex()));
+//        JobResultsPresenter::loadIntensityData(jobItem, projectDir);
+//    }
+
+}
+
+//! Saves JobItem's OutputData to the projectDir
+
+void RealDataModel::saveNonXMLData(const QString &projectDir)
+{
+    for (int i = 0; i < rowCount(QModelIndex()); ++i) {
+        SessionItem *realDataItem = itemForIndex(index(i, 0, QModelIndex()));
+        Q_ASSERT(realDataItem);
+        if(IntensityDataItem *intensityItem = dynamic_cast<IntensityDataItem *>(
+                    realDataItem->getItem(RealDataItem::T_INTENSITY_DATA))) {
+            QString filename = projectDir + QStringLiteral("/")
+                    + intensityItem->getItemValue(IntensityDataItem::P_FILE_NAME).toString();
+            IntensityDataIOFactory::writeOutputData(
+                        *intensityItem->getOutputData(), filename.toStdString());
+        }
+    }
+}
diff --git a/GUI/coregui/Models/RealDataModel.h b/GUI/coregui/Models/RealDataModel.h
index 1e26edf0ee3ba679ba710c0cee9273d01461910e..1d368c28ca8700d822d75c38e5dc0864567efde2 100644
--- a/GUI/coregui/Models/RealDataModel.h
+++ b/GUI/coregui/Models/RealDataModel.h
@@ -19,12 +19,18 @@
 
 #include "SessionModel.h"
 
+//! The RealDataModel class is a model to store all imported RealDataItem's.
+
 class BA_CORE_API_ RealDataModel : public SessionModel
 {
     Q_OBJECT
 
 public:
     explicit RealDataModel(QObject *parent = 0);
+//    Qt::ItemFlags flags(const QModelIndex &index) const;
+
+    void loadNonXMLData(const QString &projectDir);
+    void saveNonXMLData(const QString &projectDir);
 
 };
 
diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp
index 3790edad240ee5105cce28cb57d894c6d46eae58..e766c4f4cd32de997d167738f7f8e3e1df03f35f 100644
--- a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp
@@ -29,7 +29,7 @@ const QString filter_string = "Intensity File (*.int *.int.gz *.tif *.tif.gz *.t
         "Other (*)";
 }
 
-OutputData<double> *ImportDataAssistant::importData()
+OutputData<double> *ImportDataAssistant::importData(QString &baseNameOfLoadedFile)
 {
     QString dirname = AppSvc::projectManager()->userImportDir();
     QString fileName = QFileDialog::getOpenFileName(0,
@@ -38,6 +38,9 @@ OutputData<double> *ImportDataAssistant::importData()
     if(fileName.isEmpty())
         return nullptr;
 
+    QFileInfo info(fileName);
+    baseNameOfLoadedFile = info.baseName();
+
     QString newImportDir = GUIHelpers::fileDir(fileName);
     if(newImportDir != dirname)
         AppSvc::projectManager()->setImportDir(newImportDir);
diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h
index 2665ec60b73c13b52dc59d77d2a356f810f1146c..6685384224a70933bf80eb223b1fcb6ff96af00e 100644
--- a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h
+++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h
@@ -26,7 +26,7 @@ template <class T> class OutputData;
 class BA_CORE_API_ ImportDataAssistant {
 public:
 
-    OutputData<double> *importData();
+    OutputData<double> *importData(class QString &baseNameOfLoadedFile);
 
 
 };
diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp b/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp
index bc29b4b0a66e5d5ce6c9aaf7421667255ac65e18..fc21a131a5c0093db5f2a4d55fa0f5f2e97e9b46 100644
--- a/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp
@@ -72,12 +72,16 @@ void ImportDataToolBar::onImportDataAction()
     qDebug() << "ImportDataToolBar::onImportDataAction()";
     Q_ASSERT(m_model);
     ImportDataAssistant assistant;
-    if(OutputData<double> *data = assistant.importData()) {
+    QString baseNameOfImportedFile;
+    if(OutputData<double> *data = assistant.importData(baseNameOfImportedFile)) {
         SessionItem *realDataItem = m_model->insertNewItem(Constants::RealDataType);
-        IntensityDataItem *intensityDataItem = dynamic_cast<IntensityDataItem *>(m_model->insertNewItem(Constants::IntensityDataType, realDataItem->index()));
+        realDataItem->setItemName(baseNameOfImportedFile);
+        IntensityDataItem *intensityDataItem = dynamic_cast<IntensityDataItem *>(
+                    m_model->insertNewItem(Constants::IntensityDataType, realDataItem->index()));
         intensityDataItem->setOutputData(data);
         m_selectionModel->clearSelection();
         m_selectionModel->select(realDataItem->index(), QItemSelectionModel::Select);
+        qDebug() << "baseNameOfImportedFile" << baseNameOfImportedFile;
     }
 
 }
diff --git a/GUI/coregui/mainwindow/projectdocument.cpp b/GUI/coregui/mainwindow/projectdocument.cpp
index 79f3a56c513e7909b56e6ffb6749f3766183bf36..ea5eb0c479fa9b451797c9f31d108aff978b5dcb 100644
--- a/GUI/coregui/mainwindow/projectdocument.cpp
+++ b/GUI/coregui/mainwindow/projectdocument.cpp
@@ -30,6 +30,7 @@
 #include "MessageContainer.h"
 #include "GUIHelpers.h"
 #include "JobResultsPresenter.h"
+#include "GUIHelpers.h"
 #include <QFile>
 #include <QTextStream>
 #include <QFileInfo>
@@ -282,14 +283,16 @@ void ProjectDocument::reviseOutputData()
         if (dataItem) {
             // handling case when user has renamed jobItem and we have to clean previous
             // *.int file
-            QString filename = getProjectDir() + "/" + dataItem->itemName();
+            QString filename = getProjectDir() + QStringLiteral("/")
+                    + dataItem->getItemValue(IntensityDataItem::P_FILE_NAME).toString();
             QFile fin(filename);
             if (fin.exists()) {
                 fin.remove();
             }
 
             // making new name of *.int file from jobItem name
-            dataItem->setNameFromProposed(jobItem->itemName());
+            QString newFileName = GUIHelpers::getIntensityFileName(QString("data_%1").arg(jobItem->itemName()));
+            dataItem->setItemValue(IntensityDataItem::P_FILE_NAME, newFileName);
         }
     }
 }
diff --git a/GUI/coregui/utils/GUIHelpers.cpp b/GUI/coregui/utils/GUIHelpers.cpp
index 0d97479e734213a94c442647239c1647c680a07f..7e5e6709f3a30805935ea973e092f728513ef2d5 100644
--- a/GUI/coregui/utils/GUIHelpers.cpp
+++ b/GUI/coregui/utils/GUIHelpers.cpp
@@ -152,6 +152,12 @@ QString getValidFileName(const QString &proposed_name)
     return result;
 }
 
+QString getIntensityFileName(const QString &proposed_name)
+{
+    QString valid_name = GUIHelpers::getValidFileName(proposed_name);
+    return QString("%1_%2.int.gz").arg(valid_name, QString::number(0));
+}
+
 //! parses version string into 3 numbers, returns true in the case of success
 bool parseVersion(const QString &version, int &major_num, int &minor_num, int &patch_num)
 {
@@ -195,4 +201,5 @@ QString fileDir(const QString &fileName)
     return QString();
 }
 
+
 } // namespace GUIHelpers
diff --git a/GUI/coregui/utils/GUIHelpers.h b/GUI/coregui/utils/GUIHelpers.h
index 241ce0e17d3c0da9155393bea8e2dc3e9b951b9e..cb08cc3fc81e8fff66c8b697cccc7685805da73d 100644
--- a/GUI/coregui/utils/GUIHelpers.h
+++ b/GUI/coregui/utils/GUIHelpers.h
@@ -57,6 +57,9 @@ BA_CORE_API_ QString getBornAgainVersionString();
 
 BA_CORE_API_ QString getValidFileName(const QString &proposed_name);
 
+BA_CORE_API_ QString getIntensityFileName(const QString &proposed_name);
+
+
 BA_CORE_API_ QString fileDir(const QString &fileName);
 
 BA_CORE_API_ bool parseVersion(const QString &version, int &major_num, int &minor_num, int &patch_num);