diff --git a/include/tadah/mlip/dataset_writers/dataset_writer_selector.h b/include/tadah/mlip/dataset_writers/dataset_writer_selector.h
deleted file mode 100644
index 7ea4f85e78bec210bd6ee9a92347e6899026734b..0000000000000000000000000000000000000000
--- a/include/tadah/mlip/dataset_writers/dataset_writer_selector.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef DATASET_WRITER_SELECTOR_H
-#define DATASET_WRITER_SELECTOR_H
-
-#include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/dataset_writer.h>
-#include <string>
-#include <memory>
-
-class DatasetWriterSelector {
-  public:
-    static std::unique_ptr<DatasetWriter> get_writer(const std::string& type, StructureDB& db);
-
-};
-
-#endif // DATASET_WRITER_SELECTOR_H
diff --git a/include/tadah/mlip/dataset_writers/castep_cell_writer.h b/include/tadah/mlip/structure_writers/castep_cell_writer.h
similarity index 78%
rename from include/tadah/mlip/dataset_writers/castep_cell_writer.h
rename to include/tadah/mlip/structure_writers/castep_cell_writer.h
index 90b799c4c70c0be8ad1748098765c4d9f5d50157..221578759466f9fa3e77f52b5fe498cd27786ba8 100644
--- a/include/tadah/mlip/dataset_writers/castep_cell_writer.h
+++ b/include/tadah/mlip/structure_writers/castep_cell_writer.h
@@ -3,14 +3,14 @@
 
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/dataset_writer.h>
+#include <tadah/mlip/structure_writers/structure_writer.h>
 
 #include <iostream>
 #include <fstream>
 #include <sstream>
 #include <vector>
 #include <stdexcept>
-class CastepCellWriter : public DatasetWriter {
+class CastepCellWriter : public StructureWriter {
 public:
   CastepCellWriter(StructureDB& db);
 
diff --git a/include/tadah/mlip/dataset_writers/lammps_structure_writer.h b/include/tadah/mlip/structure_writers/lammps_structure_writer.h
similarity index 78%
rename from include/tadah/mlip/dataset_writers/lammps_structure_writer.h
rename to include/tadah/mlip/structure_writers/lammps_structure_writer.h
index 5ee539aea758bf972b33262af856c830ce241846..8d76b4d19643166ee32c14c7e1672644f77c1295 100644
--- a/include/tadah/mlip/dataset_writers/lammps_structure_writer.h
+++ b/include/tadah/mlip/structure_writers/lammps_structure_writer.h
@@ -3,14 +3,14 @@
 
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/dataset_writer.h>
+#include <tadah/mlip/structure_writers/structure_writer.h>
 
 #include <iostream>
 #include <fstream>
 #include <sstream>
 #include <vector>
 #include <stdexcept>
-class LammpsStructureWriter : public DatasetWriter {
+class LammpsStructureWriter : public StructureWriter {
 public:
   LammpsStructureWriter(StructureDB& db);
 
diff --git a/include/tadah/mlip/dataset_writers/dataset_writer.h b/include/tadah/mlip/structure_writers/structure_writer.h
similarity index 63%
rename from include/tadah/mlip/dataset_writers/dataset_writer.h
rename to include/tadah/mlip/structure_writers/structure_writer.h
index 91ff858df6c7f77b083a654440ed371e224525be..d736922129b622b5c96207c9fb2a4d112f365ca2 100644
--- a/include/tadah/mlip/dataset_writers/dataset_writer.h
+++ b/include/tadah/mlip/structure_writers/structure_writer.h
@@ -1,17 +1,17 @@
-#ifndef DATASET_WRITER_H
-#define DATASET_WRITER_H
+#ifndef STRUCTURE_WRITER_H
+#define STRUCTURE_WRITER_H
 
 #include <tadah/mlip/structure_db.h>
 #include <string>
 #include <vector>
 
-class DatasetWriter {
+class StructureWriter {
   public:
-    virtual ~DatasetWriter() = default;
+    virtual ~StructureWriter() = default;
 
     virtual void write_data(const std::string& filename, const size_t i) = 0;
 
-    DatasetWriter(StructureDB& db) : stdb(db) {};
+    StructureWriter(StructureDB& db) : stdb(db) {};
 
     virtual void set_precision(const size_t _p) { p = _p; w = p+6; };
 
@@ -20,4 +20,4 @@ class DatasetWriter {
     double p = 10;  // output precision
     double w = p+6;  // column width
 };
-#endif // DATASET_WRITER_H
+#endif // STRUCTURE_WRITER_H
diff --git a/include/tadah/mlip/structure_writers/structure_writer_selector.h b/include/tadah/mlip/structure_writers/structure_writer_selector.h
new file mode 100644
index 0000000000000000000000000000000000000000..7630c918f8c93100ee45440786d1183a028796f0
--- /dev/null
+++ b/include/tadah/mlip/structure_writers/structure_writer_selector.h
@@ -0,0 +1,15 @@
+#ifndef STRUCTURE_WRITER_SELECTOR_H
+#define STRUCTURE_WRITER_SELECTOR_H
+
+#include <tadah/mlip/structure_db.h>
+#include <tadah/mlip/structure_writers/structure_writer.h>
+#include <string>
+#include <memory>
+
+class StructureWriterSelector {
+  public:
+    static std::unique_ptr<StructureWriter> get_writer(const std::string& type, StructureDB& db);
+
+};
+
+#endif // STRUCTURE_WRITER_SELECTOR_H
diff --git a/include/tadah/mlip/dataset_writers/vasp_poscar_writer.h b/include/tadah/mlip/structure_writers/vasp_poscar_writer.h
similarity index 78%
rename from include/tadah/mlip/dataset_writers/vasp_poscar_writer.h
rename to include/tadah/mlip/structure_writers/vasp_poscar_writer.h
index abd58b8b38aa34b1330e0c22703ff4d24c0df9e4..1215c01735c1d851d6b76332f720a79c5c7ffdc4 100644
--- a/include/tadah/mlip/dataset_writers/vasp_poscar_writer.h
+++ b/include/tadah/mlip/structure_writers/vasp_poscar_writer.h
@@ -3,14 +3,14 @@
 
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/dataset_writer.h>
+#include <tadah/mlip/structure_writers/structure_writer.h>
 
 #include <iostream>
 #include <fstream>
 #include <sstream>
 #include <vector>
 #include <stdexcept>
-class VaspPoscarWriter : public DatasetWriter {
+class VaspPoscarWriter : public StructureWriter {
 public:
   VaspPoscarWriter(StructureDB& db);
 
diff --git a/src/castep_cell_writer.cpp b/src/castep_cell_writer.cpp
index 144da27ab7715efa0a652dfc27c88ad8745a2d94..8d78f74d9458200da91c6e0996a2bc3fd755fc19 100644
--- a/src/castep_cell_writer.cpp
+++ b/src/castep_cell_writer.cpp
@@ -1,8 +1,8 @@
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/castep_cell_writer.h>
+#include <tadah/mlip/structure_writers/castep_cell_writer.h>
 
-CastepCellWriter::CastepCellWriter(StructureDB& db) : DatasetWriter(db) {}
+CastepCellWriter::CastepCellWriter(StructureDB& db) : StructureWriter(db) {}
 
 void CastepCellWriter::write_data(const std::string& filename, const size_t i) {
 
diff --git a/src/lammps_structure_writer.cpp b/src/lammps_structure_writer.cpp
index e634f3837cb870add5d88fb12e086c10472bbd5e..f0b1ba63dd4baa466df45d960e9f2d7a11b37c36 100644
--- a/src/lammps_structure_writer.cpp
+++ b/src/lammps_structure_writer.cpp
@@ -1,8 +1,8 @@
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/lammps_structure_writer.h>
+#include <tadah/mlip/structure_writers/lammps_structure_writer.h>
 
-LammpsStructureWriter::LammpsStructureWriter(StructureDB& db) : DatasetWriter(db) {}
+LammpsStructureWriter::LammpsStructureWriter(StructureDB& db) : StructureWriter(db) {}
 
 void LammpsStructureWriter::write_data(const std::string& filename, const size_t i) {
 
diff --git a/src/dataset_writer_selector.cpp b/src/structure_writer_selector.cpp
similarity index 51%
rename from src/dataset_writer_selector.cpp
rename to src/structure_writer_selector.cpp
index c038bedb81b2a239201601371d1b15761a39933d..c469534b40e25e8f3c7533ea240d5355ae14af1d 100644
--- a/src/dataset_writer_selector.cpp
+++ b/src/structure_writer_selector.cpp
@@ -1,10 +1,10 @@
-#include <tadah/mlip/dataset_writers/dataset_writer_selector.h>
-#include <tadah/mlip/dataset_writers/castep_cell_writer.h>
-#include <tadah/mlip/dataset_writers/vasp_poscar_writer.h>
-#include <tadah/mlip/dataset_writers/lammps_structure_writer.h>
+#include <tadah/mlip/structure_writers/structure_writer_selector.h>
+#include <tadah/mlip/structure_writers/castep_cell_writer.h>
+#include <tadah/mlip/structure_writers/vasp_poscar_writer.h>
+#include <tadah/mlip/structure_writers/lammps_structure_writer.h>
 
 // Factory method implementation
-std::unique_ptr<DatasetWriter> DatasetWriterSelector::get_writer(const std::string& type, StructureDB& db) {
+std::unique_ptr<StructureWriter> StructureWriterSelector::get_writer(const std::string& type, StructureDB& db) {
 
   if (type == "CASTEP") {
     return std::make_unique<CastepCellWriter>(db);
diff --git a/src/vasp_poscar_writer.cpp b/src/vasp_poscar_writer.cpp
index 33144181c9849ec4779e063c081dd39e8c3592f9..f37897d3870bc92bbb0c2305ae9f4bef60299694 100644
--- a/src/vasp_poscar_writer.cpp
+++ b/src/vasp_poscar_writer.cpp
@@ -1,10 +1,10 @@
 #include <tadah/mlip/structure.h>
 #include <tadah/mlip/structure_db.h>
-#include <tadah/mlip/dataset_writers/vasp_poscar_writer.h>
+#include <tadah/mlip/structure_writers/vasp_poscar_writer.h>
 
 #include <fstream>
 
-VaspPoscarWriter::VaspPoscarWriter(StructureDB& db) : DatasetWriter(db) {}
+VaspPoscarWriter::VaspPoscarWriter(StructureDB& db) : StructureWriter(db) {}
 
 void VaspPoscarWriter::write_data(const std::string& filename, const size_t i) {