diff --git a/Device/IO/IOFactory.cpp b/Device/IO/IOFactory.cpp
index baae6e36a28e904bb250da2e166d0a451e0c43cf..7ff7267e37ce07a466e9edde4095377ca6352fca 100644
--- a/Device/IO/IOFactory.cpp
+++ b/Device/IO/IOFactory.cpp
@@ -50,8 +50,7 @@ Datafield* IOFactory::readDatafield(const std::string& file_name, LoaderSelector
     Datafield* result = nullptr;
 
     if (readAs(bornagain))
-        result = functional_read(file_name,
-                                 [](std::istream& s) { return ReadWriteINT().readDatafield(s); });
+        result = functional_read(file_name, [](std::istream& s) { return IO::readBAInt(s); });
 
     else if (readAs(nicos))
         result = functional_read(file_name, [](std::istream& s) { return IO::readNicos(s); });
@@ -81,8 +80,7 @@ void IOFactory::writeDatafield(const Datafield& data, const std::string& file_na
 {
     try {
         if (DataUtil::Format::isIntFile(file_name))
-            functional_write(file_name,
-                             [&](std::ostream& s) { ReadWriteINT().writeDatafield(data, s); });
+            functional_write(file_name, [&](std::ostream& s) { IO::writeBAInt(data, s); });
 #ifdef BA_TIFF_SUPPORT
         else if (DataUtil::Format::isTiffFile(file_name))
             functional_write(file_name, [&](std::ostream& s) { IO::writeTiff(data, s); });
diff --git a/Device/IO/ReadWriteINT.cpp b/Device/IO/ReadWriteINT.cpp
index d944ffffaf41256c3d38ba22acf88c3dc832b7be..88b2cf982ccafeb53bc65eed31f6ae9c03086187 100644
--- a/Device/IO/ReadWriteINT.cpp
+++ b/Device/IO/ReadWriteINT.cpp
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit reflection and scattering
 //
 //! @file      Device/IO/ReadWriteINT.cpp
-//! @brief     Implements class ReadWriteINT.
+//! @brief     Implements functions read|writeBAInt
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -42,7 +42,7 @@ void writeDatafieldDoubles(const std::vector<double>& dataValues, std::ostream&
     }
 }
 
-Datafield* ReadWriteINT::readDatafield(std::istream& input_stream)
+Datafield* IO::readBAInt(std::istream& input_stream)
 {
     std::string line;
 
@@ -62,7 +62,7 @@ Datafield* ReadWriteINT::readDatafield(std::istream& input_stream)
     return result;
 }
 
-void ReadWriteINT::writeDatafield(const Datafield& data, std::ostream& output_stream)
+void IO::writeBAInt(const Datafield& data, std::ostream& output_stream)
 {
     output_stream << "# BornAgain Intensity Data\n\n";
 
diff --git a/Device/IO/ReadWriteINT.h b/Device/IO/ReadWriteINT.h
index 6e29f8d5fffd4cb4c26316e675f5e903ebad3181..1f2403c291ec03557e2bebf8b495434a43a0fe90 100644
--- a/Device/IO/ReadWriteINT.h
+++ b/Device/IO/ReadWriteINT.h
@@ -3,7 +3,7 @@
 //  BornAgain: simulate and fit reflection and scattering
 //
 //! @file      Device/IO/ReadWriteINT.h
-//! @brief     Defines ReadWriteINT
+//! @brief     Declares functions read|writeBAInt
 //!
 //! @homepage  http://www.bornagainproject.org
 //! @license   GNU General Public License v3 or higher (see COPYING)
@@ -18,17 +18,17 @@
 #ifndef BORNAGAIN_DEVICE_IO_READWRITEINT_H
 #define BORNAGAIN_DEVICE_IO_READWRITEINT_H
 
-#include <istream>
-#include <vector>
+#include <iostream>
 
 class Datafield;
 
-//! Class for reading and writing BornAgain native IntensityData from ASCII file.
+namespace IO {
 
-class ReadWriteINT {
-public:
-    static Datafield* readDatafield(std::istream& input_stream);
-    static void writeDatafield(const Datafield& data, std::ostream& output_stream);
-};
+//! Write Datafield as BornAgain intensity ASCII file.
+Datafield* readBAInt(std::istream& input_stream);
+//! Read Datafield from BornAgain intensity ASCII file.
+void writeBAInt(const Datafield& data, std::ostream& output_stream);
+
+}; // namespace IO
 
 #endif // BORNAGAIN_DEVICE_IO_READWRITEINT_H
diff --git a/GUI/Model/Axis/PointwiseAxisItem.cpp b/GUI/Model/Axis/PointwiseAxisItem.cpp
index f52622670f96218e143b354dcdc1ebc79238bf75..4fb9fa791460a8002b8c587d3810f7bd74e30911 100644
--- a/GUI/Model/Axis/PointwiseAxisItem.cpp
+++ b/GUI/Model/Axis/PointwiseAxisItem.cpp
@@ -76,7 +76,7 @@ QByteArray PointwiseAxisItem::serializeBinaryData() const
     Datafield axisData({m_axis->clone()});
 
     std::stringstream ss;
-    ReadWriteINT().writeDatafield(axisData, ss);
+    IO::writeBAInt(axisData, ss);
     return QByteArray(ss.str().c_str(), static_cast<int>(ss.str().size()));
 }
 
@@ -86,7 +86,7 @@ void PointwiseAxisItem::deserializeBinaryData(const QByteArray& data)
         return;
 
     std::istringstream str(data.toStdString());
-    std::unique_ptr<Datafield> d(ReadWriteINT().readDatafield(str));
+    std::unique_ptr<Datafield> d(IO::readBAInt(str));
     m_axis = std::unique_ptr<Scale>(d->axis(0).clone());
 }
 
diff --git a/Tests/Unit/Device/IOReaderWriterTest.cpp b/Tests/Unit/Device/IOReaderWriterTest.cpp
index 5ec6931efea1073d8fe3862e320784173f378f81..357dae82154a57be9e16f23b6383148fc60eab03 100644
--- a/Tests/Unit/Device/IOReaderWriterTest.cpp
+++ b/Tests/Unit/Device/IOReaderWriterTest.cpp
@@ -21,10 +21,9 @@ protected:
 TEST_F(IOReaderWriterTest, TestRWINT)
 {
     std::stringstream ss;
-    ReadWriteINT write_int;
-    write_int.writeDatafield(m_model_data, ss);
-    ReadWriteINT read_int;
-    auto result = std::unique_ptr<Datafield>(read_int.readDatafield(ss));
+    IO::writeBAInt(m_model_data, ss);
+
+    auto result = std::unique_ptr<Datafield>(IO::readBAInt(ss));
 
     auto compare_axis = [this, &result](size_t index) {
         EXPECT_EQ(m_model_data.axis(index).size(), result->axis(index).size());