diff --git a/src/CSVReader/CSVReader.cpp b/src/CSVReader/CSVReader.cpp
index c35a43ffc9ecd3f46194d20deb33bdb48949b2b0..319c2bf50a0eacd821a6efeefdf93dc3c94d4865 100644
--- a/src/CSVReader/CSVReader.cpp
+++ b/src/CSVReader/CSVReader.cpp
@@ -75,8 +75,8 @@ namespace lib4neuro {
         }
     }
 
-    DataSet CSVReader::get_data_set(std::vector<unsigned int>* input_col_indices,
-                                    std::vector<unsigned int>* output_col_indices) {
+    std::shared_ptr<DataSet> CSVReader::get_data_set(std::vector<unsigned int>* input_col_indices,
+                                                     std::vector<unsigned int>* output_col_indices) {
 
         std::vector<std::pair<std::vector<double>, std::vector<double>>> data_set_contents;
 
@@ -102,7 +102,7 @@ namespace lib4neuro {
                     boost::algorithm::erase_all(s, "\uFEFF");  // UTF-16
 
                     /* Check, if the string is a number */
-                    double tmp = boost::lexical_cast<double>(s);
+                    auto tmp = boost::lexical_cast<double>(s);
 
                     /* Add loaded number to the vector of inputs */
                     input.push_back(tmp);
@@ -124,6 +124,6 @@ namespace lib4neuro {
             data_set_contents.emplace_back(std::make_pair(input, output));
         }
 
-        return DataSet(&data_set_contents);
+        return std::make_shared<DataSet>(DataSet(&data_set_contents));
     }
 }
\ No newline at end of file
diff --git a/src/CSVReader/CSVReader.h b/src/CSVReader/CSVReader.h
index 9ef3691ab9634f57a0b1e0e5440c53eb8922bdcd..46a9ee4c9a71f278ba0bdfbd847861085363dd09 100644
--- a/src/CSVReader/CSVReader.h
+++ b/src/CSVReader/CSVReader.h
@@ -72,7 +72,7 @@ namespace lib4neuro {
          * @param output_col_indices
          * @return
          */
-        LIB4NEURO_API DataSet get_data_set(std::vector<unsigned int>* input_col_indices,
+        LIB4NEURO_API std::shared_ptr<DataSet> get_data_set(std::vector<unsigned int>* input_col_indices,
                 std::vector<unsigned int>* output_col_indices);
 
         /**