diff --git a/Makefile.am b/Makefile.am
index c2c7690b3bfc5d2b06dd0081a8d34742bf09e252..f8d85f7c9a2b338353869a1b916fe93cd376b02d 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -23,7 +23,7 @@ SUBDIRS = src argparse examples doc tests tools
 if HAVEEAGLECOOLING
 SUBDIRS += examples/Cooling/CoolingRates
 endif
-if HAVELOGGER
+if HAVECSDS
 SUBDIRS += csds
 endif
 DIST_SUBDIRS = $(SUBDIRS) examples/Cooling/CoolingRates
diff --git a/README b/README
index a382489b2970cc11b7c0e87f7a2fcc2d384521f1..2ee6aee77eb157ebb4fadc89b658470524703e74 100644
--- a/README
+++ b/README
@@ -45,7 +45,7 @@ Parameters:
     --limiter                         Run with time-step limiter.
     --sync                            Run with time-step synchronization
                                       of particles hit by feedback events.
-    --logger                          Run with the particle logger.
+    --csds                            Run with the Continuous Simulation Data Stream (CSDS).
     -R, --radiation                   Run with radiative transfer. Work in
                                       progress, currently has no effect.
 
diff --git a/configure.ac b/configure.ac
index b5990fb4cec9c5211c25c6afea8cb1c78fea4ed1..526370a02d572d5bdcfab0b13792753f88b7e2e8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -92,7 +92,7 @@ AC_ARG_ENABLE([csds],
 )
 
 if test "$with_csds" = "yes"; then
-   AC_DEFINE([WITH_LOGGER], 1, [csds enabled])
+   AC_DEFINE([WITH_CSDS], 1, [csds enabled])
    # Ensure that the submodule is initialized
    ${srcdir}/tools/update-modules csds
    # The csds requires that long long is a 64bit type, let's
@@ -108,8 +108,8 @@ if test "$with_csds" = "yes"; then
    fi
 
 fi
-AM_CONDITIONAL([HAVELOGGER],[test $with_csds = "yes"])
-AM_COND_IF([HAVELOGGER], [AC_CONFIG_FILES([csds/Makefile csds/src/Makefile csds/tests/Makefile])])
+AM_CONDITIONAL([HAVECSDS],[test $with_csds = "yes"])
+AM_COND_IF([HAVECSDS], [AC_CONFIG_FILES([csds/Makefile csds/src/Makefile csds/tests/Makefile])])
 
 
 
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 397e10ab29c02e6a0cc7ddce57d8f0fd7690d86d..33bc6b8abb7ca50a0dc848e68b05e697002b2dc3 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -848,7 +848,7 @@ INPUT                  = @top_srcdir@ \
                          @top_srcdir@/src/feedback/GEAR \
                          @top_srcdir@/src/black_holes/EAGLE \
                          @top_srcdir@/src/sink/Default \
-                         @top_srcdir@/logger
+                         @top_srcdir@/csds
 
 # This tag can be used to specify the character encoding of the source files
 # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
diff --git a/doc/RTD/source/CSDS/index.rst b/doc/RTD/source/CSDS/index.rst
new file mode 100644
index 0000000000000000000000000000000000000000..3885290c5efd4c9297614a76c0ed87dca0541dad
--- /dev/null
+++ b/doc/RTD/source/CSDS/index.rst
@@ -0,0 +1,17 @@
+Continuous Simulation Data Stream (CSDS)
+========================================
+
+The CSDS is a particle based output (e.g. snapshot) that takes into account the large difference of timescale.
+If you have any questions, a slack channel is available for it in SWIFT's slack.
+
+To run it, you will need to use the configuration option ``--enable-csds`` and the run time argument ``--csds``.
+Currently the CSDS is implemented only for GEAR, Gadget2 and the default modules, but can be easily extended to the other schemes by adding the CSDS structure to the particles and implementing the IO functions (see ``src/hydro/Gadget2/hydro_part.h``, ``src/hydro/Gadget2/hydro_csds.c`` and ``src/hydro/Gadget2/hydro_csds.h``).
+The main parameters of the CSDS are ``CSDS:delta_step`` and ``CSDS:index_mem_frac`` that define the time accuracy of the CSDS and the number of index files.
+The first parameter defines the number of active steps that a particle is doing before writing and the second defines the total storage size of the index files as a fraction of the dump file.
+
+For reading, the python wrapper is available through the configuration option ``--with-python``.
+I recommend running the SedovBlast_3D with the CSDS and then using the example ``csds/examples/reader_example.py``.
+This file is kept up to date with the most recent changes and includes a call to all the existing functions.
+If you need some extra information, a doc string is provided for the class ``csds.Reader`` and all its methods.
+
+If you wish to obtain a snapshot from the CSDS, a script is available in ``csds/examples/create_snapshot.py``.
diff --git a/doc/RTD/source/CommandLineOptions/index.rst b/doc/RTD/source/CommandLineOptions/index.rst
index 40d8758403101b2a49681abdd22e0afc02d3a0b9..e684895bca708a4babb84efcdb2a06ce9521a578 100644
--- a/doc/RTD/source/CommandLineOptions/index.rst
+++ b/doc/RTD/source/CommandLineOptions/index.rst
@@ -42,7 +42,7 @@ can be found by typing ``./swift -h``:
     --limiter                         Run with time-step limiter.
     --sync                            Run with time-step synchronization
                                       of particles hit by feedback events.
-    --logger                          Run with the particle logger.
+    --csds                            Run with the Continuous Simulation Data Stream (CSDS).
     -R, --radiation                   Run with radiative transfer. Work in
                                       progress, currently has no effect.
 
diff --git a/doc/RTD/source/Logger/index.rst b/doc/RTD/source/Logger/index.rst
deleted file mode 100644
index 81d926160b5fd388c5692063d78e4ddcea096a1d..0000000000000000000000000000000000000000
--- a/doc/RTD/source/Logger/index.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-Logger Output
-=============
-
-The logger is a particle based output (e.g. snapshot) that takes into account the large difference of timescale.
-If you have any questions, a slack channel is available for it in SWIFT's slack.
-
-To run it, you will need to use the configuration option ``--enable-logger`` and the run time argument ``--logger``.
-Currently the logger is implemented only for GEAR, Gadget2 and the default modules, but can be easily extended to the other schemes by adding the logger structure to the particles and implementing the IO functions (see ``src/hydro/Gadget2/hydro_part.h``, ``src/hydro/Gadget2/hydro_logger.c`` and ``src/hydro/Gadget2/hydro_logger.h``).
-The main parameters of the logger are ``Logger:delta_step`` and ``Logger:index_mem_frac`` that define the time accuracy of the logger and the number of index files.
-The first parameter defines the number of active steps that a particle is doing before writing and the second defines the total storage size of the index files as a fraction of the dump file.
-
-For reading, the python wrapper is available through the configuration option ``--with-python``.
-I recommend running the SedovBlast_3D with the logger and then using the example ``logger/examples/reader_example.py``.
-This file is kept up to date with the most recent changes and includes a call to all the existing functions.
-If you need some extra information, a doc string is provided for the class ``logger.Reader`` and all its methods.
-
-If you wish to obtain a snapshot from the logger, a script is available in ``logger/examples/create_snapshot.py``.
diff --git a/doc/RTD/source/index.rst b/doc/RTD/source/index.rst
index d09c27fe5707f0ba576a5bfb7c7c9d2e11df1a4b..868e8622ad7e560c653ca789cfd9bc278a45d5fc 100644
--- a/doc/RTD/source/index.rst
+++ b/doc/RTD/source/index.rst
@@ -33,5 +33,5 @@ difference is the parameter file that will need to be adapted for SWIFT.
    NewOption/index
    Task/index
    AnalysisTools/index
-   Logger/index
+   CSDS/index
    ImplementationDetails/index
diff --git a/examples/HydroTests/SedovBlast_3D/sedov.yml b/examples/HydroTests/SedovBlast_3D/sedov.yml
index df7a2526b74e01d24ab7d7e164f2f54ef6437680..4eda135661a15e41854359c65acb5d0671ebb079 100644
--- a/examples/HydroTests/SedovBlast_3D/sedov.yml
+++ b/examples/HydroTests/SedovBlast_3D/sedov.yml
@@ -35,8 +35,8 @@ InitialConditions:
   periodic:                     1
   smoothing_length_scaling:     3.33
 
-# Parameters governing the logger snapshot system
-Logger:
+# Parameters governing the CSDS snapshot system
+CSDS:
   delta_step:           10     # Update the particle log every this many updates
   basename:             index  # Common part of the filenames
   initial_buffer_size:  0.01      # (Optional) Buffer size in GB
diff --git a/examples/Planetary/EarthImpact/make_movie_logger.py b/examples/Planetary/EarthImpact/make_movie_logger.py
index 5007543abe8e9984cf8cf86387c526e13b8c948a..4c9c673ab6e6a01d05f799b57875c166f603403c 100644
--- a/examples/Planetary/EarthImpact/make_movie_logger.py
+++ b/examples/Planetary/EarthImpact/make_movie_logger.py
@@ -8,8 +8,8 @@ from copy import deepcopy
 from shutil import copyfile
 import os
 from subprocess import call
-sys.path.append("../../../logger/.libs/")
-import liblogger as logger
+sys.path.append("../../../csds/.libs/")
+import libcsds as csds
 
 boxsize = 80.
 large_width = 15
@@ -61,7 +61,7 @@ def doProjection(parts, t, skip):
     global traj, id_foc
 
     # evolve in time the particles
-    interp = logger.moveForwardInTime(basename, parts, t)
+    interp = csds.moveForwardInTime(basename, parts, t)
 
     # Check if some particles where removed
     ind = parts["smoothing_lengths"] == 0
@@ -189,7 +189,7 @@ def doTitle(frames):
         "horizontalalignment": "center",
         "fontweight": "bold"
     }
-    plt.text(0.5, 0.6, "Planetary Impact with the Particle Logger",
+    plt.text(0.5, 0.6, "Planetary Impact with the CSDS",
              **style)
     plt.text(0.5, 0.5, "L. Hausammann, J. Kegerreis and P. Gonnet 2020",
              **style)
@@ -202,8 +202,8 @@ def doTitle(frames):
 
 
 def main():
-    t0, t1 = logger.getTimeLimits(basename)
-    parts = logger.loadSnapshotAtTime(basename, t0)
+    t0, t1 = csds.getTimeLimits(basename)
+    parts = csds.loadSnapshotAtTime(basename, t0)
 
     # Do a few title frames
     init = doTitle(40)
diff --git a/examples/main.c b/examples/main.c
index 37b11d4d0379405dfe765a3e1638e365a94f88a5..3952550e327683a9e386405526608eb87b8a6bd3 100644
--- a/examples/main.c
+++ b/examples/main.c
@@ -174,7 +174,7 @@ int main(int argc, char *argv[]) {
   int with_drift_all = 0;
   int with_mpole_reconstruction = 0;
   int with_structure_finding = 0;
-  int with_logger = 0;
+  int with_csds = 0;
   int with_sink = 0;
   int with_qla = 0;
   int with_eagle = 0;
@@ -244,7 +244,7 @@ int main(int argc, char *argv[]) {
                   "Run with time-step synchronization of particles hit by "
                   "feedback events.",
                   NULL, 0, 0),
-      OPT_BOOLEAN(0, "logger", &with_logger, "Run with the particle logger.",
+      OPT_BOOLEAN(0, "csds", &with_csds, "Run with the Continuous Simulation Data Stream (CSDS).",
                   NULL, 0, 0),
       OPT_BOOLEAN('R', "radiation", &with_rt,
                   "Run with radiative transfer. Work in progress, currently "
@@ -395,11 +395,11 @@ int main(int argc, char *argv[]) {
   }
 #endif
 
-#if !defined(WITH_LOGGER)
-  if (with_logger) {
+#if !defined(WITH_CSDS)
+  if (with_csds) {
     printf(
-        "Error: the particle logger is not available, please compile with "
-        "--enable-logger.");
+        "Error: the CSDS is not available, please compile with "
+        "--enable-csds.");
     return 1;
   }
 #endif
@@ -1415,7 +1415,7 @@ int main(int argc, char *argv[]) {
     if (with_structure_finding)
       engine_policies |= engine_policy_structure_finding;
     if (with_fof) engine_policies |= engine_policy_fof;
-    if (with_logger) engine_policies |= engine_policy_logger;
+    if (with_csds) engine_policies |= engine_policy_csds;
     if (with_line_of_sight) engine_policies |= engine_policy_line_of_sight;
     if (with_sink) engine_policies |= engine_policy_sinks;
     if (with_rt) engine_policies |= engine_policy_rt;
@@ -1492,21 +1492,21 @@ int main(int argc, char *argv[]) {
 #ifdef WITH_MPI
     /* Split the space. */
     engine_split(&e, &initial_partition);
-    /* Turn off the logger to avoid writing the communications */
-    if (with_logger) e.policy &= ~engine_policy_logger;
+    /* Turn off the csds to avoid writing the communications */
+    if (with_csds) e.policy &= ~engine_policy_csds;
 
     engine_redistribute(&e);
     /* Turn it back on */
-    if (with_logger) e.policy |= engine_policy_logger;
+    if (with_csds) e.policy |= engine_policy_csds;
 #endif
 
     /* Initialise the particles */
     engine_init_particles(&e, flag_entropy_ICs, clean_smoothing_length_values);
 
     /* Write the state of the system before starting time integration. */
-#ifdef WITH_LOGGER
-    if (e.policy & engine_policy_logger) {
-      logger_log_all_particles(e.logger, &e);
+#ifdef WITH_CSDS
+    if (e.policy & engine_policy_csds) {
+      csds_log_all_particles(e.csds, &e);
       engine_dump_index(&e);
     }
 #endif
@@ -1723,20 +1723,20 @@ int main(int argc, char *argv[]) {
     } else {
       engine_print_stats(&e);
     }
-#ifdef WITH_LOGGER
-    if (e.policy & engine_policy_logger) {
-      logger_log_all_particles(e.logger, &e);
+#ifdef WITH_CSDS
+    if (e.policy & engine_policy_csds) {
+      csds_log_all_particles(e.csds, &e);
 
       /* Write a final index file */
       engine_dump_index(&e);
 
       /* Write a sentinel timestamp */
       if (e.policy & engine_policy_cosmology) {
-        logger_log_timestamp(e.logger, e.ti_current, e.cosmology->a,
-                             &e.logger->timestamp_offset);
+        csds_log_timestamp(e.csds, e.ti_current, e.cosmology->a,
+                             &e.csds->timestamp_offset);
       } else {
-        logger_log_timestamp(e.logger, e.ti_current, e.time,
-                             &e.logger->timestamp_offset);
+        csds_log_timestamp(e.csds, e.ti_current, e.time,
+                             &e.csds->timestamp_offset);
       }
     }
 #endif
diff --git a/examples/parameter_example.yml b/examples/parameter_example.yml
index fda3c046a92eab8982ad618d3b675f63db9acf9e..73964cd0758b819c69192d16fc121d504382d471 100644
--- a/examples/parameter_example.yml
+++ b/examples/parameter_example.yml
@@ -171,8 +171,8 @@ Snapshots:
   dump_command:        ./submit_velociraptor.sh # (Optional) Command to run each time that a snapshot is dumped.
   
 
-# Parameters governing the logger snapshot system
-Logger:
+# Parameters governing the CSDS snapshot system
+CSDS:
   delta_step:           10     # Update the particle log every this many updates
   basename:             index  # Common part of the filenames
   initial_buffer_size:  1      # (Optional) Buffer size in GB
diff --git a/src/Makefile.am b/src/Makefile.am
index f6013014caeab4bd584ec7f1f083b4f7e5071475..7a2860199603572b1d6a3f7ca4e1a49b34972318 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -48,12 +48,13 @@ include_HEADERS += common_io.h single_io.h distributed_io.h map.h tools.h  parti
 include_HEADERS += partition.h clocks.h parser.h physical_constants.h physical_constants_cgs.h potential.h version.h 
 include_HEADERS += hydro_properties.h riemann.h threadpool.h cooling_io.h cooling.h cooling_struct.h cooling_properties.h 
 include_HEADERS += statistics.h memswap.h cache.h runner_doiact_hydro_vec.h profiler.h entropy_floor.h 
-include_HEADERS += dump.h logger.h active.h timeline.h xmf.h gravity_properties.h gravity_derivatives.h 
+include_HEADERS += dump.h csds.h active.h timeline.h xmf.h gravity_properties.h gravity_derivatives.h 
 include_HEADERS += gravity_softened_derivatives.h vector_power.h collectgroup.h hydro_space.h sort_part.h 
 include_HEADERS += chemistry.h chemistry_io.h chemistry_struct.h cosmology.h restart.h space_getsid.h utilities.h 
 include_HEADERS += mesh_gravity.h cbrt.h exp10.h velociraptor_interface.h swift_velociraptor_part.h output_list.h 
-include_HEADERS += logger_io.h tracers_io.h tracers.h tracers_struct.h star_formation_io.h
+include_HEADERS += csds_io.h tracers_io.h tracers.h tracers_struct.h star_formation_io.h
 include_HEADERS += fof.h fof_struct.h fof_io.h fof_catalogue_io.h
+include_HEADERS += csds_io.h tracers_io.h tracers.h tracers_struct.h star_formation_io.h fof.h fof_struct.h fof_io.h 
 include_HEADERS += multipole.h multipole_accept.h multipole_struct.h binomial.h integer_power.h sincos.h 
 include_HEADERS += star_formation_struct.h star_formation.h star_formation_iact.h 
 include_HEADERS += star_formation_logger.h star_formation_logger_struct.h 
@@ -64,7 +65,7 @@ include_HEADERS += feedback.h feedback_struct.h feedback_properties.h
 include_HEADERS += space_unique_id.h line_of_sight.h io_compression.h
 include_HEADERS += rays.h rays_struct.h
 include_HEADERS += particle_splitting.h particle_splitting_struct.h
-include_HEADERS += logger_history.h chemistry_logger.h star_formation_particle_logger.h
+include_HEADERS += csds_history.h chemistry_csds.h star_formation_csds.h
 
 # source files for EAGLE cooling
 QLA_COOLING_SOURCES =
@@ -106,46 +107,46 @@ GEAR_FEEDBACK_SOURCES += feedback/GEAR/stellar_evolution.c feedback/GEAR/feedbac
 	feedback/GEAR/initial_mass_function.c feedback/GEAR/supernovae_ia.c feedback/GEAR/supernovae_ii.c
 endif
 
-# source files for the logger (chemistry)
-CHEMISTRY_LOGGER =
+# source files for the csds (chemistry)
+CHEMISTRY_CSDS =
 if HAVE_CHEMISTRY_NONE
-CHEMISTRY_LOGGER += chemistry/none/chemistry_logger.c
+CHEMISTRY_CSDS += chemistry/none/chemistry_csds.c
 endif
 if HAVE_CHEMISTRY_GEAR
-CHEMISTRY_LOGGER += chemistry/GEAR/chemistry_logger.c
+CHEMISTRY_CSDS += chemistry/GEAR/chemistry_csds.c
 endif
 
-# source files for the logger (hydro)
-HYDRO_LOGGER =
+# source files for the csds (hydro)
+HYDRO_CSDS =
 if HAVE_GADGET2
-HYDRO_LOGGER += hydro/Gadget2/hydro_logger.c
+HYDRO_CSDS += hydro/Gadget2/hydro_csds.c
 endif
 if HAVE_SPHENIX
-HYDRO_LOGGER += hydro/SPHENIX/hydro_logger.c
+HYDRO_CSDS += hydro/SPHENIX/hydro_csds.c
 endif
 
-# source files for the logger (stars)
-STARS_LOGGER =
+# source files for the csds (stars)
+STARS_CSDS =
 if HAVE_STARS_BASIC
-STARS_LOGGER += stars/Basic/stars_logger.c
+STARS_CSDS += stars/Basic/stars_csds.c
 endif
 if HAVE_STARS_GEAR
-STARS_LOGGER += stars/GEAR/stars_logger.c
+STARS_CSDS += stars/GEAR/stars_csds.c
 endif
 
-# source files for the logger (stars)
-STAR_FORMATION_LOGGER =
+# source files for the csds (stars)
+STAR_FORMATION_CSDS =
 if HAVE_STAR_FORMATION_DEFAULT
-STAR_FORMATION_LOGGER += star_formation/none/star_formation_particle_logger.c
+STAR_FORMATION_CSDS += star_formation/none/star_formation_csds.c
 endif
 if HAVE_STAR_FORMATION_GEAR
-STAR_FORMATION_LOGGER += star_formation/GEAR/star_formation_particle_logger.c
+STAR_FORMATION_CSDS += star_formation/GEAR/star_formation_csds.c
 endif
 
-# source files for the logger (gravity)
-GRAVITY_LOGGER =
+# source files for the csds (gravity)
+GRAVITY_CSDS =
 if HAVE_GRAVITY_MULTISOFTENING
-GRAVITY_LOGGER += gravity/MultiSoftening/gravity_logger.c
+GRAVITY_CSDS += gravity/MultiSoftening/gravity_csds.c
 endif
 
 # Common source files
@@ -170,25 +171,25 @@ AM_SOURCES += kernel_hydro.c tools.c map.c part.c partition.c clocks.c
 AM_SOURCES += physical_constants.c units.c potential.c hydro_properties.c 
 AM_SOURCES += threadpool.c cooling.c star_formation.c 
 AM_SOURCES += hydro.c stars.c
-AM_SOURCES += statistics.c profiler.c dump.c logger.c part_type.c 
+AM_SOURCES += statistics.c profiler.c dump.c csds.c part_type.c 
 AM_SOURCES += gravity_properties.c gravity.c multipole.c 
 AM_SOURCES += collectgroup.c hydro_space.c equation_of_state.c io_compression.c 
 AM_SOURCES += chemistry.c cosmology.c mesh_gravity.c velociraptor_interface.c 
-AM_SOURCES += output_list.c velociraptor_dummy.c logger_io.c memuse.c mpiuse.c memuse_rnodes.c
+AM_SOURCES += output_list.c velociraptor_dummy.c csds_io.c memuse.c mpiuse.c memuse_rnodes.c
 AM_SOURCES += fof.c fof_catalogue_io.c
-AM_SOURCES += hashmap.c pressure_floor.c logger_history.c
+AM_SOURCES += hashmap.c pressure_floor.c csds_history.c
 AM_SOURCES += runner_neutrino.c
 AM_SOURCES += neutrino/Default/fermi_dirac.c
 AM_SOURCES += $(QLA_COOLING_SOURCES) 
 AM_SOURCES += $(EAGLE_COOLING_SOURCES) $(EAGLE_FEEDBACK_SOURCES) 
 AM_SOURCES += $(GRACKLE_COOLING_SOURCES) $(GEAR_FEEDBACK_SOURCES) 
 AM_SOURCES += $(COLIBRE_COOLING_SOURCES)
-AM_SOURCES += $(CHEMISTRY_LOGGER) $(HYDRO_LOGGER) $(STARS_LOGGER) $(GRAVITY_LOGGER)
-AM_SOURCES += $(STAR_FORMATION_LOGGER)
+AM_SOURCES += $(CHEMISTRY_CSDS) $(HYDRO_CSDS) $(STARS_CSDS) $(GRAVITY_CSDS)
+AM_SOURCES += $(STAR_FORMATION_CSDS)
 
 # Include files for distribution, not installation.
 nobase_noinst_HEADERS = align.h approx_math.h atomic.h barrier.h cycle.h error.h inline.h kernel_hydro.h kernel_gravity.h 
-nobase_noinst_HEADERS += gravity_iact.h kernel_long_gravity.h vector.h accumulate.h cache.h exp.h log.h
+nobase_noinst_HEADERS += gravity_iact.h kernel_long_gravity.h vector.h accumulate.h cache.h exp.h 
 nobase_noinst_HEADERS += runner_doiact_nosort.h runner_doiact_hydro.h runner_doiact_stars.h runner_doiact_black_holes.h runner_doiact_grav.h 
 nobase_noinst_HEADERS += runner_doiact_functions_hydro.h runner_doiact_functions_stars.h runner_doiact_functions_black_holes.h 
 nobase_noinst_HEADERS += runner_doiact_functions_limiter.h runner_doiact_limiter.h units.h intrinsics.h minmax.h 
@@ -196,15 +197,15 @@ nobase_noinst_HEADERS += runner_doiact_rt.h runner_doiact_functions_rt.h runner_
 nobase_noinst_HEADERS += runner_doiact_sinks_merger.h runner_doiact_functions_sinks_merger.h
 nobase_noinst_HEADERS += kick.h timestep.h drift.h adiabatic_index.h io_properties.h dimension.h part_type.h periodic.h memswap.h 
 nobase_noinst_HEADERS += timestep_limiter.h timestep_limiter_iact.h timestep_sync.h timestep_sync_part.h timestep_limiter_struct.h 
-nobase_noinst_HEADERS += dump.h logger.h sign.h logger_io.h hashmap.h gravity.h gravity_io.h gravity_logger.h  gravity_cache.h output_options.h
+nobase_noinst_HEADERS += dump.h csds.h sign.h csds_io.h hashmap.h gravity.h gravity_io.h gravity_csds.h  gravity_cache.h output_options.h
 nobase_noinst_HEADERS += gravity/Default/gravity.h gravity/Default/gravity_iact.h gravity/Default/gravity_io.h 
 nobase_noinst_HEADERS += gravity/Default/gravity_debug.h gravity/Default/gravity_part.h  
 nobase_noinst_HEADERS += gravity/MultiSoftening/gravity.h gravity/MultiSoftening/gravity_iact.h gravity/MultiSoftening/gravity_io.h 
 nobase_noinst_HEADERS += gravity/MultiSoftening/gravity_debug.h gravity/MultiSoftening/gravity_part.h 
-nobase_noinst_HEADERS += gravity/MultiSoftening/gravity_logger.h 
+nobase_noinst_HEADERS += gravity/MultiSoftening/gravity_csds.h 
 nobase_noinst_HEADERS += equation_of_state.h 
 nobase_noinst_HEADERS += equation_of_state/ideal_gas/equation_of_state.h equation_of_state/isothermal/equation_of_state.h 
-nobase_noinst_HEADERS += hydro.h hydro_io.h hydro_logger.h hydro_parameters.h 
+nobase_noinst_HEADERS += hydro.h hydro_io.h hydro_csds.h hydro_parameters.h 
 nobase_noinst_HEADERS += hydro/None/hydro.h hydro/None/hydro_iact.h hydro/None/hydro_io.h 
 nobase_noinst_HEADERS += hydro/None/hydro_debug.h hydro/None/hydro_part.h 
 nobase_noinst_HEADERS += hydro/None/hydro_parameters.h 
@@ -216,7 +217,7 @@ nobase_noinst_HEADERS += hydro/Phantom/hydro_debug.h hydro/Phantom/hydro_part.h
 nobase_noinst_HEADERS += hydro/Phantom/hydro_parameters.h 
 nobase_noinst_HEADERS += hydro/Gadget2/hydro.h hydro/Gadget2/hydro_iact.h hydro/Gadget2/hydro_io.h 
 nobase_noinst_HEADERS += hydro/Gadget2/hydro_debug.h hydro/Gadget2/hydro_part.h 
-nobase_noinst_HEADERS += hydro/Gadget2/hydro_parameters.h hydro/Gadget2/hydro_logger.h 
+nobase_noinst_HEADERS += hydro/Gadget2/hydro_parameters.h hydro/Gadget2/hydro_csds.h 
 nobase_noinst_HEADERS += hydro/PressureEntropy/hydro.h hydro/PressureEntropy/hydro_iact.h hydro/PressureEntropy/hydro_io.h 
 nobase_noinst_HEADERS += hydro/PressureEntropy/hydro_debug.h hydro/PressureEntropy/hydro_part.h 
 nobase_noinst_HEADERS += hydro/PressureEntropy/hydro_parameters.h 
@@ -230,7 +231,7 @@ nobase_noinst_HEADERS += hydro/AnarchyPU/hydro.h hydro/AnarchyPU/hydro_iact.h hy
 nobase_noinst_HEADERS += hydro/AnarchyPU/hydro_debug.h hydro/AnarchyPU/hydro_part.h 
 nobase_noinst_HEADERS += hydro/AnarchyPU/hydro_parameters.h 
 nobase_noinst_HEADERS += hydro/SPHENIX/hydro.h hydro/SPHENIX/hydro_iact.h hydro/SPHENIX/hydro_io.h 
-nobase_noinst_HEADERS += hydro/SPHENIX/hydro_debug.h hydro/SPHENIX/hydro_part.h hydro/SPHENIX/hydro_logger.h
+nobase_noinst_HEADERS += hydro/SPHENIX/hydro_debug.h hydro/SPHENIX/hydro_part.h hydro/SPHENIX/hydro_csds.h
 nobase_noinst_HEADERS += hydro/SPHENIX/hydro_parameters.h 
 nobase_noinst_HEADERS += hydro/Gizmo/hydro_parameters.h 
 nobase_noinst_HEADERS += hydro/Gizmo/hydro_io.h hydro/Gizmo/hydro_debug.h 
@@ -300,15 +301,15 @@ nobase_noinst_HEADERS += rt/M1closure/rt_iact.h
 nobase_noinst_HEADERS += rt/M1closure/rt_io.h 
 nobase_noinst_HEADERS += rt/M1closure/rt_properties.h 
 nobase_noinst_HEADERS += rt/M1closure/rt_struct.h
-nobase_noinst_HEADERS += stars.h stars_io.h stars_logger.h 
+nobase_noinst_HEADERS += stars.h stars_io.h stars_csds.h 
 nobase_noinst_HEADERS += stars/None/stars.h stars/None/stars_iact.h stars/None/stars_io.h 
-nobase_noinst_HEADERS += stars/None/stars_debug.h stars/None/stars_part.h stars/None/stars_logger.h  
+nobase_noinst_HEADERS += stars/None/stars_debug.h stars/None/stars_part.h
 nobase_noinst_HEADERS += stars/Basic/stars.h stars/Basic/stars_iact.h stars/Basic/stars_io.h 
-nobase_noinst_HEADERS += stars/Basic/stars_debug.h stars/Basic/stars_part.h stars/Basic/stars_logger.h  
+nobase_noinst_HEADERS += stars/Basic/stars_debug.h stars/Basic/stars_part.h stars/Basic/stars_csds.h  
 nobase_noinst_HEADERS += stars/EAGLE/stars.h stars/EAGLE/stars_iact.h stars/EAGLE/stars_io.h 
 nobase_noinst_HEADERS += stars/EAGLE/stars_debug.h stars/EAGLE/stars_part.h 
 nobase_noinst_HEADERS += stars/GEAR/stars.h stars/GEAR/stars_iact.h stars/GEAR/stars_io.h 
-nobase_noinst_HEADERS += stars/GEAR/stars_debug.h stars/GEAR/stars_logger.h stars/GEAR/stars_part.h
+nobase_noinst_HEADERS += stars/GEAR/stars_debug.h stars/GEAR/stars_csds.h stars/GEAR/stars_part.h
 nobase_noinst_HEADERS += potential/none/potential.h potential/point_mass/potential.h 
 nobase_noinst_HEADERS += potential/isothermal/potential.h potential/disc_patch/potential.h 
 nobase_noinst_HEADERS += potential/sine_wave/potential.h potential/constant/potential.h 
@@ -317,14 +318,14 @@ nobase_noinst_HEADERS += potential/nfw_mn/potential.h potential/point_mass_softe
 nobase_noinst_HEADERS += potential/point_mass_ring/potential.h 
 nobase_noinst_HEADERS += star_formation/none/star_formation.h star_formation/none/star_formation_struct.h 
 nobase_noinst_HEADERS += star_formation/none/star_formation_io.h star_formation/none/star_formation_iact.h
-nobase_noinst_HEADERS += star_formation/none/star_formation_particle_logger.h
+nobase_noinst_HEADERS += star_formation/none/star_formation_csds.h
 nobase_noinst_HEADERS += star_formation/QLA/star_formation.h star_formation/QLA/star_formation_struct.h 
 nobase_noinst_HEADERS += star_formation/QLA/star_formation_io.h star_formation/QLA/star_formation_iact.h 
 nobase_noinst_HEADERS += star_formation/EAGLE/star_formation.h star_formation/EAGLE/star_formation_struct.h 
 nobase_noinst_HEADERS += star_formation/EAGLE/star_formation_io.h star_formation/EAGLE/star_formation_iact.h 
 nobase_noinst_HEADERS += star_formation/GEAR/star_formation.h star_formation/GEAR/star_formation_struct.h 
 nobase_noinst_HEADERS += star_formation/GEAR/star_formation_io.h star_formation/GEAR/star_formation_iact.h 
-nobase_noinst_HEADERS += star_formation/GEAR/star_formation_particle_logger.h
+nobase_noinst_HEADERS += star_formation/GEAR/star_formation_csds.h
 nobase_noinst_HEADERS += star_formation/EAGLE/star_formation_logger.h star_formation/EAGLE/star_formation_logger_struct.h 
 nobase_noinst_HEADERS += star_formation/GEAR/star_formation_logger.h star_formation/GEAR/star_formation_logger_struct.h 
 nobase_noinst_HEADERS += star_formation/none/star_formation_logger.h star_formation/none/star_formation_logger_struct.h 
@@ -348,12 +349,12 @@ nobase_noinst_HEADERS += cooling/COLIBRE/cooling_tables.h cooling/COLIBRE/coolin
 nobase_noinst_HEADERS += cooling/COLIBRE/cooling_properties.h 
 nobase_noinst_HEADERS += chemistry/none/chemistry.h 
 nobase_noinst_HEADERS += chemistry/none/chemistry_io.h 
-nobase_noinst_HEADERS += chemistry/none/chemistry_logger.h
+nobase_noinst_HEADERS += chemistry/none/chemistry_csds.h
 nobase_noinst_HEADERS += chemistry/none/chemistry_struct.h 
 nobase_noinst_HEADERS += chemistry/none/chemistry_iact.h 
 nobase_noinst_HEADERS += chemistry/GEAR/chemistry.h 
 nobase_noinst_HEADERS += chemistry/GEAR/chemistry_io.h 
-nobase_noinst_HEADERS += chemistry/GEAR/chemistry_logger.h
+nobase_noinst_HEADERS += chemistry/GEAR/chemistry_csds.h
 nobase_noinst_HEADERS += chemistry/GEAR/chemistry_struct.h 
 nobase_noinst_HEADERS += chemistry/GEAR/chemistry_iact.h 
 nobase_noinst_HEADERS += chemistry/GEAR_DIFFUSION/chemistry.h
diff --git a/src/cell.h b/src/cell.h
index da634f05641a032535af9093551599d0037b5e4a..3a943b5ad349ce074ed6cd2e4a0bcdd34953011e 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -408,9 +408,9 @@ struct cell {
    * feedback */
   struct task *timestep_sync;
 
-#ifdef WITH_LOGGER
-  /*! The logger task */
-  struct task *logger;
+#ifdef WITH_CSDS
+  /*! The csds task */
+  struct task *csds;
 #endif
 
   /*! Minimum dimension, i.e. smallest edge of this cell (min(width)). */
diff --git a/src/cell_drift.c b/src/cell_drift.c
index f541b4b89f5d0226a98d93949d958eaaf82ab55c..1eb592db71fdd57afacc9c20d59de4144a66c227 100644
--- a/src/cell_drift.c
+++ b/src/cell_drift.c
@@ -183,11 +183,11 @@ void cell_drift_part(struct cell *c, const struct engine *e, int force) {
            * by another thread before we do the deed. */
           if (!part_is_inhibited(p, e)) {
 
-#ifdef WITH_LOGGER
-            if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+            if (e->policy & engine_policy_csds) {
               /* Log the particle one last time. */
-              logger_log_part(e->logger, p, xp, e, /* log_all */ 1,
-                              logger_flag_delete, /* data */ 0);
+              csds_log_part(e->csds, p, xp, e, /* log_all */ 1,
+                              csds_flag_delete, /* data */ 0);
             }
 #endif
 
@@ -379,11 +379,11 @@ void cell_drift_gpart(struct cell *c, const struct engine *e, int force) {
             /* Remove the particle entirely */
             if (gp->type == swift_type_dark_matter) {
 
-#ifdef WITH_LOGGER
-              if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+              if (e->policy & engine_policy_csds) {
                 /* Log the particle one last time. */
-                logger_log_gpart(e->logger, gp, e, /* log_all */ 1,
-                                 logger_flag_delete, /* data */ 0);
+                csds_log_gpart(e->csds, gp, e, /* log_all */ 1,
+                                 csds_flag_delete, /* data */ 0);
               }
 #endif
 
@@ -532,11 +532,11 @@ void cell_drift_spart(struct cell *c, const struct engine *e, int force) {
            * by another thread before we do the deed. */
           if (!spart_is_inhibited(sp, e)) {
 
-#ifdef WITH_LOGGER
-            if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+            if (e->policy & engine_policy_csds) {
               /* Log the particle one last time. */
-              logger_log_spart(e->logger, sp, e, /* log_all */ 1,
-                               logger_flag_delete, /* data */ 0);
+              csds_log_spart(e->csds, sp, e, /* log_all */ 1,
+                               csds_flag_delete, /* data */ 0);
             }
 #endif
 
@@ -720,8 +720,8 @@ void cell_drift_bpart(struct cell *c, const struct engine *e, int force) {
            * by another thread before we do the deed. */
           if (!bpart_is_inhibited(bp, e)) {
 
-#ifdef WITH_LOGGER
-            if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+            if (e->policy & engine_policy_csds) {
               error("Logging of black hole particles is not yet implemented.");
             }
 #endif
@@ -896,8 +896,8 @@ void cell_drift_sink(struct cell *c, const struct engine *e, int force) {
            * by another thread before we do the deed. */
           if (!sink_is_inhibited(sink, e)) {
 
-#ifdef WITH_LOGGER
-            if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+            if (e->policy & engine_policy_csds) {
               error("Logging of sink particles is not yet implemented.");
             }
 #endif
diff --git a/src/cell_unskip.c b/src/cell_unskip.c
index d229fbffe550353cc3f3c0275044450299d01dcb..2bf88c47c37f4040bbced87c9ba3efeca1ec2d0f 100644
--- a/src/cell_unskip.c
+++ b/src/cell_unskip.c
@@ -1802,8 +1802,8 @@ int cell_unskip_hydro_tasks(struct cell *c, struct scheduler *s) {
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
     if (c->hydro.end_force != NULL) scheduler_activate(s, c->hydro.end_force);
     if (c->hydro.cooling_in != NULL) cell_activate_cooling(c, s, e);
-#ifdef WITH_LOGGER
-    if (c->logger != NULL) scheduler_activate(s, c->logger);
+#ifdef WITH_CSDS
+    if (c->csds != NULL) scheduler_activate(s, c->csds);
 #endif
 
     if (c->top->hydro.star_formation != NULL) {
@@ -1963,8 +1963,8 @@ int cell_unskip_gravity_tasks(struct cell *c, struct scheduler *s) {
     if (c->grav.end_force != NULL) scheduler_activate(s, c->grav.end_force);
     if (c->grav.neutrino_weight != NULL)
       scheduler_activate(s, c->grav.neutrino_weight);
-#ifdef WITH_LOGGER
-    if (c->logger != NULL) scheduler_activate(s, c->logger);
+#ifdef WITH_CSDS
+    if (c->csds != NULL) scheduler_activate(s, c->csds);
 #endif
   }
 
@@ -2381,8 +2381,8 @@ int cell_unskip_stars_tasks(struct cell *c, struct scheduler *s,
       if (c->kick1 != NULL) scheduler_activate(s, c->kick1);
       if (c->kick2 != NULL) scheduler_activate(s, c->kick2);
       if (c->timestep != NULL) scheduler_activate(s, c->timestep);
-#ifdef WITH_LOGGER
-      if (c->logger != NULL) scheduler_activate(s, c->logger);
+#ifdef WITH_CSDS
+      if (c->csds != NULL) scheduler_activate(s, c->csds);
 #endif
     }
   }
@@ -2663,8 +2663,8 @@ int cell_unskip_black_holes_tasks(struct cell *c, struct scheduler *s) {
     if (c->kick1 != NULL) scheduler_activate(s, c->kick1);
     if (c->kick2 != NULL) scheduler_activate(s, c->kick2);
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
-#ifdef WITH_LOGGER
-    if (c->logger != NULL) scheduler_activate(s, c->logger);
+#ifdef WITH_CSDS
+    if (c->csds != NULL) scheduler_activate(s, c->csds);
 #endif
   }
 
@@ -2850,8 +2850,8 @@ int cell_unskip_sinks_tasks(struct cell *c, struct scheduler *s) {
     if (c->kick1 != NULL) scheduler_activate(s, c->kick1);
     if (c->kick2 != NULL) scheduler_activate(s, c->kick2);
     if (c->timestep != NULL) scheduler_activate(s, c->timestep);
-#ifdef WITH_LOGGER
-    if (c->logger != NULL) scheduler_activate(s, c->logger);
+#ifdef WITH_CSDS
+    if (c->csds != NULL) scheduler_activate(s, c->csds);
 #endif
   }
 
diff --git a/src/chemistry/GEAR/chemistry_logger.c b/src/chemistry/GEAR/chemistry_csds.c
similarity index 81%
rename from src/chemistry/GEAR/chemistry_logger.c
rename to src/chemistry/GEAR/chemistry_csds.c
index 58b7fa3fc1627987e1097a34fe2654075487a72e..db81e83bb9b54deb73ac46a6caf8b8fb6ed67788 100644
--- a/src/chemistry/GEAR/chemistry_logger.c
+++ b/src/chemistry/GEAR/chemistry_csds.c
@@ -19,17 +19,17 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "chemistry_logger.h"
+#include "chemistry_csds.h"
 
 const char
-    *chemistry_logger_field_names_part[chemistry_logger_field_part_count] = {
+    *chemistry_csds_field_names_part[chemistry_csds_field_part_count] = {
         "ChemistryHydro",
 };
 const char
-    *chemistry_logger_field_names_spart[chemistry_logger_field_spart_count] = {
+    *chemistry_csds_field_names_spart[chemistry_csds_field_spart_count] = {
         "MetalMassFractions",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/chemistry/GEAR/chemistry_logger.h b/src/chemistry/GEAR/chemistry_csds.h
similarity index 66%
rename from src/chemistry/GEAR/chemistry_logger.h
rename to src/chemistry/GEAR/chemistry_csds.h
index 4c113a195d2f01ced0dea2ebc2cb408ad69b3179..09c5815c5f41943c9922df521f370470fe691d4d 100644
--- a/src/chemistry/GEAR/chemistry_logger.h
+++ b/src/chemistry/GEAR/chemistry_csds.h
@@ -16,85 +16,85 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
-#define SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
+#ifndef SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
+#define SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
 
 #include "hydro.h"
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only chemistry_logger_field_count is used.
+ * Outside the module, only chemistry_csds_field_count is used.
  */
 // Here I am only using a single flag in order to free some flags to the other
 // modules.
-enum chemistry_logger_fields_part {
-  chemistry_logger_field_part_all = 0,
-  chemistry_logger_field_part_count,
+enum chemistry_csds_fields_part {
+  chemistry_csds_field_part_all = 0,
+  chemistry_csds_field_part_count,
 };
-enum chemistry_logger_fields_spart {
-  chemistry_logger_field_spart_metal_mass_fractions = 0,
-  chemistry_logger_field_spart_count,
+enum chemistry_csds_fields_spart {
+  chemistry_csds_field_spart_metal_mass_fractions = 0,
+  chemistry_csds_field_spart_count,
 };
 
 /* Name of each possible mask. */
 extern const char
-    *chemistry_logger_field_names_part[chemistry_logger_field_part_count];
+    *chemistry_csds_field_names_part[chemistry_csds_field_part_count];
 extern const char
-    *chemistry_logger_field_names_spart[chemistry_logger_field_spart_count];
+    *chemistry_csds_field_names_spart[chemistry_csds_field_spart_count];
 
 /**
- * @brief Initialize the logger for the #part.
+ * @brief Initialize the csds for the #part.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_part!
+ * #chemistry_csds_fields_part!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int chemistry_logger_writer_populate_mask_data_part(
+INLINE static int chemistry_csds_writer_populate_mask_data_part(
     struct mask_data *mask_data) {
 
   /* We store the metal mass fraction and the smoothed one. */
-  mask_data[chemistry_logger_field_part_all] = logger_create_mask_entry(
-      chemistry_logger_field_names_part[chemistry_logger_field_part_all],
+  mask_data[chemistry_csds_field_part_all] = csds_create_mask_entry(
+      chemistry_csds_field_names_part[chemistry_csds_field_part_all],
       2 * GEAR_CHEMISTRY_ELEMENT_COUNT * sizeof(double));
-  return chemistry_logger_field_part_count;
+  return chemistry_csds_field_part_count;
 }
 
 /**
- * @brief Initialize the logger for the #spart.
+ * @brief Initialize the csds for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_spart!
+ * #chemistry_csds_fields_spart!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int chemistry_logger_writer_populate_mask_data_spart(
+INLINE static int chemistry_csds_writer_populate_mask_data_spart(
     struct mask_data *mask_data) {
   /* We store the metal mass fraction. */
-  mask_data[chemistry_logger_field_spart_metal_mass_fractions] =
-      logger_create_mask_entry(
-          chemistry_logger_field_names_spart
-              [chemistry_logger_field_spart_metal_mass_fractions],
+  mask_data[chemistry_csds_field_spart_metal_mass_fractions] =
+      csds_create_mask_entry(
+          chemistry_csds_field_names_spart
+              [chemistry_csds_field_spart_metal_mass_fractions],
           GEAR_CHEMISTRY_ELEMENT_COUNT * sizeof(double));
 
-  return chemistry_logger_field_spart_count;
+  return chemistry_csds_field_spart_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record for the #part.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_part!
+ * #chemistry_csds_fields_part!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_part).
+ * #chemistry_csds_writer_populate_mask_data_part).
  * @param part The #part that will be written.
  * @param xpart The #xpart that will be written.
  * @param write_all Are we forcing to write all the fields?
@@ -102,12 +102,12 @@ INLINE static int chemistry_logger_writer_populate_mask_data_spart(
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void chemistry_logger_compute_size_and_mask_part(
+INLINE static void chemistry_csds_compute_size_and_mask_part(
     const struct mask_data *masks, const struct part *part,
     const struct xpart *xpart, const int write_all, size_t *buffer_size,
     unsigned int *mask) {
   /* Add the chemistry. */
-  *mask |= logger_add_field_to_mask(masks[chemistry_logger_field_part_all],
+  *mask |= csds_add_field_to_mask(masks[chemistry_csds_field_part_all],
                                     buffer_size);
 }
 
@@ -115,33 +115,33 @@ INLINE static void chemistry_logger_compute_size_and_mask_part(
  * @brief Generates the mask and compute the size of the record for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_spart!
+ * #chemistry_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_spart).
+ * #chemistry_csds_writer_populate_mask_data_spart).
  * @param spart The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void chemistry_logger_compute_size_and_mask_spart(
+INLINE static void chemistry_csds_compute_size_and_mask_spart(
     const struct mask_data *masks, const struct spart *spart,
     const int write_all, size_t *buffer_size, unsigned int *mask) {
 
   /* Add the chemistry. */
-  *mask |= logger_add_field_to_mask(
-      masks[chemistry_logger_field_spart_metal_mass_fractions], buffer_size);
+  *mask |= csds_add_field_to_mask(
+      masks[chemistry_csds_field_spart_metal_mass_fractions], buffer_size);
 }
 
 /**
- * @brief Write a #part to the logger.
+ * @brief Write a #part to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_part!
+ * #hydro_csds_fields_part!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_part).
+ * #chemistry_csds_writer_populate_mask_data_part).
  * @param p The #part to write.
  * @param xp The #xpart to write.
  * @param mask The mask to use for this record.
@@ -149,12 +149,12 @@ INLINE static void chemistry_logger_compute_size_and_mask_spart(
  *
  * @return The buffer after the data.
  */
-INLINE static char *chemistry_logger_write_particle(
+INLINE static char *chemistry_csds_write_particle(
     const struct mask_data *mask_data, const struct part *p,
     const struct xpart *xp, unsigned int *mask, char *buff) {
 
   /* Write the chemistry. */
-  if (logger_should_write_field(mask_data[chemistry_logger_field_part_all],
+  if (csds_should_write_field(mask_data[chemistry_csds_field_part_all],
                                 mask)) {
 
     /* Write the smoothed metal mass fraction */
@@ -175,26 +175,26 @@ INLINE static char *chemistry_logger_write_particle(
 }
 
 /**
- * @brief Write a #spart to the logger.
+ * @brief Write a #spart to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_spart!
+ * #hydro_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_spart).
+ * #chemistry_csds_writer_populate_mask_data_spart).
  * @param sp The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *chemistry_logger_write_sparticle(
+INLINE static char *chemistry_csds_write_sparticle(
     const struct mask_data *mask_data, const struct spart *sp,
     unsigned int *mask, char *buff) {
 
   /* Write the metal mass fraction. */
-  if (logger_should_write_field(
-          mask_data[chemistry_logger_field_spart_metal_mass_fractions], mask)) {
+  if (csds_should_write_field(
+          mask_data[chemistry_csds_field_spart_metal_mass_fractions], mask)) {
 
     /* Write the metal mass fraction */
     memcpy(buff, sp->chemistry_data.metal_mass_fraction,
@@ -205,5 +205,5 @@ INLINE static char *chemistry_logger_write_sparticle(
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
diff --git a/src/chemistry/none/chemistry_logger.c b/src/chemistry/none/chemistry_csds.c
similarity index 80%
rename from src/chemistry/none/chemistry_logger.c
rename to src/chemistry/none/chemistry_csds.c
index 707273d4d4a43f7c0b5bda5057e1b189c7c41a38..f8dd589fb9742008cd3d3f1c95b599dcc3315602 100644
--- a/src/chemistry/none/chemistry_logger.c
+++ b/src/chemistry/none/chemistry_csds.c
@@ -19,13 +19,13 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "chemistry_logger.h"
+#include "chemistry_csds.h"
 
 const char
-    *chemistry_logger_field_names_part[chemistry_logger_field_part_count] = {};
+    *chemistry_csds_field_names_part[chemistry_csds_field_part_count] = {};
 const char *
-    chemistry_logger_field_names_spart[chemistry_logger_field_spart_count] = {};
+    chemistry_csds_field_names_spart[chemistry_csds_field_spart_count] = {};
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/chemistry/none/chemistry_logger.h b/src/chemistry/none/chemistry_csds.h
similarity index 68%
rename from src/chemistry/none/chemistry_logger.h
rename to src/chemistry/none/chemistry_csds.h
index caf005d29d3055f3eb7cd1ef9c7ff877fc94b11e..2fa839e67c2139a95bb4b9fe40cb02a68f50fa0b 100644
--- a/src/chemistry/none/chemistry_logger.h
+++ b/src/chemistry/none/chemistry_csds.h
@@ -16,68 +16,68 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
-#define SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
+#ifndef SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
+#define SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
 
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only chemistry_logger_field_count is used.
+ * Outside the module, only chemistry_csds_field_count is used.
  */
-enum chemistry_logger_fields_part {
-  chemistry_logger_field_part_count = 0,
+enum chemistry_csds_fields_part {
+  chemistry_csds_field_part_count = 0,
 };
-enum chemistry_logger_fields_spart {
-  chemistry_logger_field_spart_count = 0,
+enum chemistry_csds_fields_spart {
+  chemistry_csds_field_spart_count = 0,
 };
 
 /* Name of each possible mask. */
 extern const char
-    *chemistry_logger_field_names_part[chemistry_logger_field_part_count];
+    *chemistry_csds_field_names_part[chemistry_csds_field_part_count];
 extern const char
-    *chemistry_logger_field_names_spart[chemistry_logger_field_spart_count];
+    *chemistry_csds_field_names_spart[chemistry_csds_field_spart_count];
 
 /**
- * @brief Initialize the logger for the #part.
+ * @brief Initialize the csds for the #part.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_part!
+ * #chemistry_csds_fields_part!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int chemistry_logger_writer_populate_mask_data_part(
+INLINE static int chemistry_csds_writer_populate_mask_data_part(
     struct mask_data *mask_data) {
-  return chemistry_logger_field_part_count;
+  return chemistry_csds_field_part_count;
 }
 
 /**
- * @brief Initialize the logger for the #spart.
+ * @brief Initialize the csds for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_spart!
+ * #chemistry_csds_fields_spart!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int chemistry_logger_writer_populate_mask_data_spart(
+INLINE static int chemistry_csds_writer_populate_mask_data_spart(
     struct mask_data *mask_data) {
-  return chemistry_logger_field_spart_count;
+  return chemistry_csds_field_spart_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record for the #part.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_part!
+ * #chemistry_csds_fields_part!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_part).
+ * #chemistry_csds_writer_populate_mask_data_part).
  * @param part The #part that will be written.
  * @param xpart The #xpart that will be written.
  * @param write_all Are we forcing to write all the fields?
@@ -85,7 +85,7 @@ INLINE static int chemistry_logger_writer_populate_mask_data_spart(
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void chemistry_logger_compute_size_and_mask_part(
+INLINE static void chemistry_csds_compute_size_and_mask_part(
     const struct mask_data *masks, const struct part *part,
     const struct xpart *xpart, const int write_all, size_t *buffer_size,
     unsigned int *mask) {}
@@ -94,28 +94,28 @@ INLINE static void chemistry_logger_compute_size_and_mask_part(
  * @brief Generates the mask and compute the size of the record for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #chemistry_logger_fields_spart!
+ * #chemistry_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_spart).
+ * #chemistry_csds_writer_populate_mask_data_spart).
  * @param spart The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void chemistry_logger_compute_size_and_mask_spart(
+INLINE static void chemistry_csds_compute_size_and_mask_spart(
     const struct mask_data *masks, const struct spart *spart,
     const int write_all, size_t *buffer_size, unsigned int *mask) {}
 
 /**
- * @brief Write a #part to the logger.
+ * @brief Write a #part to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_part!
+ * #hydro_csds_fields_part!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_part).
+ * #chemistry_csds_writer_populate_mask_data_part).
  * @param p The #part to write.
  * @param xp The #xpart to write.
  * @param mask The mask to use for this record.
@@ -123,31 +123,31 @@ INLINE static void chemistry_logger_compute_size_and_mask_spart(
  *
  * @return The buffer after the data.
  */
-INLINE static char *chemistry_logger_write_particle(
+INLINE static char *chemistry_csds_write_particle(
     const struct mask_data *mask_data, const struct part *p,
     const struct xpart *xp, unsigned int *mask, char *buff) {
   return buff;
 }
 
 /**
- * @brief Write a #spart to the logger.
+ * @brief Write a #spart to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_spart!
+ * #hydro_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #chemistry_logger_writer_populate_mask_data_spart).
+ * #chemistry_csds_writer_populate_mask_data_spart).
  * @param sp The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *chemistry_logger_write_sparticle(
+INLINE static char *chemistry_csds_write_sparticle(
     const struct mask_data *mask_data, const struct spart *sp,
     unsigned int *mask, char *buff) {
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_CHEMISTRY_NONE_CHEMISTRY_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_CHEMISTRY_NONE_CHEMISTRY_CSDS_H
diff --git a/src/chemistry_logger.h b/src/chemistry_csds.h
similarity index 86%
rename from src/chemistry_logger.h
rename to src/chemistry_csds.h
index 6d17216391d2ec42b8613e635e9525ba7b2fb8a1..3e313f307c156899142c03e42bae377668055628 100644
--- a/src/chemistry_logger.h
+++ b/src/chemistry_csds.h
@@ -16,23 +16,23 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_CHEMISTRY_LOGGER_H
-#define SWIFT_CHEMISTRY_LOGGER_H
+#ifndef SWIFT_CHEMISTRY_CSDS_H
+#define SWIFT_CHEMISTRY_CSDS_H
 
 /* Config parameters. */
 #include "../config.h"
 
 /* Local includes */
 #include "align.h"
-#include "logger.h"
+#include "csds.h"
 #include "part_type.h"
 #include "timeline.h"
 
 /* Import the right function */
 #if defined(CHEMISTRY_NONE)
-#include "./chemistry/none/chemistry_logger.h"
+#include "./chemistry/none/chemistry_csds.h"
 #elif defined(CHEMISTRY_GEAR)
-#include "./chemistry/GEAR/chemistry_logger.h"
+#include "./chemistry/GEAR/chemistry_csds.h"
 #elif defined(CHEMISTRY_GEAR_DIFFUSION)
 #error TODO
 #elif defined(CHEMISTRY_QLA)
@@ -43,4 +43,4 @@
 #error "Invalid choice of chemistry function."
 #endif
 
-#endif /* SWIFT_CHEMISTRY_LOGGER_H */
+#endif /* SWIFT_CHEMISTRY_CSDS_H */
diff --git a/src/logger.c b/src/csds.c
similarity index 63%
rename from src/logger.c
rename to src/csds.c
index ff0fc9a467412f433c9504240fdaeade505b75e6..12d45131aa686529df7b9c7959f0a90cc86859bf 100644
--- a/src/logger.c
+++ b/src/csds.c
@@ -22,7 +22,7 @@
 #include "../config.h"
 
 #ifdef HAVE_POSIX_FALLOCATE /* Are we on a sensible platform? */
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /* Some standard headers. */
 #include <hdf5.h>
@@ -35,19 +35,19 @@
 #include "part.h"
 
 /* This object's header. */
-#include "logger.h"
+#include "csds.h"
 
 /* Local headers. */
 #include "active.h"
 #include "atomic.h"
-#include "chemistry_logger.h"
+#include "chemistry_csds.h"
 #include "dump.h"
 #include "engine.h"
 #include "error.h"
-#include "gravity_logger.h"
-#include "hydro_logger.h"
-#include "star_formation_particle_logger.h"
-#include "stars_logger.h"
+#include "gravity_csds.h"
+#include "hydro_csds.h"
+#include "star_formation_csds.h"
+#include "stars_csds.h"
 #include "units.h"
 
 /*
@@ -55,30 +55,30 @@
  */
 /* Number of bytes for a mask. */
 // TODO change this to number of bits
-#define logger_mask_size 2
+#define csds_mask_size 2
 
 /* Number of bits for record header. */
-#define logger_header_bytes 8
+#define csds_header_bytes 8
 
 /* Number bytes for an offset. */
-#define logger_offset_size logger_header_bytes - logger_mask_size
+#define csds_offset_size csds_header_bytes - csds_mask_size
 
 /* Number of bytes for the file format information. */
-#define logger_format_size 20
+#define csds_format_size 20
 
 /* Number of bytes for the labels in the header. */
-#define logger_label_size 20
+#define csds_label_size 20
 
-char logger_file_format[logger_format_size] = "SWIFT_LOGGER";
+char csds_file_format[csds_format_size] = "SWIFT_CSDS";
 
 /*
  * The two following defines need to correspond to the list's order
- * in logger_init_masks.
+ * in csds_init_masks.
  */
 /* Index of the special flags in the list of masks */
-#define logger_index_special_flags 0
+#define csds_index_special_flags 0
 /* Index of the timestamp in the list of masks */
-#define logger_index_timestamp 1
+#define csds_index_timestamp 1
 
 /**
  * @brief Write the header of a record (offset + mask).
@@ -92,17 +92,17 @@ char logger_file_format[logger_format_size] = "SWIFT_LOGGER";
  *
  * @return updated buff
  */
-char *logger_write_record_header(char *buff, const unsigned int *mask,
+char *csds_write_record_header(char *buff, const unsigned int *mask,
                                  const size_t *offset,
                                  const size_t offset_new) {
   /* write mask. */
-  memcpy(buff, mask, logger_mask_size);
-  buff += logger_mask_size;
+  memcpy(buff, mask, csds_mask_size);
+  buff += csds_mask_size;
 
   /* write offset. */
   uint64_t diff_offset = offset_new - *offset;
-  memcpy(buff, &diff_offset, logger_offset_size);
-  buff += logger_offset_size;
+  memcpy(buff, &diff_offset, csds_offset_size);
+  buff += csds_offset_size;
 
   return buff;
 }
@@ -115,7 +115,7 @@ char *logger_write_record_header(char *buff, const unsigned int *mask,
  * @param size number of bytes to write
  * @param p pointer to the data
  */
-void logger_write_data(struct dump *d, size_t *offset, size_t size,
+void csds_write_data(struct dump *d, size_t *offset, size_t size,
                        const void *p) {
   /* get buffer. */
   char *buff = dump_get(d, size, offset);
@@ -130,15 +130,15 @@ void logger_write_data(struct dump *d, size_t *offset, size_t size,
 /**
  * @brief log all particles in the engine.
  *
- * TODO use threadpool + logger function for multiple particles.
- * @param log The #logger_writer
+ * TODO use threadpool + csds function for multiple particles.
+ * @param log The #csds_writer
  * @param e The #engine
  */
-void logger_log_all_particles(struct logger_writer *log,
+void csds_log_all_particles(struct csds_writer *log,
                               const struct engine *e) {
 
   /* Ensure that enough space is available. */
-  logger_ensure_size(log, e->s->nr_parts, e->s->nr_gparts, e->s->nr_sparts);
+  csds_ensure_size(log, e->s->nr_parts, e->s->nr_gparts, e->s->nr_sparts);
 
   /* some constants. */
   const struct space *s = e->s;
@@ -148,8 +148,8 @@ void logger_log_all_particles(struct logger_writer *log,
     struct part *p = &s->parts[i];
     struct xpart *xp = &s->xparts[i];
     if (!part_is_inhibited(p, e) && p->time_bin != time_bin_not_created) {
-      logger_log_part(log, p, xp, e,
-                      /* log_all_fields */ 1, logger_flag_none,
+      csds_log_part(log, p, xp, e,
+                      /* log_all_fields */ 1, csds_flag_none,
                       /* data */ 0);
     }
   }
@@ -160,8 +160,8 @@ void logger_log_all_particles(struct logger_writer *log,
     if (!gpart_is_inhibited(gp, e) && gp->time_bin != time_bin_not_created &&
         (gp->type == swift_type_dark_matter ||
          gp->type == swift_type_dark_matter_background)) {
-      logger_log_gpart(log, gp, e,
-                       /* log_all_fields */ 1, logger_flag_none,
+      csds_log_gpart(log, gp, e,
+                       /* log_all_fields */ 1, csds_flag_none,
                        /* data */ 0);
     }
   }
@@ -170,8 +170,8 @@ void logger_log_all_particles(struct logger_writer *log,
   for (size_t i = 0; i < s->nr_sparts; i++) {
     struct spart *sp = &s->sparts[i];
     if (!spart_is_inhibited(sp, e) && sp->time_bin != time_bin_not_created) {
-      logger_log_spart(log, sp, e,
-                       /* log_all_fields */ 1, logger_flag_none,
+      csds_log_spart(log, sp, e,
+                       /* log_all_fields */ 1, csds_flag_none,
                        /* data */ 0);
     }
   }
@@ -182,7 +182,7 @@ void logger_log_all_particles(struct logger_writer *log,
 /**
  * @brief Copy the particle fields into a given buffer.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param p The #part to copy.
  * @param xp The #xpart to copy.
  * @param e The #engine.
@@ -192,7 +192,7 @@ void logger_log_all_particles(struct logger_writer *log,
  * @param buff The buffer to use when writing.
  * @param special_flags The data for the special flags.
  */
-void logger_copy_part_fields(const struct logger_writer *log,
+void csds_copy_part_fields(const struct csds_writer *log,
                              const struct part *p, const struct xpart *xp,
                              const struct engine *e, unsigned int mask,
                              size_t *offset, size_t offset_new, char *buff,
@@ -205,20 +205,20 @@ void logger_copy_part_fields(const struct logger_writer *log,
 #endif
 
   /* Write the header. */
-  buff = logger_write_record_header(buff, &mask, offset, offset_new);
+  buff = csds_write_record_header(buff, &mask, offset, offset_new);
 
   /* Special flags */
-  if (mask & log->logger_mask_data[logger_index_special_flags].mask) {
+  if (mask & log->csds_mask_data[csds_index_special_flags].mask) {
     memcpy(buff, &special_flags,
-           log->logger_mask_data[logger_index_special_flags].size);
-    buff += log->logger_mask_data[logger_index_special_flags].size;
-    mask &= ~log->logger_mask_data[logger_index_special_flags].mask;
+           log->csds_mask_data[csds_index_special_flags].size);
+    buff += log->csds_mask_data[csds_index_special_flags].size;
+    mask &= ~log->csds_mask_data[csds_index_special_flags].mask;
   }
 
   /* Write the hydro fields */
-  buff = hydro_logger_write_particle(log->mask_data_pointers.hydro, p, xp,
+  buff = hydro_csds_write_particle(log->mask_data_pointers.hydro, p, xp,
                                      &mask, buff);
-  buff = chemistry_logger_write_particle(log->mask_data_pointers.chemistry_part,
+  buff = chemistry_csds_write_particle(log->mask_data_pointers.chemistry_part,
                                          p, xp, &mask, buff);
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -231,7 +231,7 @@ void logger_copy_part_fields(const struct logger_writer *log,
 /**
  * @brief Dump a #part to the log.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param p The #part to dump.
  * @param xp The #xpart to dump.
  * @param e The #engine.
@@ -239,20 +239,20 @@ void logger_copy_part_fields(const struct logger_writer *log,
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_part(struct logger_writer *log, const struct part *p,
+void csds_log_part(struct csds_writer *log, const struct part *p,
                      struct xpart *xp, const struct engine *e,
                      const int log_all_fields,
-                     const enum logger_special_flags flag,
+                     const enum csds_special_flags flag,
                      const int flag_data) {
 
-  logger_log_parts(log, p, xp, /* count= */ 1, e, log_all_fields, flag,
+  csds_log_parts(log, p, xp, /* count= */ 1, e, log_all_fields, flag,
                    flag_data);
 }
 
 /**
  * @brief Dump a group of #part to the log.
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param p The #part to dump.
  * @param xp The #xpart to dump.
  * @param count The number of particle to dump.
@@ -261,21 +261,21 @@ void logger_log_part(struct logger_writer *log, const struct part *p,
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_parts(struct logger_writer *log, const struct part *p,
+void csds_log_parts(struct csds_writer *log, const struct part *p,
                       struct xpart *xp, int count, const struct engine *e,
                       const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data) {
 
   /* Build the special flag */
   const int size_special_flag =
-      log->logger_mask_data[logger_index_special_flags].size;
-  const uint32_t special_flags = logger_pack_flags_and_data(flag, flag_data);
+      log->csds_mask_data[csds_index_special_flags].size;
+  const uint32_t special_flags = csds_pack_flags_and_data(flag, flag_data);
 
   /* Compute the size of the buffer. */
   size_t size_total = 0;
   if (log_all_fields) {
-    size_t size = log->max_size_record_part + logger_header_bytes;
+    size_t size = log->max_size_record_part + csds_header_bytes;
     if (flag != 0) {
       size += size_special_flag;
     }
@@ -284,15 +284,15 @@ void logger_log_parts(struct logger_writer *log, const struct part *p,
     for (int i = 0; i < count; i++) {
       unsigned int mask = 0;
       size_t size = 0;
-      hydro_logger_compute_size_and_mask(log->mask_data_pointers.hydro, &p[i],
+      hydro_csds_compute_size_and_mask(log->mask_data_pointers.hydro, &p[i],
                                          &xp[i], log_all_fields, &size, &mask);
-      chemistry_logger_compute_size_and_mask_part(
+      chemistry_csds_compute_size_and_mask_part(
           log->mask_data_pointers.chemistry_part, &p[i], &xp[i], log_all_fields,
           &size, &mask);
       if (flag != 0) {
         size += size_special_flag;
       }
-      size_total += size + logger_header_bytes;
+      size_total += size + csds_header_bytes;
     }
   }
 
@@ -311,42 +311,42 @@ void logger_log_parts(struct logger_writer *log, const struct part *p,
     /* Get the masks */
     size_t size = 0;
     unsigned int mask = 0;
-    hydro_logger_compute_size_and_mask(log->mask_data_pointers.hydro, &p[i],
+    hydro_csds_compute_size_and_mask(log->mask_data_pointers.hydro, &p[i],
                                        &xp[i], log_all_fields, &size, &mask);
-    chemistry_logger_compute_size_and_mask_part(
+    chemistry_csds_compute_size_and_mask_part(
         log->mask_data_pointers.chemistry_part, &p[i], &xp[i], log_all_fields,
         &size, &mask);
-    size += logger_header_bytes;
+    size += csds_header_bytes;
 
     /* Add the special flag. */
     if (flag != 0) {
-      mask |= log->logger_mask_data[logger_index_special_flags].mask;
+      mask |= log->csds_mask_data[csds_index_special_flags].mask;
       size += size_special_flag;
       /* reset the offset of the previous log */
-      if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-        xp[i].logger_data.last_offset = 0;
+      if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+        xp[i].csds_data.last_offset = 0;
       }
     }
 
     /* Copy everything into the buffer */
-    logger_copy_part_fields(log, &p[i], &xp[i], e, mask,
-                            &xp[i].logger_data.last_offset, offset_new, buff,
+    csds_copy_part_fields(log, &p[i], &xp[i], e, mask,
+                            &xp[i].csds_data.last_offset, offset_new, buff,
                             special_flags);
 
     /* Update the pointers */
-    xp[i].logger_data.last_offset = offset_new;
-    xp[i].logger_data.steps_since_last_output = 0;
+    xp[i].csds_data.last_offset = offset_new;
+    xp[i].csds_data.steps_since_last_output = 0;
     buff += size;
     offset_new += size;
 
     /* Write the particle into the history if needed. */
-    if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-      logger_history_log(&log->history_new[swift_type_gas], p[i].id,
-                         xp[i].logger_data.last_offset);
-    } else if (flag == logger_flag_change_type || flag == logger_flag_delete ||
-               flag == logger_flag_mpi_exit) {
-      logger_history_log(&log->history_removed[swift_type_gas], p[i].id,
-                         xp[i].logger_data.last_offset);
+    if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+      csds_history_log(&log->history_new[swift_type_gas], p[i].id,
+                         xp[i].csds_data.last_offset);
+    } else if (flag == csds_flag_change_type || flag == csds_flag_delete ||
+               flag == csds_flag_mpi_exit) {
+      csds_history_log(&log->history_removed[swift_type_gas], p[i].id,
+                         xp[i].csds_data.last_offset);
     }
   }
 
@@ -363,7 +363,7 @@ void logger_log_parts(struct logger_writer *log, const struct part *p,
 /**
  * @brief Copy the particle fields into a given buffer.
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param sp The #spart to copy.
  * @param e The #engine.
  * @param mask The mask for the fields to write.
@@ -372,7 +372,7 @@ void logger_log_parts(struct logger_writer *log, const struct part *p,
  * @param buff The buffer to use when writing.
  * @param special_flags The data for the special flags.
  */
-void logger_copy_spart_fields(const struct logger_writer *log,
+void csds_copy_spart_fields(const struct csds_writer *log,
                               const struct spart *sp, const struct engine *e,
                               unsigned int mask, size_t *offset,
                               size_t offset_new, char *buff,
@@ -385,22 +385,22 @@ void logger_copy_spart_fields(const struct logger_writer *log,
 #endif
 
   /* Write the header. */
-  buff = logger_write_record_header(buff, &mask, offset, offset_new);
+  buff = csds_write_record_header(buff, &mask, offset, offset_new);
 
   /* Special flags */
-  if (mask & log->logger_mask_data[logger_index_special_flags].mask) {
+  if (mask & log->csds_mask_data[csds_index_special_flags].mask) {
     memcpy(buff, &special_flags,
-           log->logger_mask_data[logger_index_special_flags].size);
-    buff += log->logger_mask_data[logger_index_special_flags].size;
-    mask &= ~log->logger_mask_data[logger_index_special_flags].mask;
+           log->csds_mask_data[csds_index_special_flags].size);
+    buff += log->csds_mask_data[csds_index_special_flags].size;
+    mask &= ~log->csds_mask_data[csds_index_special_flags].mask;
   }
 
   /* Write the stellar fields */
-  buff = stars_logger_write_particle(log->mask_data_pointers.stars, sp, &mask,
+  buff = stars_csds_write_particle(log->mask_data_pointers.stars, sp, &mask,
                                      buff);
-  buff = chemistry_logger_write_sparticle(
+  buff = chemistry_csds_write_sparticle(
       log->mask_data_pointers.chemistry_spart, sp, &mask, buff);
-  buff = star_formation_logger_write_sparticle(
+  buff = star_formation_csds_write_sparticle(
       log->mask_data_pointers.star_formation, sp, &mask, buff);
 #ifdef SWIFT_DEBUG_CHECKS
   if (mask) {
@@ -412,25 +412,25 @@ void logger_copy_spart_fields(const struct logger_writer *log,
 /**
  * @brief Dump a #spart to the log.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param sp The #spart to dump.
  * @param e The #engine.
  * @param log_all_fields Should we log all the fields?
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_spart(struct logger_writer *log, struct spart *sp,
+void csds_log_spart(struct csds_writer *log, struct spart *sp,
                       const struct engine *e, const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data) {
 
-  logger_log_sparts(log, sp, /* count */ 1, e, log_all_fields, flag, flag_data);
+  csds_log_sparts(log, sp, /* count */ 1, e, log_all_fields, flag, flag_data);
 }
 
 /**
  * @brief Dump a group of #spart to the log.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param sp The #spart to dump.
  * @param e The #engine.
  * @param log_all_fields Should we log all the fields?
@@ -438,19 +438,19 @@ void logger_log_spart(struct logger_writer *log, struct spart *sp,
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
+void csds_log_sparts(struct csds_writer *log, struct spart *sp, int count,
                        const struct engine *e, const int log_all_fields,
-                       const enum logger_special_flags flag,
+                       const enum csds_special_flags flag,
                        const int flag_data) {
   /* Build the special flag */
   const int size_special_flag =
-      log->logger_mask_data[logger_index_special_flags].size;
-  const uint32_t special_flags = logger_pack_flags_and_data(flag, flag_data);
+      log->csds_mask_data[csds_index_special_flags].size;
+  const uint32_t special_flags = csds_pack_flags_and_data(flag, flag_data);
 
   /* Compute the size of the buffer. */
   size_t size_total = 0;
   if (log_all_fields) {
-    size_t size = log->max_size_record_spart + logger_header_bytes;
+    size_t size = log->max_size_record_spart + csds_header_bytes;
     if (flag != 0) {
       size += size_special_flag;
     }
@@ -459,18 +459,18 @@ void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
     for (int i = 0; i < count; i++) {
       unsigned int mask = 0;
       size_t size = 0;
-      stars_logger_compute_size_and_mask(log->mask_data_pointers.stars, &sp[i],
+      stars_csds_compute_size_and_mask(log->mask_data_pointers.stars, &sp[i],
                                          log_all_fields, &size, &mask);
-      chemistry_logger_compute_size_and_mask_spart(
+      chemistry_csds_compute_size_and_mask_spart(
           log->mask_data_pointers.chemistry_spart, &sp[i], log_all_fields,
           &size, &mask);
-      star_formation_logger_compute_size_and_mask(
+      star_formation_csds_compute_size_and_mask(
           log->mask_data_pointers.star_formation, &sp[i], log_all_fields, &size,
           &mask);
       if (flag != 0) {
         size += size_special_flag;
       }
-      size_total += size + logger_header_bytes;
+      size_total += size + csds_header_bytes;
     }
   }
 
@@ -487,46 +487,46 @@ void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
     /* Get the masks */
     size_t size = 0;
     unsigned int mask = 0;
-    stars_logger_compute_size_and_mask(log->mask_data_pointers.stars, &sp[i],
+    stars_csds_compute_size_and_mask(log->mask_data_pointers.stars, &sp[i],
                                        log_all_fields, &size, &mask);
-    chemistry_logger_compute_size_and_mask_spart(
+    chemistry_csds_compute_size_and_mask_spart(
         log->mask_data_pointers.chemistry_spart, &sp[i], log_all_fields, &size,
         &mask);
-    star_formation_logger_compute_size_and_mask(
+    star_formation_csds_compute_size_and_mask(
         log->mask_data_pointers.star_formation, &sp[i], log_all_fields, &size,
         &mask);
-    size += logger_header_bytes;
+    size += csds_header_bytes;
 
     /* Add the special flag. */
     if (flag != 0) {
-      mask |= log->logger_mask_data[logger_index_special_flags].mask;
+      mask |= log->csds_mask_data[csds_index_special_flags].mask;
       size += size_special_flag;
 
       /* reset the offset of the previous log */
-      if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-        sp[i].logger_data.last_offset = 0;
+      if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+        sp[i].csds_data.last_offset = 0;
       }
     }
 
     /* Copy everything into the buffer */
-    logger_copy_spart_fields(log, &sp[i], e, mask,
-                             &sp[i].logger_data.last_offset, offset_new, buff,
+    csds_copy_spart_fields(log, &sp[i], e, mask,
+                             &sp[i].csds_data.last_offset, offset_new, buff,
                              special_flags);
 
     /* Update the pointers */
-    sp[i].logger_data.last_offset = offset_new;
-    sp[i].logger_data.steps_since_last_output = 0;
+    sp[i].csds_data.last_offset = offset_new;
+    sp[i].csds_data.steps_since_last_output = 0;
     buff += size;
     offset_new += size;
 
     /* Write the particle into the history if needed. */
-    if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-      logger_history_log(&log->history_new[swift_type_stars], sp[i].id,
-                         sp[i].logger_data.last_offset);
-    } else if (flag == logger_flag_change_type || flag == logger_flag_delete ||
-               flag == logger_flag_mpi_exit) {
-      logger_history_log(&log->history_removed[swift_type_stars], sp[i].id,
-                         sp[i].logger_data.last_offset);
+    if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+      csds_history_log(&log->history_new[swift_type_stars], sp[i].id,
+                         sp[i].csds_data.last_offset);
+    } else if (flag == csds_flag_change_type || flag == csds_flag_delete ||
+               flag == csds_flag_mpi_exit) {
+      csds_history_log(&log->history_removed[swift_type_stars], sp[i].id,
+                         sp[i].csds_data.last_offset);
     }
   }
 #ifdef SWIFT_DEBUG_CHECKS
@@ -542,7 +542,7 @@ void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
 /**
  * @brief Copy the particle fields into a given buffer.
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param gp The #gpart to copy.
  * @param e The #engine.
  * @param mask The mask for the fields to write.
@@ -551,7 +551,7 @@ void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
  * @param buff The buffer to use when writing.
  * @param special_flags The data of the special flag.
  */
-void logger_copy_gpart_fields(const struct logger_writer *log,
+void csds_copy_gpart_fields(const struct csds_writer *log,
                               const struct gpart *gp, const struct engine *e,
                               unsigned int mask, size_t *offset,
                               size_t offset_new, char *buff,
@@ -564,18 +564,18 @@ void logger_copy_gpart_fields(const struct logger_writer *log,
 #endif
 
   /* Write the header. */
-  buff = logger_write_record_header(buff, &mask, offset, offset_new);
+  buff = csds_write_record_header(buff, &mask, offset, offset_new);
 
   /* Special flags */
-  if (mask & log->logger_mask_data[logger_index_special_flags].mask) {
+  if (mask & log->csds_mask_data[csds_index_special_flags].mask) {
     memcpy(buff, &special_flags,
-           log->logger_mask_data[logger_index_special_flags].size);
-    buff += log->logger_mask_data[logger_index_special_flags].size;
-    mask &= ~log->logger_mask_data[logger_index_special_flags].mask;
+           log->csds_mask_data[csds_index_special_flags].size);
+    buff += log->csds_mask_data[csds_index_special_flags].size;
+    mask &= ~log->csds_mask_data[csds_index_special_flags].mask;
   }
 
   /* Write the gravity fields */
-  buff = gravity_logger_write_particle(log->mask_data_pointers.gravity, gp,
+  buff = gravity_csds_write_particle(log->mask_data_pointers.gravity, gp,
                                        &mask, buff);
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -588,24 +588,24 @@ void logger_copy_gpart_fields(const struct logger_writer *log,
 /**
  * @brief Dump a #gpart to the log.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param p The #gpart to dump.
  * @param e The #engine.
  * @param log_all_fields Should we log all the fields?
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_gpart(struct logger_writer *log, struct gpart *p,
+void csds_log_gpart(struct csds_writer *log, struct gpart *p,
                       const struct engine *e, const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data) {
-  logger_log_gparts(log, p, /* count */ 1, e, log_all_fields, flag, flag_data);
+  csds_log_gparts(log, p, /* count */ 1, e, log_all_fields, flag, flag_data);
 }
 
 /**
  * @brief Dump a group of #gpart to the log.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param p The #gpart to dump.
  * @param count The number of particle to dump.
  * @param e The #engine.
@@ -613,14 +613,14 @@ void logger_log_gpart(struct logger_writer *log, struct gpart *p,
  * @param flag The value of the special flags.
  * @param flag_data The data to write for the flag.
  */
-void logger_log_gparts(struct logger_writer *log, struct gpart *p, int count,
+void csds_log_gparts(struct csds_writer *log, struct gpart *p, int count,
                        const struct engine *e, const int log_all_fields,
-                       const enum logger_special_flags flag,
+                       const enum csds_special_flags flag,
                        const int flag_data) {
   /* Build the special flag */
   const int size_special_flag =
-      log->logger_mask_data[logger_index_special_flags].size;
-  const uint32_t special_flags = logger_pack_flags_and_data(flag, flag_data);
+      log->csds_mask_data[csds_index_special_flags].size;
+  const uint32_t special_flags = csds_pack_flags_and_data(flag, flag_data);
 
   /* Compute the size of the buffer. */
   /* As we might have some non DM particles, we cannot log_all_fields blindly */
@@ -633,12 +633,12 @@ void logger_log_gparts(struct logger_writer *log, struct gpart *p, int count,
 
     unsigned int mask = 0;
     size_t size = 0;
-    gravity_logger_compute_size_and_mask(log->mask_data_pointers.gravity, &p[i],
+    gravity_csds_compute_size_and_mask(log->mask_data_pointers.gravity, &p[i],
                                          log_all_fields, &size, &mask);
     if (flag != 0) {
       size += size_special_flag;
     }
-    size_total += size + logger_header_bytes;
+    size_total += size + csds_header_bytes;
   }
 
   /* Allocate a chunk of memory in the dump of the right size. */
@@ -659,39 +659,39 @@ void logger_log_gparts(struct logger_writer *log, struct gpart *p, int count,
     /* Get the masks */
     size_t size = 0;
     unsigned int mask = 0;
-    gravity_logger_compute_size_and_mask(log->mask_data_pointers.gravity, &p[i],
+    gravity_csds_compute_size_and_mask(log->mask_data_pointers.gravity, &p[i],
                                          log_all_fields, &size, &mask);
-    size += logger_header_bytes;
+    size += csds_header_bytes;
 
     /* Add the special flag. */
     if (flag != 0) {
-      mask |= log->logger_mask_data[logger_index_special_flags].mask;
+      mask |= log->csds_mask_data[csds_index_special_flags].mask;
       size += size_special_flag;
 
       /* reset the offset of the previous log */
-      if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-        p[i].logger_data.last_offset = 0;
+      if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+        p[i].csds_data.last_offset = 0;
       }
     }
 
     /* Copy everything into the buffer */
-    logger_copy_gpart_fields(log, &p[i], e, mask, &p[i].logger_data.last_offset,
+    csds_copy_gpart_fields(log, &p[i], e, mask, &p[i].csds_data.last_offset,
                              offset_new, buff, special_flags);
 
     /* Update the pointers */
-    p[i].logger_data.last_offset = offset_new;
-    p[i].logger_data.steps_since_last_output = 0;
+    p[i].csds_data.last_offset = offset_new;
+    p[i].csds_data.steps_since_last_output = 0;
     buff += size;
     offset_new += size;
 
     /* Write the particle into the history if needed. */
-    if (flag == logger_flag_create || flag == logger_flag_mpi_enter) {
-      logger_history_log(&log->history_new[swift_type_dark_matter],
-                         p[i].id_or_neg_offset, p[i].logger_data.last_offset);
-    } else if (flag == logger_flag_change_type || flag == logger_flag_delete ||
-               flag == logger_flag_mpi_exit) {
-      logger_history_log(&log->history_removed[swift_type_dark_matter],
-                         p[i].id_or_neg_offset, p[i].logger_data.last_offset);
+    if (flag == csds_flag_create || flag == csds_flag_mpi_enter) {
+      csds_history_log(&log->history_new[swift_type_dark_matter],
+                         p[i].id_or_neg_offset, p[i].csds_data.last_offset);
+    } else if (flag == csds_flag_change_type || flag == csds_flag_delete ||
+               flag == csds_flag_mpi_exit) {
+      csds_history_log(&log->history_removed[swift_type_dark_matter],
+                         p[i].id_or_neg_offset, p[i].csds_data.last_offset);
     }
   }
 #ifdef SWIFT_DEBUG_CHECKS
@@ -707,26 +707,26 @@ void logger_log_gparts(struct logger_writer *log, struct gpart *p, int count,
 /**
  * @brief write a timestamp
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param timestamp time to write
  * @param time time or scale factor
  * @param offset Pointer to the offset of the previous log of this particle;
  * (return) offset of this log.
  */
-void logger_log_timestamp(struct logger_writer *log, integertime_t timestamp,
+void csds_log_timestamp(struct csds_writer *log, integertime_t timestamp,
                           double time, size_t *offset) {
   struct dump *dump = &log->dump;
   /* Start by computing the size of the message. */
   const int size =
-      log->logger_mask_data[logger_index_timestamp].size + logger_header_bytes;
+      log->csds_mask_data[csds_index_timestamp].size + csds_header_bytes;
 
   /* Allocate a chunk of memory in the dump of the right size. */
   size_t offset_new;
   char *buff = (char *)dump_get(dump, size, &offset_new);
 
   /* Write the header. */
-  unsigned int mask = log->logger_mask_data[logger_index_timestamp].mask;
-  buff = logger_write_record_header(buff, &mask, offset, offset_new);
+  unsigned int mask = log->csds_mask_data[csds_index_timestamp].mask;
+  buff = csds_write_record_header(buff, &mask, offset, offset_new);
 
   /* Store the timestamp. */
   memcpy(buff, &timestamp, sizeof(integertime_t));
@@ -742,15 +742,15 @@ void logger_log_timestamp(struct logger_writer *log, integertime_t timestamp,
 /**
  * @brief Ensure that the buffer is large enough for a step.
  *
- * Check if logger parameters are large enough to write all particles
+ * Check if csds parameters are large enough to write all particles
  * and ensure that enough space is available in the buffer.
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param total_nr_parts total number of part
  * @param total_nr_gparts total number of gpart
  * @param total_nr_sparts total number of spart
  */
-void logger_ensure_size(struct logger_writer *log, size_t total_nr_parts,
+void csds_ensure_size(struct csds_writer *log, size_t total_nr_parts,
                         size_t total_nr_gparts, size_t total_nr_sparts) {
 
   /* count part memory */
@@ -774,20 +774,20 @@ void logger_ensure_size(struct logger_writer *log, size_t total_nr_parts,
 
 /** @brief Generate the name of the dump files
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param filename The filename of the dump file.
  */
-void logger_get_dump_name(struct logger_writer *log, char *filename) {
+void csds_get_dump_name(struct csds_writer *log, char *filename) {
   sprintf(filename, "%s_%04i.dump", log->base_name, engine_rank);
 }
 
 /**
- * @brief Initialize the variable logger_mask_data.
+ * @brief Initialize the variable csds_mask_data.
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param e The #engine.
  */
-void logger_init_masks(struct logger_writer *log, const struct engine *e) {
+void csds_init_masks(struct csds_writer *log, const struct engine *e) {
   /* Set the pointers to 0 */
   log->mask_data_pointers.hydro = NULL;
   log->mask_data_pointers.chemistry_part = NULL;
@@ -801,18 +801,18 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
 
   /* The next fields must be the two first ones. */
   /* Add the special flags (written manually => no need of offset) */
-  if (logger_index_special_flags != 0) {
+  if (csds_index_special_flags != 0) {
     error("Expecting the special flags to be the first element.");
   }
-  list[logger_index_special_flags] =
-      logger_create_mask_entry("SpecialFlags", sizeof(int));
+  list[csds_index_special_flags] =
+      csds_create_mask_entry("SpecialFlags", sizeof(int));
   num_fields += 1;
 
   /* Add the timestamp */
-  if (logger_index_timestamp != 1) {
+  if (csds_index_timestamp != 1) {
     error("Expecting the timestamp to be the first element.");
   }
-  list[logger_index_timestamp] = logger_create_mask_entry(
+  list[csds_index_timestamp] = csds_create_mask_entry(
       "Timestamp", sizeof(integertime_t) + sizeof(double));
   list[num_fields].type = mask_type_timestep;  // flag it as timestamp
   num_fields += 1;
@@ -826,7 +826,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.hydro = tmp;
 
   /* Set the masks */
-  int tmp_num_fields = hydro_logger_writer_populate_mask_data(tmp);
+  int tmp_num_fields = hydro_csds_writer_populate_mask_data(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_gas;
@@ -840,7 +840,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.chemistry_part = tmp;
 
   /* Set the masks */
-  tmp_num_fields = chemistry_logger_writer_populate_mask_data_part(tmp);
+  tmp_num_fields = chemistry_csds_writer_populate_mask_data_part(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_gas;
@@ -854,7 +854,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.stars = tmp;
 
   /* Set the masks */
-  tmp_num_fields = stars_logger_writer_populate_mask_data(tmp);
+  tmp_num_fields = stars_csds_writer_populate_mask_data(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_stars;
@@ -868,7 +868,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.chemistry_spart = tmp;
 
   /* Set the masks */
-  tmp_num_fields = chemistry_logger_writer_populate_mask_data_spart(tmp);
+  tmp_num_fields = chemistry_csds_writer_populate_mask_data_spart(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_stars;
@@ -882,7 +882,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.star_formation = tmp;
 
   /* Set the masks */
-  tmp_num_fields = star_formation_logger_writer_populate_mask_data(tmp);
+  tmp_num_fields = star_formation_csds_writer_populate_mask_data(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_stars;
@@ -896,7 +896,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   log->mask_data_pointers.gravity = tmp;
 
   /* Set the masks */
-  tmp_num_fields = gravity_logger_writer_populate_mask_data(tmp);
+  tmp_num_fields = gravity_csds_writer_populate_mask_data(tmp);
   /* Set the particle type */
   for (int i = 0; i < tmp_num_fields; i++) {
     tmp[i].type = mask_type_dark_matter;
@@ -941,7 +941,7 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
   }
 
   /* Check that we have enough available flags. */
-  if (mask >= 8 * logger_mask_size) {
+  if (mask >= 8 * csds_mask_size) {
     error(
         "Not enough available flags for all the fields. "
         "Please reduce the number of output fields.");
@@ -949,104 +949,104 @@ void logger_init_masks(struct logger_writer *log, const struct engine *e) {
 
   /* Save the data */
   size_t size_list = sizeof(struct mask_data) * num_fields;
-  log->logger_mask_data = (struct mask_data *)malloc(size_list);
-  memcpy(log->logger_mask_data, list, size_list);
+  log->csds_mask_data = (struct mask_data *)malloc(size_list);
+  memcpy(log->csds_mask_data, list, size_list);
 
   /* Update the pointers */
   if (log->mask_data_pointers.hydro != NULL) {
     log->mask_data_pointers.hydro =
-        log->logger_mask_data + (log->mask_data_pointers.hydro - list);
+        log->csds_mask_data + (log->mask_data_pointers.hydro - list);
   }
   if (log->mask_data_pointers.chemistry_part != NULL) {
     log->mask_data_pointers.chemistry_part =
-        log->logger_mask_data + (log->mask_data_pointers.chemistry_part - list);
+        log->csds_mask_data + (log->mask_data_pointers.chemistry_part - list);
   }
   if (log->mask_data_pointers.stars != NULL) {
     log->mask_data_pointers.stars =
-        log->logger_mask_data + (log->mask_data_pointers.stars - list);
+        log->csds_mask_data + (log->mask_data_pointers.stars - list);
   }
   if (log->mask_data_pointers.chemistry_spart != NULL) {
     log->mask_data_pointers.chemistry_spart =
-        log->logger_mask_data +
+        log->csds_mask_data +
         (log->mask_data_pointers.chemistry_spart - list);
   }
   if (log->mask_data_pointers.star_formation != NULL) {
     log->mask_data_pointers.star_formation =
-        log->logger_mask_data + (log->mask_data_pointers.star_formation - list);
+        log->csds_mask_data + (log->mask_data_pointers.star_formation - list);
   }
   if (log->mask_data_pointers.gravity != NULL) {
     log->mask_data_pointers.gravity =
-        log->logger_mask_data + (log->mask_data_pointers.gravity - list);
+        log->csds_mask_data + (log->mask_data_pointers.gravity - list);
   }
 
   /* Compute the maximal size of the records. */
 
   /* Hydro */
   log->max_size_record_part = 0;
-  for (int i = 0; i < hydro_logger_field_count; i++) {
+  for (int i = 0; i < hydro_csds_field_count; i++) {
     log->max_size_record_part += log->mask_data_pointers.hydro[i].size;
   }
-  for (int i = 0; i < chemistry_logger_field_part_count; i++) {
+  for (int i = 0; i < chemistry_csds_field_part_count; i++) {
     log->max_size_record_part += log->mask_data_pointers.chemistry_part[i].size;
   }
 
   /* Gravity */
   log->max_size_record_gpart = 0;
-  for (int i = 0; i < gravity_logger_field_count; i++) {
+  for (int i = 0; i < gravity_csds_field_count; i++) {
     log->max_size_record_gpart += log->mask_data_pointers.gravity[i].size;
   }
 
   /* Stars */
   log->max_size_record_spart = 0;
-  for (int i = 0; i < stars_logger_field_count; i++) {
+  for (int i = 0; i < stars_csds_field_count; i++) {
     log->max_size_record_spart += log->mask_data_pointers.stars[i].size;
   }
-  for (int i = 0; i < chemistry_logger_field_spart_count; i++) {
+  for (int i = 0; i < chemistry_csds_field_spart_count; i++) {
     log->max_size_record_spart +=
         log->mask_data_pointers.chemistry_spart[i].size;
   }
-  for (int i = 0; i < star_formation_logger_field_count; i++) {
+  for (int i = 0; i < star_formation_csds_field_count; i++) {
     log->max_size_record_spart +=
         log->mask_data_pointers.star_formation[i].size;
   }
 
   /* Set the counter */
-  log->logger_count_mask = num_fields;
+  log->csds_count_mask = num_fields;
 
 #ifdef SWIFT_DEBUG_CHECKS
   if (e->nodeID == 0) {
-    message("The logger contains the following masks:");
-    for (int i = 0; i < log->logger_count_mask; i++) {
-      message("%20s:\t mask=%03u\t size=%i", log->logger_mask_data[i].name,
-              log->logger_mask_data[i].mask, log->logger_mask_data[i].size);
+    message("The CSDS contains the following masks:");
+    for (int i = 0; i < log->csds_count_mask; i++) {
+      message("%20s:\t mask=%03u\t size=%i", log->csds_mask_data[i].name,
+              log->csds_mask_data[i].mask, log->csds_mask_data[i].size);
     }
   }
 #endif
 }
 
 /**
- * @brief intialize the logger structure
+ * @brief intialize the csds structure
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  * @param e The #engine.
  * @param params The #swift_params
  */
-void logger_init(struct logger_writer *log, const struct engine *e,
+void csds_init(struct csds_writer *log, const struct engine *e,
                  struct swift_params *params) {
   /* read parameters. */
-  log->delta_step = parser_get_param_int(params, "Logger:delta_step");
+  log->delta_step = parser_get_param_int(params, "CSDS:delta_step");
   size_t buffer_size =
-      parser_get_opt_param_float(params, "Logger:initial_buffer_size", 0.5) *
+      parser_get_opt_param_float(params, "CSDS:initial_buffer_size", 0.5) *
       1e9;
   log->buffer_scale =
-      parser_get_opt_param_float(params, "Logger:buffer_scale", 10);
-  parser_get_param_string(params, "Logger:basename", log->base_name);
+      parser_get_opt_param_float(params, "CSDS:buffer_scale", 10);
+  parser_get_param_string(params, "CSDS:basename", log->base_name);
 
   log->index.mem_frac =
-      parser_get_opt_param_float(params, "Logger:index_mem_frac", 0.05);
+      parser_get_opt_param_float(params, "CSDS:index_mem_frac", 0.05);
 
-  /* Initialize the logger_mask_data */
-  logger_init_masks(log, e);
+  /* Initialize the csds_mask_data */
+  csds_init_masks(log, e);
 
   /* set initial value of parameters. */
   log->timestamp_offset = 0;
@@ -1054,67 +1054,67 @@ void logger_init(struct logger_writer *log, const struct engine *e,
   log->index_file_number = 0;
 
   /* generate dump filename. */
-  char logger_name_file[PARSER_MAX_LINE_SIZE];
-  logger_get_dump_name(log, logger_name_file);
+  char csds_name_file[PARSER_MAX_LINE_SIZE];
+  csds_get_dump_name(log, csds_name_file);
 
   /* Compute max size for a particle record. */
-  int max_size = logger_offset_size + logger_mask_size;
+  int max_size = csds_offset_size + csds_mask_size;
 
   /* Loop over all fields except timestamp. */
-  for (int i = 0; i < log->logger_count_mask; i++) {
+  for (int i = 0; i < log->csds_count_mask; i++) {
     /* Skip the timestamp */
-    if (i == logger_index_timestamp) continue;
+    if (i == csds_index_timestamp) continue;
 
-    max_size += log->logger_mask_data[i].size;
+    max_size += log->csds_mask_data[i].size;
   }
   log->max_record_size = max_size;
 
   /* init dump. */
-  dump_init(&log->dump, logger_name_file, buffer_size);
+  dump_init(&log->dump, csds_name_file, buffer_size);
 
   /* Read the maximal size of the history. */
   const float max_memory_size =
-      parser_get_opt_param_float(params, "Logger:maximal_memory_size", 1.);
+      parser_get_opt_param_float(params, "CSDS:maximal_memory_size", 1.);
   log->maximal_size_history =
-      1e9 * max_memory_size / sizeof(struct logger_index_data);
+      1e9 * max_memory_size / sizeof(struct csds_index_data);
 
   if (e->nodeID == 0) {
-    message("Maximal memory size for the logger history: %g GB",
+    message("Maximal memory size for the CSDS history: %g GB",
             max_memory_size);
   }
 
   /* initialize the history */
   for (int i = 0; i < swift_type_count; i++) {
-    logger_history_init(&log->history_removed[i]);
-    logger_history_init(&log->history_new[i]);
+    csds_history_init(&log->history_removed[i]);
+    csds_history_init(&log->history_new[i]);
   }
 }
 
 /**
  * @brief Close dump file and desallocate memory
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  */
-void logger_free(struct logger_writer *log) {
+void csds_free(struct csds_writer *log) {
   dump_close(&log->dump);
 
-  free(log->logger_mask_data);
-  log->logger_mask_data = NULL;
-  log->logger_count_mask = 0;
+  free(log->csds_mask_data);
+  log->csds_mask_data = NULL;
+  log->csds_count_mask = 0;
 
   for (int i = 0; i < swift_type_count; i++) {
-    logger_history_free(&log->history_new[i]);
-    logger_history_free(&log->history_removed[i]);
+    csds_history_free(&log->history_new[i]);
+    csds_history_free(&log->history_removed[i]);
   }
 }
 
 /**
- * @brief Write a file header to a logger file
+ * @brief Write a file header to a csds file
  *
- * @param log The #logger_writer
+ * @param log The #csds_writer
  *
  */
-void logger_write_file_header(struct logger_writer *log) {
+void csds_write_file_header(struct csds_writer *log) {
 
   /* get required variables. */
   struct dump *dump = &log->dump;
@@ -1123,31 +1123,31 @@ void logger_write_file_header(struct logger_writer *log) {
 
   if (file_offset != 0)
     error(
-        "The logger is not empty."
-        "This function should be called before writing anything in the logger");
+        "The CSDS is not empty."
+        "This function should be called before writing anything in the CSDS");
 
   /* Write format information. */
-  logger_write_data(dump, &file_offset, logger_format_size,
-                    &logger_file_format);
+  csds_write_data(dump, &file_offset, csds_format_size,
+                    &csds_file_format);
 
   /* Write the major version number. */
-  int major = logger_major_version;
-  logger_write_data(dump, &file_offset, sizeof(int), &major);
+  int major = csds_major_version;
+  csds_write_data(dump, &file_offset, sizeof(int), &major);
 
   /* Write the minor version number. */
-  int minor = logger_minor_version;
-  logger_write_data(dump, &file_offset, sizeof(int), &minor);
+  int minor = csds_minor_version;
+  csds_write_data(dump, &file_offset, sizeof(int), &minor);
 
   /* write offset direction. */
   const int reversed = 0;
-  logger_write_data(dump, &file_offset, sizeof(int), &reversed);
+  csds_write_data(dump, &file_offset, sizeof(int), &reversed);
 
   /* placeholder to write the offset of the first log here. */
-  char *skip_header = dump_get(dump, logger_offset_size, &file_offset);
+  char *skip_header = dump_get(dump, csds_offset_size, &file_offset);
 
   /* write number of bytes used for names. */
-  const unsigned int label_size = logger_label_size;
-  logger_write_data(dump, &file_offset, sizeof(unsigned int), &label_size);
+  const unsigned int label_size = csds_label_size;
+  csds_write_data(dump, &file_offset, sizeof(unsigned int), &label_size);
 
   /* placeholder to write the number of unique masks. */
   char *skip_unique_masks = dump_get(dump, sizeof(unsigned int), &file_offset);
@@ -1155,11 +1155,11 @@ void logger_write_file_header(struct logger_writer *log) {
   /* write masks. */
   // loop over all mask type.
   unsigned int unique_mask = 0;
-  for (int i = 0; i < log->logger_count_mask; i++) {
+  for (int i = 0; i < log->csds_count_mask; i++) {
     /* Check if the mask was not already written */
     int is_written = 0;
     for (int j = 0; j < i; j++) {
-      if (log->logger_mask_data[i].mask == log->logger_mask_data[j].mask) {
+      if (log->csds_mask_data[i].mask == log->csds_mask_data[j].mask) {
         is_written = 1;
         break;
       }
@@ -1172,17 +1172,17 @@ void logger_write_file_header(struct logger_writer *log) {
     unique_mask += 1;
 
     // mask name.
-    logger_write_data(dump, &file_offset, logger_label_size,
-                      &log->logger_mask_data[i].name);
+    csds_write_data(dump, &file_offset, csds_label_size,
+                      &log->csds_mask_data[i].name);
 
     // mask size.
-    logger_write_data(dump, &file_offset, sizeof(unsigned int),
-                      &log->logger_mask_data[i].size);
+    csds_write_data(dump, &file_offset, sizeof(unsigned int),
+                      &log->csds_mask_data[i].size);
   }
   memcpy(skip_unique_masks, &unique_mask, sizeof(unsigned int));
 
   /* last step: write first offset. */
-  memcpy(skip_header, &file_offset, logger_offset_size);
+  memcpy(skip_header, &file_offset, csds_offset_size);
 }
 
 /**
@@ -1195,44 +1195,44 @@ void logger_write_file_header(struct logger_writer *log) {
  *
  * @return Number of bytes read
  */
-__attribute__((always_inline)) INLINE static int logger_read_record_header(
+__attribute__((always_inline)) INLINE static int csds_read_record_header(
     const char *buff, unsigned int *mask, size_t *offset, size_t cur_offset) {
-  memcpy(mask, buff, logger_mask_size);
-  buff += logger_mask_size;
+  memcpy(mask, buff, csds_mask_size);
+  buff += csds_mask_size;
 
   *offset = 0;
-  memcpy(offset, buff, logger_offset_size);
+  memcpy(offset, buff, csds_offset_size);
   *offset = cur_offset - *offset;
 
-  return logger_mask_size + logger_offset_size;
+  return csds_mask_size + csds_offset_size;
 }
 
 /**
- * @brief Read a logger message and store the data in a #part.
+ * @brief Read a csds message and store the data in a #part.
  *
  * @param p The #part in which to store the values.
- * @param offset Pointer to the offset of the logger message in the buffer,
+ * @param offset Pointer to the offset of the csds message in the buffer,
  *        will be overwritten with the offset of the previous message.
- * @param buff Pointer to the start of an encoded logger message.
+ * @param buff Pointer to the start of an encoded csds message.
  *
  * @return The mask containing the values read.
  */
-int logger_read_part(const struct logger_writer *log, struct part *p,
+int csds_read_part(const struct csds_writer *log, struct part *p,
                      size_t *offset, const char *buff) {
 
   /* Jump to the offset. */
   buff = &buff[*offset];
 
-  /* Start by reading the logger mask for this entry. */
+  /* Start by reading the csds mask for this entry. */
   const size_t cur_offset = *offset;
   unsigned int mask = 0;
-  buff += logger_read_record_header(buff, &mask, offset, cur_offset);
+  buff += csds_read_record_header(buff, &mask, offset, cur_offset);
 
-  for (int i = 0; i < log->logger_count_mask; i++) {
-    if ((mask & log->logger_mask_data[i].mask) &&
-        (log->logger_mask_data[i].type == mask_type_gas)) {
+  for (int i = 0; i < log->csds_count_mask; i++) {
+    if ((mask & log->csds_mask_data[i].mask) &&
+        (log->csds_mask_data[i].type == mask_type_gas)) {
 
-      const char *name = log->logger_mask_data[i].name;
+      const char *name = log->csds_mask_data[i].name;
       if (strcmp("Coordinates", name) == 0) {
         memcpy(p->x, buff, 3 * sizeof(double));
         buff += 3 * sizeof(double);
@@ -1272,31 +1272,31 @@ int logger_read_part(const struct logger_writer *log, struct part *p,
 }
 
 /**
- * @brief Read a logger message and store the data in a #gpart.
+ * @brief Read a csds message and store the data in a #gpart.
  *
  * @param p The #gpart in which to store the values.
- * @param offset Pointer to the offset of the logger message in the buffer,
+ * @param offset Pointer to the offset of the csds message in the buffer,
  *        will be overwritten with the offset of the previous message.
- * @param buff Pointer to the start of an encoded logger message.
+ * @param buff Pointer to the start of an encoded csds message.
  *
  * @return The mask containing the values read.
  */
-int logger_read_gpart(const struct logger_writer *log, struct gpart *p,
+int csds_read_gpart(const struct csds_writer *log, struct gpart *p,
                       size_t *offset, const char *buff) {
 
   /* Jump to the offset. */
   buff = &buff[*offset];
 
-  /* Start by reading the logger mask for this entry. */
+  /* Start by reading the csds mask for this entry. */
   const size_t cur_offset = *offset;
   unsigned int mask = 0;
-  buff += logger_read_record_header(buff, &mask, offset, cur_offset);
+  buff += csds_read_record_header(buff, &mask, offset, cur_offset);
 
-  for (int i = 0; i < log->logger_count_mask; i++) {
-    if ((mask & log->logger_mask_data[i].mask) &&
-        (log->logger_mask_data[i].type == mask_type_dark_matter)) {
+  for (int i = 0; i < log->csds_count_mask; i++) {
+    if ((mask & log->csds_mask_data[i].mask) &&
+        (log->csds_mask_data[i].type == mask_type_dark_matter)) {
 
-      const char *name = log->logger_mask_data[i].name;
+      const char *name = log->csds_mask_data[i].name;
       if (strcmp("Coordinates", name) == 0) {
         memcpy(p->x, buff, 3 * sizeof(double));
         buff += 3 * sizeof(double);
@@ -1323,34 +1323,34 @@ int logger_read_gpart(const struct logger_writer *log, struct gpart *p,
 }
 
 /**
- * @brief Read a logger message for a timestamp.
+ * @brief Read a csds message for a timestamp.
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param t The timestamp in which to store the value.
  * @param time The time in which to store the value.
- * @param offset Pointer to the offset of the logger message in the buffer,
+ * @param offset Pointer to the offset of the csds message in the buffer,
  *        will be overwritten with the offset of the previous message.
- * @param buff Pointer to the start of an encoded logger message.
+ * @param buff Pointer to the start of an encoded csds message.
  *
  * @return The mask containing the values read.
  */
-int logger_read_timestamp(const struct logger_writer *log, integertime_t *t,
+int csds_read_timestamp(const struct csds_writer *log, integertime_t *t,
                           double *time, size_t *offset, const char *buff) {
 
   /* Jump to the offset. */
   buff = &buff[*offset];
 
-  /* Start by reading the logger mask for this entry. */
+  /* Start by reading the csds mask for this entry. */
   const size_t cur_offset = *offset;
   unsigned int mask = 0;
-  buff += logger_read_record_header(buff, &mask, offset, cur_offset);
+  buff += csds_read_record_header(buff, &mask, offset, cur_offset);
 
   /* We are only interested in timestamps. */
-  if (!(mask & log->logger_mask_data[logger_index_timestamp].mask))
+  if (!(mask & log->csds_mask_data[csds_index_timestamp].mask))
     error("Trying to read timestamp from a particle.");
 
   /* Make sure we don't have extra fields. */
-  if (mask != log->logger_mask_data[logger_index_timestamp].mask)
+  if (mask != log->csds_mask_data[csds_index_timestamp].mask)
     error("Timestamp message contains extra fields.");
 
   /* Copy the timestamp value from the buffer. */
@@ -1370,75 +1370,75 @@ int logger_read_timestamp(const struct logger_writer *log, integertime_t *t,
  * @param log the struct
  * @param stream the file stream
  */
-void logger_struct_dump(const struct logger_writer *log, FILE *stream) {
-  restart_write_blocks((void *)log, sizeof(struct logger_writer), 1, stream,
-                       "logger", "logger");
+void csds_struct_dump(const struct csds_writer *log, FILE *stream) {
+  restart_write_blocks((void *)log, sizeof(struct csds_writer), 1, stream,
+                       "csds", "csds");
 
   /* Write the masks */
-  restart_write_blocks((void *)log->logger_mask_data, sizeof(struct mask_data),
-                       log->logger_count_mask, stream, "logger_masks",
-                       "logger_masks");
+  restart_write_blocks((void *)log->csds_mask_data, sizeof(struct mask_data),
+                       log->csds_count_mask, stream, "csds_masks",
+                       "csds_masks");
 
-  /* Dump the logger mpi history */
+  /* Dump the csds mpi history */
   for (int i = 0; i < swift_type_count; i++) {
-    logger_history_dump(&log->history_new[i], stream);
-    logger_history_dump(&log->history_removed[i], stream);
+    csds_history_dump(&log->history_new[i], stream);
+    csds_history_dump(&log->history_removed[i], stream);
   }
 }
 
 /**
- * @brief Restore a logger struct from the given FILE as a stream of
+ * @brief Restore a csds struct from the given FILE as a stream of
  * bytes.
  *
- * @param logger the struct
+ * @param csds the struct
  * @param stream the file stream
  */
-void logger_struct_restore(struct logger_writer *log, FILE *stream) {
+void csds_struct_restore(struct csds_writer *log, FILE *stream) {
   /* Read the block */
-  restart_read_blocks((void *)log, sizeof(struct logger_writer), 1, stream,
-                      NULL, "logger");
+  restart_read_blocks((void *)log, sizeof(struct csds_writer), 1, stream,
+                      NULL, "csds");
 
   /* Read the masks */
-  const struct mask_data *old_logger_mask_data = log->logger_mask_data;
-  log->logger_mask_data = (struct mask_data *)malloc(sizeof(struct mask_data) *
-                                                     log->logger_count_mask);
+  const struct mask_data *old_csds_mask_data = log->csds_mask_data;
+  log->csds_mask_data = (struct mask_data *)malloc(sizeof(struct mask_data) *
+                                                     log->csds_count_mask);
 
-  restart_read_blocks((void *)log->logger_mask_data, sizeof(struct mask_data),
-                      log->logger_count_mask, stream, NULL, "logger_masks");
+  restart_read_blocks((void *)log->csds_mask_data, sizeof(struct mask_data),
+                      log->csds_count_mask, stream, NULL, "csds_masks");
 
   /* Restore the pointers */
   log->mask_data_pointers.hydro =
-      log->logger_mask_data +
-      (log->mask_data_pointers.hydro - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.hydro - old_csds_mask_data);
   log->mask_data_pointers.chemistry_part =
-      log->logger_mask_data +
-      (log->mask_data_pointers.chemistry_part - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.chemistry_part - old_csds_mask_data);
   log->mask_data_pointers.gravity =
-      log->logger_mask_data +
-      (log->mask_data_pointers.gravity - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.gravity - old_csds_mask_data);
   log->mask_data_pointers.stars =
-      log->logger_mask_data +
-      (log->mask_data_pointers.stars - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.stars - old_csds_mask_data);
   log->mask_data_pointers.chemistry_spart =
-      log->logger_mask_data +
-      (log->mask_data_pointers.chemistry_spart - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.chemistry_spart - old_csds_mask_data);
   log->mask_data_pointers.star_formation =
-      log->logger_mask_data +
-      (log->mask_data_pointers.star_formation - old_logger_mask_data);
+      log->csds_mask_data +
+      (log->mask_data_pointers.star_formation - old_csds_mask_data);
 
   /* Restart the dump file. */
-  char logger_name_file[PARSER_MAX_LINE_SIZE];
-  logger_get_dump_name(log, logger_name_file);
+  char csds_name_file[PARSER_MAX_LINE_SIZE];
+  csds_get_dump_name(log, csds_name_file);
 
-  dump_restart(&log->dump, logger_name_file);
+  dump_restart(&log->dump, csds_name_file);
 
-  /* Restore the logger mpi history */
+  /* Restore the csds mpi history */
   for (int i = 0; i < swift_type_count; i++) {
-    logger_history_restore(&log->history_new[i], stream);
-    logger_history_restore(&log->history_removed[i], stream);
+    csds_history_restore(&log->history_new[i], stream);
+    csds_history_restore(&log->history_removed[i], stream);
   }
 }
 
-#endif /* WITH_LOGGER */
+#endif /* WITH_CSDS */
 
 #endif /* HAVE_POSIX_FALLOCATE */
diff --git a/src/logger.h b/src/csds.h
similarity index 64%
rename from src/logger.h
rename to src/csds.h
index 77516f348cbb2acac41cb6f4014437669970aab1..99a57a95e74170ff9e294796a84758988abac2a7 100644
--- a/src/logger.h
+++ b/src/csds.h
@@ -17,12 +17,12 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_LOGGER_H
-#define SWIFT_LOGGER_H
+#ifndef SWIFT_CSDS_H
+#define SWIFT_CSDS_H
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /* Includes. */
 #include "align.h"
@@ -30,7 +30,7 @@
 #include "dump.h"
 #include "error.h"
 #include "inline.h"
-#include "logger_history.h"
+#include "csds_history.h"
 #include "timeline.h"
 #include "units.h"
 
@@ -40,25 +40,25 @@ struct gpart;
 struct part;
 struct engine;
 
-#define logger_major_version 1
-#define logger_minor_version 1
+#define csds_major_version 1
+#define csds_minor_version 2
 /* Size of the strings. */
-#define logger_string_length 200
+#define csds_string_length 200
 
 /*
  * The two following defines need to correspond to the list's order
- * in logger_init_masks.
+ * in csds_init_masks.
  */
 /* Index of the special flags in the list of masks */
-#define logger_index_special_flags 0
+#define csds_index_special_flags 0
 /* Index of the timestamp in the list of masks */
-#define logger_index_timestamp 1
+#define csds_index_timestamp 1
 
 /**
- * Logger entries contain messages representing the particle data at a given
+ * Csds entries contain messages representing the particle data at a given
  * point in time during the simulation.
  *
- * The logger messages always start with an 8-byte header structured as
+ * The csds messages always start with an 8-byte header structured as
  * follows:
  *
  *   data: [ mask |                     offset                     ]
@@ -92,25 +92,25 @@ struct engine;
  * indicated that this is the first message for the given particle/timestamp.
  */
 
-enum logger_special_flags {
-  logger_flag_none = 0,        /* No flag */
-  logger_flag_change_type = 1, /* Flag for a change of particle type */
-  logger_flag_mpi_enter, /* Flag for a particle received from another  MPI rank
+enum csds_special_flags {
+  csds_flag_none = 0,        /* No flag */
+  csds_flag_change_type = 1, /* Flag for a change of particle type */
+  csds_flag_mpi_enter, /* Flag for a particle received from another  MPI rank
                           */
-  logger_flag_mpi_exit,  /* Flag for a particle sent to another MPI rank */
-  logger_flag_delete,    /* Flag for a deleted particle */
-  logger_flag_create,    /* Flag for a created particle */
+  csds_flag_mpi_exit,  /* Flag for a particle sent to another MPI rank */
+  csds_flag_delete,    /* Flag for a deleted particle */
+  csds_flag_create,    /* Flag for a created particle */
 } __attribute__((packed));
 
 /**
- * @brief structure containing global data for the particle logger.
+ * @brief structure containing global data for the particle csds.
  */
-struct logger_writer {
+struct csds_writer {
   /* Number of particle updates between log entries. */
   short int delta_step;
 
-  /* Logger basename. */
-  char base_name[logger_string_length];
+  /* Csds basename. */
+  char base_name[csds_string_length];
 
   struct {
     /* The total memory fraction reserved for the index files. */
@@ -124,10 +124,10 @@ struct logger_writer {
   int index_file_number;
 
   /* History of the new particles since the last index file. */
-  struct logger_history history_new[swift_type_count];
+  struct csds_history history_new[swift_type_count];
 
   /* History of the particles removed since the last index file. */
-  struct logger_history history_removed[swift_type_count];
+  struct csds_history history_removed[swift_type_count];
 
   /* Maximal number of particle stored in the history. */
   size_t maximal_size_history;
@@ -136,7 +136,7 @@ struct logger_writer {
    * logfile). */
   struct dump dump;
 
-  /* timestamp offset for logger. */
+  /* timestamp offset for csds. */
   size_t timestamp_offset;
 
   /* scaling factor when buffer is too small. */
@@ -146,9 +146,9 @@ struct logger_writer {
   int max_record_size;
 
   /* Description of all the fields that can be written. */
-  struct mask_data *logger_mask_data;
+  struct mask_data *csds_mask_data;
 
-  /* Pointer to the variable logger_mask_data for each module. */
+  /* Pointer to the variable csds_mask_data for each module. */
   struct {
     /* pointer for the hydro */
     struct mask_data *hydro;
@@ -169,8 +169,8 @@ struct logger_writer {
     struct mask_data *star_formation;
   } mask_data_pointers;
 
-  /* Number of elements in logger_mask_data. */
-  int logger_count_mask;
+  /* Number of elements in csds_mask_data. */
+  int csds_count_mask;
 
   /* Maximum size for a hydro record. */
   int max_size_record_part;
@@ -184,7 +184,7 @@ struct logger_writer {
 } SWIFT_STRUCT_ALIGN;
 
 /* required structure for each particle type. */
-struct logger_part_data {
+struct csds_part_data {
   /* Number of particle updates since last output. */
   int steps_since_last_output;
 
@@ -193,50 +193,50 @@ struct logger_part_data {
 };
 
 /* Function prototypes. */
-void logger_log_all_particles(struct logger_writer *log,
+void csds_log_all_particles(struct csds_writer *log,
                               const struct engine *e);
-void logger_log_part(struct logger_writer *log, const struct part *p,
+void csds_log_part(struct csds_writer *log, const struct part *p,
                      struct xpart *xp, const struct engine *e,
                      const int log_all_fields,
-                     const enum logger_special_flags flag, const int flag_data);
-void logger_log_parts(struct logger_writer *log, const struct part *p,
+                     const enum csds_special_flags flag, const int flag_data);
+void csds_log_parts(struct csds_writer *log, const struct part *p,
                       struct xpart *xp, int count, const struct engine *e,
                       const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data);
-void logger_log_spart(struct logger_writer *log, struct spart *p,
+void csds_log_spart(struct csds_writer *log, struct spart *p,
                       const struct engine *e, const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data);
-void logger_log_sparts(struct logger_writer *log, struct spart *sp, int count,
+void csds_log_sparts(struct csds_writer *log, struct spart *sp, int count,
                        const struct engine *e, const int log_all_fields,
-                       const enum logger_special_flags flag,
+                       const enum csds_special_flags flag,
                        const int flag_data);
-void logger_log_gpart(struct logger_writer *log, struct gpart *p,
+void csds_log_gpart(struct csds_writer *log, struct gpart *p,
                       const struct engine *e, const int log_all_fields,
-                      const enum logger_special_flags flag,
+                      const enum csds_special_flags flag,
                       const int flag_data);
-void logger_log_gparts(struct logger_writer *log, struct gpart *gp, int count,
+void csds_log_gparts(struct csds_writer *log, struct gpart *gp, int count,
                        const struct engine *e, const int log_all_fields,
-                       const enum logger_special_flags flag,
+                       const enum csds_special_flags flag,
                        const int flag_data);
-void logger_init(struct logger_writer *log, const struct engine *e,
+void csds_init(struct csds_writer *log, const struct engine *e,
                  struct swift_params *params);
-void logger_free(struct logger_writer *log);
-void logger_log_timestamp(struct logger_writer *log, integertime_t t,
+void csds_free(struct csds_writer *log);
+void csds_log_timestamp(struct csds_writer *log, integertime_t t,
                           double time, size_t *offset);
-void logger_ensure_size(struct logger_writer *log, size_t total_nr_parts,
+void csds_ensure_size(struct csds_writer *log, size_t total_nr_parts,
                         size_t total_nr_gparts, size_t total_nr_sparts);
-void logger_write_file_header(struct logger_writer *log);
+void csds_write_file_header(struct csds_writer *log);
 
-int logger_read_part(const struct logger_writer *log, struct part *p,
+int csds_read_part(const struct csds_writer *log, struct part *p,
                      size_t *offset, const char *buff);
-int logger_read_gpart(const struct logger_writer *log, struct gpart *p,
+int csds_read_gpart(const struct csds_writer *log, struct gpart *p,
                       size_t *offset, const char *buff);
-int logger_read_timestamp(const struct logger_writer *log, integertime_t *t,
+int csds_read_timestamp(const struct csds_writer *log, integertime_t *t,
                           double *time, size_t *offset, const char *buff);
-void logger_struct_dump(const struct logger_writer *log, FILE *stream);
-void logger_struct_restore(struct logger_writer *log, FILE *stream);
+void csds_struct_dump(const struct csds_writer *log, FILE *stream);
+void csds_struct_restore(struct csds_writer *log, FILE *stream);
 
 /**
  * @brief Generate the data for the special flags.
@@ -244,17 +244,17 @@ void logger_struct_restore(struct logger_writer *log, FILE *stream);
  * @param flag The special flag to use.
  * @param flag_data The data to write in the record.
  */
-INLINE static uint32_t logger_pack_flags_and_data(
-    enum logger_special_flags flag, int flag_data) {
+INLINE static uint32_t csds_pack_flags_and_data(
+    enum csds_special_flags flag, int flag_data) {
 #ifdef SWIFT_DEBUG_CHECKS
   if (flag & 0xFFFFFF00) {
     error(
-        "The special flag in the particle logger cannot be larger than 1 "
+        "The special flag in the particle CSDS cannot be larger than 1 "
         "byte.");
   }
   if (flag_data & ~0xFFFFFF) {
     error(
-        "The data for the special flag in the particle logger cannot be larger "
+        "The data for the special flag in the particle CSDS cannot be larger "
         "than 3 bytes.");
   }
 #endif
@@ -262,30 +262,30 @@ INLINE static uint32_t logger_pack_flags_and_data(
 }
 
 /**
- * @brief Initialize the logger data for a particle.
+ * @brief Initialize the csds data for a particle.
  *
- * @param logger The #logger_part_data.
+ * @param csds The #csds_part_data.
  */
-INLINE static void logger_part_data_init(struct logger_part_data *logger) {
-  logger->last_offset = 0;
-  logger->steps_since_last_output = INT_MAX;
+INLINE static void csds_part_data_init(struct csds_part_data *csds) {
+  csds->last_offset = 0;
+  csds->steps_since_last_output = INT_MAX;
 }
 
 /**
  * @brief Should this particle write its data now ?
  *
- * @param logger_data The #logger_part_data of a particle.
- * @param log The #logger_writer.
+ * @param csds_data The #csds_part_data of a particle.
+ * @param log The #csds_writer.
  *
  * @return 1 if the particle should be writen, 0 otherwise.
  */
-__attribute__((always_inline)) INLINE static int logger_should_write(
-    const struct logger_part_data *logger_data,
-    const struct logger_writer *log) {
+__attribute__((always_inline)) INLINE static int csds_should_write(
+    const struct csds_part_data *csds_data,
+    const struct csds_writer *log) {
 
-  return (logger_data->steps_since_last_output > log->delta_step);
+  return (csds_data->steps_since_last_output > log->delta_step);
 }
 
-#endif /* WITH_LOGGER */
+#endif /* WITH_CSDS */
 
-#endif /* SWIFT_LOGGER_H */
+#endif /* SWIFT_CSDS_H */
diff --git a/src/logger_history.c b/src/csds_history.c
similarity index 58%
rename from src/logger_history.c
rename to src/csds_history.c
index f0034f8dd1cae0a3bcbed61f7334661354b56d69..0fafd3b90cafcec0b80eeb914ad474c5ae243216 100644
--- a/src/logger_history.c
+++ b/src/csds_history.c
@@ -18,59 +18,59 @@
  ******************************************************************************/
 
 /* Include header */
-#include "logger_history.h"
+#include "csds_history.h"
 
 /* Standard includes */
 #include <string.h>
 
 /* Local include */
-#include "logger_io.h"
+#include "csds_io.h"
 #include "part.h"
 
-#if defined(WITH_LOGGER)
+#if defined(WITH_CSDS)
 
-#define LOGGER_HISTORY_INIT_SIZE 1024
+#define CSDS_HISTORY_INIT_SIZE 1024
 
 /**
  * @brief Initialize the structure for the first time.
  *
- * @param hist The #logger_history.
+ * @param hist The #csds_history.
  */
-void logger_history_init(struct logger_history *hist) {
+void csds_history_init(struct csds_history *hist) {
 
   /* Set the counters to their initial value */
   hist->size = 0;
-  hist->capacity = LOGGER_HISTORY_INIT_SIZE;
+  hist->capacity = CSDS_HISTORY_INIT_SIZE;
   lock_init(&hist->lock);
 
-  hist->data = (struct logger_index_data *)swift_malloc(
-      "logger_history",
-      sizeof(struct logger_index_data) * LOGGER_HISTORY_INIT_SIZE);
+  hist->data = (struct csds_index_data *)swift_malloc(
+      "csds_history",
+      sizeof(struct csds_index_data) * CSDS_HISTORY_INIT_SIZE);
   if (hist->data == NULL) {
-    error("Failed to allocate memory for the logger_history.");
+    error("Failed to allocate memory for the csds_history.");
   }
 }
 
 /**
  * @brief Reset the structure (for example just after a dump).
  *
- * @param hist The #logger_history.
+ * @param hist The #csds_history.
  * @param params The #swift_params.
  * @param already_allocated Are the data already allocated? (Need to free it?)
  */
-void logger_history_reset(struct logger_history *hist) {
+void csds_history_reset(struct csds_history *hist) {
 
-  swift_free("logger_history", hist->data);
+  swift_free("csds_history", hist->data);
 
-  logger_history_init(hist);
+  csds_history_init(hist);
 }
 
 /**
  * @brief Free the structure (e.g. just before exiting).
  *
- * @param hist The #logger_history.
+ * @param hist The #csds_history.
  */
-void logger_history_free(struct logger_history *hist) {
+void csds_history_free(struct csds_history *hist) {
   /* Set the counters to 0 */
   hist->size = 0;
   hist->capacity = 0;
@@ -78,18 +78,18 @@ void logger_history_free(struct logger_history *hist) {
 
   /* Free the memory */
   if (hist->data != NULL) {
-    swift_free("logger_history", hist->data);
+    swift_free("csds_history", hist->data);
     hist->data = NULL;
   }
 }
 
 /**
- * @brief Log a the particle information into the #logger_history.
+ * @brief Log a the particle information into the #csds_history.
  *
- * @param hist The #logger_history.
+ * @param hist The #csds_history.
  * @param data The data from the particle.
  */
-void logger_history_log(struct logger_history *hist, const long long id,
+void csds_history_log(struct csds_history *hist, const long long id,
                         const uint64_t last_offset) {
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -99,7 +99,7 @@ void logger_history_log(struct logger_history *hist, const long long id,
         "Are you trying to log a gpart linked to another type of particles?");
   }
 #endif
-  const struct logger_index_data data = {id, last_offset};
+  const struct csds_index_data data = {id, last_offset};
 
   /* Lock the history */
   lock_lock(&hist->lock);
@@ -107,19 +107,19 @@ void logger_history_log(struct logger_history *hist, const long long id,
   /* Check if enough space is left */
   if (hist->size == hist->capacity) {
     /* Compute the previous amount of memory */
-    const size_t memsize = sizeof(struct logger_index_data) * hist->capacity;
+    const size_t memsize = sizeof(struct csds_index_data) * hist->capacity;
 
     /* Increase the capacity of the array */
     hist->capacity *= 2;
 
     /* Allocate the new array and copy the content of the previous one */
-    struct logger_index_data *tmp =
-        (struct logger_index_data *)swift_malloc("logger_history", 2 * memsize);
+    struct csds_index_data *tmp =
+        (struct csds_index_data *)swift_malloc("csds_history", 2 * memsize);
 
     memcpy(tmp, hist->data, memsize);
 
     /* Free the previous array and switch the pointers */
-    swift_free("logger_history", hist->data);
+    swift_free("csds_history", hist->data);
     hist->data = tmp;
   }
 
@@ -131,17 +131,17 @@ void logger_history_log(struct logger_history *hist, const long long id,
 
   /* Unlock the history. */
   if (lock_unlock(&hist->lock) != 0)
-    error("Impossible to unlock logger history.");
+    error("Impossible to unlock CSDS history.");
 }
 
 /**
  * @brief Write the history into an index file.
  *
- * @param hist The #logger_history.
+ * @param hist The #csds_history.
  * @param e The #engine.
  * @param f The file where to write the history.
  */
-void logger_history_write(struct logger_history *hist, struct engine *e,
+void csds_history_write(struct csds_history *hist, struct engine *e,
                           FILE *f) {
   /* Generate the structures for writing the index file */
   const int num_fields = 2;
@@ -154,32 +154,32 @@ void logger_history_write(struct logger_history *hist, struct engine *e,
 
   write_index_array(e, f, list, num_fields, hist->size);
 
-  /* Reset the logger history */
-  logger_history_reset(hist);
+  /* Reset the csds history */
+  csds_history_reset(hist);
 }
 
-void logger_history_dump(const struct logger_history *hist, FILE *stream) {
-  restart_write_blocks((void *)hist, sizeof(struct logger_history), 1, stream,
-                       "logger_history", "logger_history");
+void csds_history_dump(const struct csds_history *hist, FILE *stream) {
+  restart_write_blocks((void *)hist, sizeof(struct csds_history), 1, stream,
+                       "csds_history", "csds_history");
 
   if (hist->size != 0)
-    restart_write_blocks((void *)hist->data, sizeof(struct logger_index_data),
-                         hist->size, stream, "logger_history_data",
-                         "logger_history_data");
+    restart_write_blocks((void *)hist->data, sizeof(struct csds_index_data),
+                         hist->size, stream, "csds_history_data",
+                         "csds_history_data");
 }
 
-void logger_history_restore(struct logger_history *hist, FILE *stream) {
-  restart_read_blocks((void *)hist, sizeof(struct logger_history), 1, stream,
-                      NULL, "logger_history");
+void csds_history_restore(struct csds_history *hist, FILE *stream) {
+  restart_read_blocks((void *)hist, sizeof(struct csds_history), 1, stream,
+                      NULL, "csds_history");
 
-  hist->data = malloc(hist->capacity * sizeof(struct logger_index_data));
+  hist->data = malloc(hist->capacity * sizeof(struct csds_index_data));
   if (hist->data == NULL) {
-    error("Failed to allocate array for logger history");
+    error("Failed to allocate array for CSDS history");
   }
 
   if (hist->size != 0)
-    restart_read_blocks((void *)hist->data, sizeof(struct logger_index_data),
-                        hist->size, stream, NULL, "logger_history_data");
+    restart_read_blocks((void *)hist->data, sizeof(struct csds_index_data),
+                        hist->size, stream, NULL, "csds_history_data");
 }
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/logger_history.h b/src/csds_history.h
similarity index 72%
rename from src/logger_history.h
rename to src/csds_history.h
index 43ab36583975b6828cc496542a7b242aa9fcafea..a42527a7b160995be45dc0883dfeaa46804cb955 100644
--- a/src/logger_history.h
+++ b/src/csds_history.h
@@ -16,8 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_LOGGER_HISTORY_H
-#define SWIFT_LOGGER_HISTORY_H
+#ifndef SWIFT_CSDS_HISTORY_H
+#define SWIFT_CSDS_HISTORY_H
 
 #include "../config.h"
 
@@ -29,7 +29,7 @@
 #include "lock.h"
 #include "part_type.h"
 
-#if defined(WITH_LOGGER)
+#if defined(WITH_CSDS)
 
 /* Forward declaration */
 struct xpart;
@@ -44,7 +44,7 @@ struct swift_params;
  * @brief Contains the information concerning
  * a particle for the index files.
  */
-struct logger_index_data {
+struct csds_index_data {
   /* Id of the particle. */
   int64_t id;
 
@@ -56,7 +56,7 @@ struct logger_index_data {
  * @brief Structure dealing with the changes in the number
  * of particles (e.g. creation, deletion, transformation).
  */
-struct logger_history {
+struct csds_history {
 
   /* Number of elements currently stored */
   uint64_t size;
@@ -65,22 +65,22 @@ struct logger_history {
   size_t capacity;
 
   /* Buffer containing the particles */
-  struct logger_index_data *data;
+  struct csds_index_data *data;
 
   /*! Spin lock for logging events. */
   swift_lock_type lock;
 };
 
-void logger_history_init(struct logger_history *hist);
-void logger_history_reset(struct logger_history *hist);
-void logger_history_free(struct logger_history *hist);
-void logger_history_log(struct logger_history *hist, const long long id,
+void csds_history_init(struct csds_history *hist);
+void csds_history_reset(struct csds_history *hist);
+void csds_history_free(struct csds_history *hist);
+void csds_history_log(struct csds_history *hist, const long long id,
                         const uint64_t last_offset);
-void logger_history_write(struct logger_history *hist, struct engine *e,
+void csds_history_write(struct csds_history *hist, struct engine *e,
                           FILE *f);
 
-void logger_history_dump(const struct logger_history *hist, FILE *stream);
-void logger_history_restore(struct logger_history *hist, FILE *stream);
+void csds_history_dump(const struct csds_history *hist, FILE *stream);
+void csds_history_restore(struct csds_history *hist, FILE *stream);
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_LOGGER_HISTORY_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_CSDS_HISTORY_H
diff --git a/src/logger_io.c b/src/csds_io.c
similarity index 95%
rename from src/logger_io.c
rename to src/csds_io.c
index 5f68be24dd605b5c3fd3a4c1a1256e5a91e18414..aed872c477e953bf4d0330cb67abb692ce0d128d 100644
--- a/src/logger_io.c
+++ b/src/csds_io.c
@@ -21,7 +21,7 @@
 /* Config parameters. */
 #include "../config.h"
 
-#if defined(WITH_LOGGER)
+#if defined(WITH_CSDS)
 
 /* Some standard headers. */
 #include "common_io.h"
@@ -37,7 +37,7 @@
 #include <unistd.h>
 
 /* This object's header. */
-#include "logger_io.h"
+#include "csds_io.h"
 
 /* Local includes. */
 #include "chemistry_io.h"
@@ -132,7 +132,7 @@ void write_index_array(const struct engine* e, FILE* f, struct io_props* props,
  * @param e The #engine.
  * @param f The opened file to use.
  */
-void logger_write_history(struct logger_history* history, struct engine* e,
+void csds_write_history(struct csds_history* history, struct engine* e,
                           FILE* f) {
 
   /* Write the number of particles. */
@@ -144,14 +144,14 @@ void logger_write_history(struct logger_history* history, struct engine* e,
 
   /* Write the data */
   for (int i = 0; i < swift_type_count; i++) {
-    logger_history_write(&history[i], e, f);
+    csds_history_write(&history[i], e, f);
   }
 }
 
 /**
- * @brief Writes a logger index file
+ * @brief Writes a csds index file
  *
- * @param log The #logger_writer.
+ * @param log The #csds_writer.
  * @param e The engine containing all the system.
  *
  * Creates an output file and writes the offset and id of particles
@@ -165,7 +165,7 @@ void logger_write_history(struct logger_history* history, struct engine* e,
  * Calls #error() if an error occurs.
  *
  */
-void logger_write_index_file(struct logger_writer* log, struct engine* e) {
+void csds_write_index_file(struct csds_writer* log, struct engine* e) {
 
   const int with_DM_background = e->s->with_DM_background;
 
@@ -212,7 +212,7 @@ void logger_write_index_file(struct logger_writer* log, struct engine* e) {
   /* File name */
   char fileName[FILENAME_BUFFER_SIZE];
   snprintf(fileName, FILENAME_BUFFER_SIZE, "%.100s_%04i_%04i.index",
-           e->logger->base_name, engine_rank, log->index_file_number);
+           e->csds->base_name, engine_rank, log->index_file_number);
   log->index_file_number++;
 
   /* Open file (include reading for mmap) */
@@ -384,7 +384,7 @@ void logger_write_index_file(struct logger_writer* log, struct engine* e) {
 
     if (num_fields != 2) {
       error(
-          "The code expects only two fields per particle type for the logger");
+          "The code expects only two fields per particle type for the CSDS");
     }
 
     /* Write ids */
@@ -401,10 +401,10 @@ void logger_write_index_file(struct logger_writer* log, struct engine* e) {
   }
 
   /* Write the particles created */
-  logger_write_history(log->history_new, e, f);
+  csds_write_history(log->history_new, e, f);
 
   /* Write the particles removed */
-  logger_write_history(log->history_removed, e, f);
+  csds_write_history(log->history_removed, e, f);
 
   /* Close file */
   fclose(f);
@@ -413,10 +413,10 @@ void logger_write_index_file(struct logger_writer* log, struct engine* e) {
 /**
  * @brief Write the parameters into a yaml file.
  *
- * @params log The #logger.
+ * @params log The #csds.
  * @params e The #engine.
  */
-void logger_write_description(struct logger_writer* log, struct engine* e) {
+void csds_write_description(struct csds_writer* log, struct engine* e) {
 
   /* Only the master writes the description */
   if (e->nodeID != 0) {
@@ -425,7 +425,7 @@ void logger_write_description(struct logger_writer* log, struct engine* e) {
 
   /* File name */
   char fileName[FILENAME_BUFFER_SIZE];
-  snprintf(fileName, FILENAME_BUFFER_SIZE, "%.100s.yml", e->logger->base_name);
+  snprintf(fileName, FILENAME_BUFFER_SIZE, "%.100s.yml", e->csds->base_name);
 
   /* Open file */
   FILE* f = NULL;
@@ -481,4 +481,4 @@ void logger_write_description(struct logger_writer* log, struct engine* e) {
   fclose(f);
 }
 
-#endif /* WITH_LOGGER */
+#endif /* WITH_CSDS */
diff --git a/src/logger_io.h b/src/csds_io.h
similarity index 88%
rename from src/logger_io.h
rename to src/csds_io.h
index 2c0cfd5a800ce72c75e5dc69e765c712a4768922..2ef904b3d84e1bf71a9733f098faa3e71a13647b 100644
--- a/src/logger_io.h
+++ b/src/csds_io.h
@@ -16,13 +16,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_LOGGER_IO_H
-#define SWIFT_LOGGER_IO_H
+#ifndef SWIFT_CSDS_IO_H
+#define SWIFT_CSDS_IO_H
 
 /* Config parameters. */
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /* Includes. */
 #include "engine.h"
@@ -75,7 +75,7 @@ void write_index_array(const struct engine* e, FILE* f, struct io_props* props,
  *
  * @return The new mask_data.
  */
-INLINE static struct mask_data logger_create_mask_entry(const char* name,
+INLINE static struct mask_data csds_create_mask_entry(const char* name,
                                                         int size) {
   struct mask_data mask;
   /* Copy the fields */
@@ -96,7 +96,7 @@ INLINE static struct mask_data logger_create_mask_entry(const char* name,
  *
  * @return The mask of the current field.
  */
-INLINE static size_t logger_add_field_to_mask(struct mask_data mask_data,
+INLINE static size_t csds_add_field_to_mask(struct mask_data mask_data,
                                               size_t* buffer_size) {
 
   *buffer_size += mask_data.size;
@@ -105,12 +105,12 @@ INLINE static size_t logger_add_field_to_mask(struct mask_data mask_data,
 
 /**
  * @brief Check if a field should be written according to the mask set in
- * #logger_add_field_to_mask.
+ * #csds_add_field_to_mask.
  *
  * @param mask_data The mask_data corresponding to the current field.
  * @param mask The mask used for the current record.
  */
-INLINE static int logger_should_write_field(struct mask_data mask_data,
+INLINE static int csds_should_write_field(struct mask_data mask_data,
                                             unsigned int* mask) {
 
   const int test = mask_data.mask & *mask;
@@ -121,8 +121,8 @@ INLINE static int logger_should_write_field(struct mask_data mask_data,
   return test;
 }
 
-void logger_write_index_file(struct logger_writer* log, struct engine* e);
-void logger_write_description(struct logger_writer* log, struct engine* e);
+void csds_write_index_file(struct csds_writer* log, struct engine* e);
+void csds_write_description(struct csds_writer* log, struct engine* e);
 
 /**
  * @brief Specifies which particle fields to write to a dataset
@@ -143,7 +143,7 @@ __attribute__((always_inline)) INLINE static int hydro_write_index(
                            parts, id, "Field not used");
   list[1] =
       io_make_output_field("Offset", UINT64, 1, UNIT_CONV_NO_UNITS, 0.f, xparts,
-                           logger_data.last_offset, "Field not used");
+                           csds_data.last_offset, "Field not used");
 
   return 2;
 }
@@ -165,7 +165,7 @@ __attribute__((always_inline)) INLINE static int darkmatter_write_index(
                            gparts, id_or_neg_offset, "Field not used");
   list[1] =
       io_make_output_field("Offset", UINT64, 1, UNIT_CONV_NO_UNITS, 0.f, gparts,
-                           logger_data.last_offset, "Field not used");
+                           csds_data.last_offset, "Field not used");
 
   return 2;
 }
@@ -187,11 +187,11 @@ __attribute__((always_inline)) INLINE static int stars_write_index(
                            sparts, id, "Field not used");
   list[1] =
       io_make_output_field("Offset", UINT64, 1, UNIT_CONV_NO_UNITS, 0.f, sparts,
-                           logger_data.last_offset, "Field not used");
+                           csds_data.last_offset, "Field not used");
 
   return 2;
 }
 
 #endif
 
-#endif /* SWIFT_LOGGER_IO_H */
+#endif /* SWIFT_CSDS_IO_H */
diff --git a/src/engine.c b/src/engine.c
index 36b8f7048650b8197d623b146c692c29609b52d5..74a668d124d2eb8b457fca664c90d5d5ffab8813 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -70,8 +70,8 @@
 #include "gravity_cache.h"
 #include "hydro.h"
 #include "line_of_sight.h"
-#include "logger.h"
-#include "logger_io.h"
+#include "csds.h"
+#include "csds_io.h"
 #include "map.h"
 #include "memuse.h"
 #include "minmax.h"
@@ -122,7 +122,7 @@ const char *engine_policy_names[] = {"none",
                                      "fof search",
                                      "time-step limiter",
                                      "time-step sync",
-                                     "logger",
+                                     "csds",
                                      "line of sight",
                                      "sink",
                                      "rt"};
@@ -1094,9 +1094,9 @@ int engine_estimate_nr_tasks(const struct engine *e) {
   if (e->policy & engine_policy_fof) {
     n1 += 2;
   }
-#if defined(WITH_LOGGER)
+#if defined(WITH_CSDS)
   /* each cell logs its particles */
-  if (e->policy & engine_policy_logger) {
+  if (e->policy & engine_policy_csds) {
     n1 += 1;
   }
 #endif
@@ -1777,20 +1777,20 @@ void engine_init_particles(struct engine *e, int flag_entropy_ICs,
       (e->policy & engine_policy_temperature))
     cooling_update(e->cosmology, e->cooling_func, e->s);
 
-#ifdef WITH_LOGGER
-  if (e->policy & engine_policy_logger) {
-    /* Mark the first time step in the particle logger file. */
+#ifdef WITH_CSDS
+  if (e->policy & engine_policy_csds) {
+    /* Mark the first time step in the particle csds file. */
     if (e->policy & engine_policy_cosmology) {
-      logger_log_timestamp(e->logger, e->ti_current, e->cosmology->a,
-                           &e->logger->timestamp_offset);
+      csds_log_timestamp(e->csds, e->ti_current, e->cosmology->a,
+                           &e->csds->timestamp_offset);
     } else {
-      logger_log_timestamp(e->logger, e->ti_current, e->time,
-                           &e->logger->timestamp_offset);
+      csds_log_timestamp(e->csds, e->ti_current, e->time,
+                           &e->csds->timestamp_offset);
     }
-    /* Make sure that we have enough space in the particle logger file
+    /* Make sure that we have enough space in the particle csds file
      * to store the particles in current time step. */
-    logger_ensure_size(e->logger, s->nr_parts, s->nr_gparts, s->nr_sparts);
-    logger_write_description(e->logger, e);
+    csds_ensure_size(e->csds, s->nr_parts, s->nr_gparts, s->nr_sparts);
+    csds_write_description(e->csds, e);
   }
 #endif
 
@@ -2186,19 +2186,19 @@ void engine_step(struct engine *e) {
     }
   }
 
-#ifdef WITH_LOGGER
-  if (e->policy & engine_policy_logger) {
-    /* Mark the current time step in the particle logger file. */
+#ifdef WITH_CSDS
+  if (e->policy & engine_policy_csds) {
+    /* Mark the current time step in the particle csds file. */
     if (e->policy & engine_policy_cosmology) {
-      logger_log_timestamp(e->logger, e->ti_current, e->cosmology->a,
-                           &e->logger->timestamp_offset);
+      csds_log_timestamp(e->csds, e->ti_current, e->cosmology->a,
+                           &e->csds->timestamp_offset);
     } else {
-      logger_log_timestamp(e->logger, e->ti_current, e->time,
-                           &e->logger->timestamp_offset);
+      csds_log_timestamp(e->csds, e->ti_current, e->time,
+                           &e->csds->timestamp_offset);
     }
-    /* Make sure that we have enough space in the particle logger file
+    /* Make sure that we have enough space in the particle csds file
      * to store the particles in current time step. */
-    logger_ensure_size(e->logger, e->s->nr_parts, e->s->nr_gparts,
+    csds_ensure_size(e->csds, e->s->nr_parts, e->s->nr_gparts,
                        e->s->nr_sparts);
   }
 #endif
@@ -2419,8 +2419,8 @@ void engine_step(struct engine *e) {
   engine_dump_restarts(e, 0, e->restart_onexit && engine_is_done(e));
 
   engine_check_for_dumps(e);
-#ifdef WITH_LOGGER
-  if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+  if (e->policy & engine_policy_csds) {
     engine_check_for_index_dump(e);
   }
 #endif
@@ -2898,10 +2898,10 @@ void engine_init(
   e->total_nr_cells = 0;
   e->total_nr_tasks = 0;
 
-#if defined(WITH_LOGGER)
-  if (e->policy & engine_policy_logger) {
-    e->logger = (struct logger_writer *)malloc(sizeof(struct logger_writer));
-    logger_init(e->logger, e, params);
+#if defined(WITH_CSDS)
+  if (e->policy & engine_policy_csds) {
+    e->csds = (struct csds_writer *)malloc(sizeof(struct csds_writer));
+    csds_init(e->csds, e, params);
   }
 #endif
 
@@ -3251,10 +3251,10 @@ void engine_clean(struct engine *e, const int fof, const int restart) {
   output_options_clean(e->output_options);
 
   swift_free("links", e->links);
-#if defined(WITH_LOGGER)
-  if (e->policy & engine_policy_logger) {
-    logger_free(e->logger);
-    free(e->logger);
+#if defined(WITH_CSDS)
+  if (e->policy & engine_policy_csds) {
+    csds_free(e->csds);
+    free(e->csds);
   }
 #endif
   scheduler_clean(&e->sched);
@@ -3317,8 +3317,8 @@ void engine_clean(struct engine *e, const int fof, const int restart) {
     if (e->output_list_stats) free((void *)e->output_list_stats);
     if (e->output_list_stf) free((void *)e->output_list_stf);
     if (e->output_list_los) free((void *)e->output_list_los);
-#ifdef WITH_LOGGER
-    if (e->policy & engine_policy_logger) free((void *)e->logger);
+#ifdef WITH_CSDS
+    if (e->policy & engine_policy_csds) free((void *)e->csds);
 #endif
     free(e->s);
   }
@@ -3372,9 +3372,9 @@ void engine_struct_dump(struct engine *e, FILE *stream) {
   parser_struct_dump(e->parameter_file, stream);
   output_options_struct_dump(e->output_options, stream);
 
-#ifdef WITH_LOGGER
-  if (e->policy & engine_policy_logger) {
-    logger_struct_dump(e->logger, stream);
+#ifdef WITH_CSDS
+  if (e->policy & engine_policy_csds) {
+    csds_struct_dump(e->csds, stream);
   }
 #endif
 }
@@ -3526,12 +3526,12 @@ void engine_struct_restore(struct engine *e, FILE *stream) {
   output_options_struct_restore(output_options, stream);
   e->output_options = output_options;
 
-#ifdef WITH_LOGGER
-  if (e->policy & engine_policy_logger) {
-    struct logger_writer *log =
-        (struct logger_writer *)malloc(sizeof(struct logger_writer));
-    logger_struct_restore(log, stream);
-    e->logger = log;
+#ifdef WITH_CSDS
+  if (e->policy & engine_policy_csds) {
+    struct csds_writer *log =
+        (struct csds_writer *)malloc(sizeof(struct csds_writer));
+    csds_struct_restore(log, stream);
+    e->csds = log;
   }
 #endif
 
diff --git a/src/engine.h b/src/engine.h
index 0de4031568dee18e580ab74a6e668bd9bce15ce5..36c97a67d5b98bb6d1a40aef1b417cf9ccde108e 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -79,7 +79,7 @@ enum engine_policy {
   engine_policy_fof = (1 << 20),
   engine_policy_timestep_limiter = (1 << 21),
   engine_policy_timestep_sync = (1 << 22),
-  engine_policy_logger = (1 << 23),
+  engine_policy_csds = (1 << 23),
   engine_policy_line_of_sight = (1 << 24),
   engine_policy_sinks = (1 << 25),
   engine_policy_rt = (1 << 26),
@@ -101,7 +101,7 @@ enum engine_step_properties {
   engine_step_prop_stf = (1 << 6),
   engine_step_prop_fof = (1 << 7),
   engine_step_prop_mesh = (1 << 8),
-  engine_step_prop_logger_index = (1 << 9),
+  engine_step_prop_csds_index = (1 << 9),
   engine_step_prop_done = (1 << 10),
 };
 
@@ -415,8 +415,8 @@ struct engine {
   int forcerepart;
   struct repartition *reparttype;
 
-  /* The particle logger */
-  struct logger_writer *logger;
+  /* The Continuous Simulation Data Stream (CSDS) */
+  struct csds_writer *csds;
 
   /* How many steps have we done with the same set of tasks? */
   int tasks_age;
diff --git a/src/engine_config.c b/src/engine_config.c
index 442d5c24612a910e49138134241bf60ac24cebe3..9ad24f14eeaba1aa02175b7fd778a3a124aed511 100644
--- a/src/engine_config.c
+++ b/src/engine_config.c
@@ -463,12 +463,12 @@ void engine_config(int restart, int fof, struct engine *e,
           e->file_timesteps,
           "# Step Properties: Rebuild=%d, Redistribute=%d, Repartition=%d, "
           "Statistics=%d, Snapshot=%d, Restarts=%d STF=%d, FOF=%d, mesh=%d, "
-          "logger=%d\n",
+          "CSDS=%d\n",
           engine_step_prop_rebuild, engine_step_prop_redistribute,
           engine_step_prop_repartition, engine_step_prop_statistics,
           engine_step_prop_snapshot, engine_step_prop_restarts,
           engine_step_prop_stf, engine_step_prop_fof, engine_step_prop_mesh,
-          engine_step_prop_logger_index);
+          engine_step_prop_csds_index);
 
       fprintf(e->file_timesteps,
               "# %6s %14s %12s %12s %14s %9s %12s %12s %12s %12s %12s %16s "
@@ -649,11 +649,11 @@ void engine_config(int restart, int fof, struct engine *e,
                   MPI_COMM_WORLD);
 #endif
 
-#if defined(WITH_LOGGER)
-    if ((e->policy & engine_policy_logger) && e->nodeID == 0)
+#if defined(WITH_CSDS)
+    if ((e->policy & engine_policy_csds) && e->nodeID == 0)
       message(
           "WARNING: There is currently no way of predicting the output "
-          "size, please use the logger carefully");
+          "size, please use the CSDS carefully");
 #endif
 
     /* Find the time of the first snapshot output */
@@ -894,10 +894,10 @@ void engine_config(int restart, int fof, struct engine *e,
     }
   }
 
-#ifdef WITH_LOGGER
-  if ((e->policy & engine_policy_logger) && !restart) {
-    /* Write the particle logger header */
-    logger_write_file_header(e->logger);
+#ifdef WITH_CSDS
+  if ((e->policy & engine_policy_csds) && !restart) {
+    /* Write the particle csds header */
+    csds_write_file_header(e->csds);
   }
 #endif
 
diff --git a/src/engine_io.c b/src/engine_io.c
index 794a9c1d490234fca5d31dc36de02c983a908a55..5187648b545b325771ee92ad21ffa719f2e802de 100644
--- a/src/engine_io.c
+++ b/src/engine_io.c
@@ -34,7 +34,7 @@
 #include "distributed_io.h"
 #include "kick.h"
 #include "line_of_sight.h"
-#include "logger_io.h"
+#include "csds_io.h"
 #include "parallel_io.h"
 #include "serial_io.h"
 #include "single_io.h"
@@ -48,9 +48,9 @@
  * @param e The #engine.
  */
 void engine_check_for_index_dump(struct engine *e) {
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
   /* Get a few variables */
-  struct logger_writer *log = e->logger;
+  struct csds_writer *log = e->csds;
   const size_t dump_size = log->dump.count;
   const size_t old_dump_size = log->index.dump_size_last_output;
   const float mem_frac = log->index.mem_frac;
@@ -58,7 +58,7 @@ void engine_check_for_index_dump(struct engine *e) {
       (e->total_nr_parts + e->total_nr_gparts + e->total_nr_sparts +
        e->total_nr_bparts + e->total_nr_DM_background_gparts);
   const size_t index_file_size =
-      total_nr_parts * sizeof(struct logger_part_data);
+      total_nr_parts * sizeof(struct csds_part_data);
 
   size_t number_part_history = 0;
   for (int i = 0; i < swift_type_count; i++) {
@@ -77,7 +77,7 @@ void engine_check_for_index_dump(struct engine *e) {
     log->index.dump_size_last_output = dump_size;
   }
 #else
-  error("This function should not be called without the logger.");
+  error("This function should not be called without the CSDS.");
 #endif
 }
 
@@ -253,7 +253,7 @@ void engine_run_on_dump(struct engine *e) {
  */
 void engine_dump_index(struct engine *e) {
 
-#if defined(WITH_LOGGER)
+#if defined(WITH_CSDS)
   struct clocks_time time1, time2;
   clocks_gettime(&time1);
 
@@ -267,17 +267,17 @@ void engine_dump_index(struct engine *e) {
   }
 
   /* Dump... */
-  logger_write_index_file(e->logger, e);
+  csds_write_index_file(e->csds, e);
 
   /* Flag that we dumped a snapshot */
-  e->step_props |= engine_step_prop_logger_index;
+  e->step_props |= engine_step_prop_csds_index;
 
   clocks_gettime(&time2);
   if (e->verbose)
     message("writing particle indices took %.3f %s.",
             (float)clocks_diff(&time1, &time2), clocks_getunit());
 #else
-  error("SWIFT was not compiled with the logger");
+  error("SWIFT was not compiled with the CSDS.");
 #endif
 }
 
diff --git a/src/engine_maketasks.c b/src/engine_maketasks.c
index 6e3ba60a5af82f06786e8dd5dae0004695e7d4ec..c7dc59c7e63eda91bb58f999f4a6000e735befe6 100644
--- a/src/engine_maketasks.c
+++ b/src/engine_maketasks.c
@@ -966,8 +966,8 @@ void engine_make_hierarchical_tasks_common(struct engine *e, struct cell *c) {
   const int with_timestep_limiter =
       (e->policy & engine_policy_timestep_limiter);
   const int with_timestep_sync = (e->policy & engine_policy_timestep_sync);
-#ifdef WITH_LOGGER
-  const int with_logger = e->policy & engine_policy_logger;
+#ifdef WITH_CSDS
+  const int with_csds = e->policy & engine_policy_csds;
 #endif
 
   /* Are we at the top-level? */
@@ -1012,42 +1012,42 @@ void engine_make_hierarchical_tasks_common(struct engine *e, struct cell *c) {
         scheduler_addunlock(s, c->kick1, c->grav.neutrino_weight);
       }
 
-#if defined(WITH_LOGGER)
-      struct task *kick2_or_logger;
-      if (with_logger) {
-        /* Add the hydro logger task. */
-        c->logger = scheduler_addtask(s, task_type_logger, task_subtype_none, 0,
+#if defined(WITH_CSDS)
+      struct task *kick2_or_csds;
+      if (with_csds) {
+        /* Add the hydro csds task. */
+        c->csds = scheduler_addtask(s, task_type_csds, task_subtype_none, 0,
                                       0, c, NULL);
 
         /* Add the kick2 dependency */
-        scheduler_addunlock(s, c->kick2, c->logger);
+        scheduler_addunlock(s, c->kick2, c->csds);
 
         /* Create a variable in order to avoid to many ifdef */
-        kick2_or_logger = c->logger;
+        kick2_or_csds = c->csds;
       } else {
-        kick2_or_logger = c->kick2;
+        kick2_or_csds = c->kick2;
       }
 #else
-      struct task *kick2_or_logger = c->kick2;
+      struct task *kick2_or_csds = c->kick2;
 #endif
 
       /* Add the time-step calculation task and its dependency */
       c->timestep = scheduler_addtask(s, task_type_timestep, task_subtype_none,
                                       0, 0, c, NULL);
 
-      scheduler_addunlock(s, kick2_or_logger, c->timestep);
+      scheduler_addunlock(s, kick2_or_csds, c->timestep);
       scheduler_addunlock(s, c->timestep, c->kick1);
 
       /* Subgrid tasks: star formation */
       if (with_star_formation && c->hydro.count > 0) {
-        scheduler_addunlock(s, kick2_or_logger, c->top->hydro.star_formation);
+        scheduler_addunlock(s, kick2_or_csds, c->top->hydro.star_formation);
         scheduler_addunlock(s, c->top->hydro.star_formation, c->timestep);
       }
 
       /* Subgrid tasks: star formation from sinks */
       if (with_star_formation_sink &&
           (c->hydro.count > 0 || c->sinks.count > 0)) {
-        scheduler_addunlock(s, kick2_or_logger,
+        scheduler_addunlock(s, kick2_or_csds,
                             c->top->hydro.star_formation_sink);
         scheduler_addunlock(s, c->top->hydro.star_formation_sink, c->timestep);
       }
@@ -1277,8 +1277,8 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c,
   const int with_star_formation_sink = (with_sinks && with_stars);
   const int with_black_holes = (e->policy & engine_policy_black_holes);
   const int with_rt = (e->policy & engine_policy_rt);
-#ifdef WITH_LOGGER
-  const int with_logger = (e->policy & engine_policy_logger);
+#ifdef WITH_CSDS
+  const int with_csds = (e->policy & engine_policy_csds);
 #endif
 
   /* Are we are the level where we create the stars' resort tasks?
@@ -1449,9 +1449,9 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c,
                               0, /* implicit = */ 1, c, NULL);
 #endif
 
-#ifdef WITH_LOGGER
-        if (with_logger) {
-          scheduler_addunlock(s, c->super->logger, c->stars.stars_in);
+#ifdef WITH_CSDS
+        if (with_csds) {
+          scheduler_addunlock(s, c->super->csds, c->stars.stars_in);
         } else {
           scheduler_addunlock(s, c->super->kick2, c->stars.stars_in);
         }
@@ -1543,9 +1543,9 @@ void engine_make_hierarchical_tasks_hydro(struct engine *e, struct cell *c,
         c->black_holes.swallow_ghost_2 = scheduler_addtask(
             s, task_type_bh_swallow_ghost3, task_subtype_none, 0, 0, c, NULL);
 
-#ifdef WITH_LOGGER
-        if (with_logger) {
-          scheduler_addunlock(s, c->super->logger,
+#ifdef WITH_CSDS
+        if (with_csds) {
+          scheduler_addunlock(s, c->super->csds,
                               c->black_holes.black_holes_in);
         } else {
           scheduler_addunlock(s, c->super->kick2,
diff --git a/src/engine_marktasks.c b/src/engine_marktasks.c
index ee192fe0f27eeac8bf2b4656476c70f9250ead9a..cb9a1274d91a32ff2d4e172485f42d6696a7e774 100644
--- a/src/engine_marktasks.c
+++ b/src/engine_marktasks.c
@@ -1265,8 +1265,8 @@ void engine_marktasks_mapper(void *map_data, int num_elements,
       if (cell_is_active_hydro(t->ci, e)) scheduler_activate(s, t);
     }
 
-    /* logger tasks ? */
-    else if (t->type == task_type_logger) {
+    /* csds tasks ? */
+    else if (t->type == task_type_csds) {
       if (cell_is_active_hydro(t->ci, e) || cell_is_active_gravity(t->ci, e) ||
           cell_is_active_stars(t->ci, e))
         scheduler_activate(s, t);
diff --git a/src/engine_redistribute.c b/src/engine_redistribute.c
index 0e0ea2ad186d27e81c37a2b15bcb6545d0498a6a..b8f9c5c7ed616022fbcbcdc64f8d89ffb9f9d782 100644
--- a/src/engine_redistribute.c
+++ b/src/engine_redistribute.c
@@ -983,9 +983,9 @@ void engine_redistribute(struct engine *e) {
   for (int k = 0; k < nr_nodes; k++)
     nr_bparts_new += b_counts[k * nr_nodes + nodeID];
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
   const int initial_redistribute = e->ti_current == 0;
-  if (!initial_redistribute && e->policy & engine_policy_logger) {
+  if (!initial_redistribute && e->policy & engine_policy_csds) {
     /* Log the particles before sending them out */
     size_t part_offset = 0;
     size_t spart_offset = 0;
@@ -1005,17 +1005,17 @@ void engine_redistribute(struct engine *e) {
       }
 
       /* Log the hydro parts. */
-      logger_log_parts(e->logger, &parts[part_offset], &xparts[part_offset],
+      csds_log_parts(e->csds, &parts[part_offset], &xparts[part_offset],
                        counts[c_ind], e, /* log_all_fields */ 1,
-                       logger_flag_mpi_exit, i);
+                       csds_flag_mpi_exit, i);
 
       /* Log the stellar parts. */
-      logger_log_sparts(e->logger, &sparts[spart_offset], s_counts[c_ind], e,
-                        /* log_all_fields */ 1, logger_flag_mpi_exit, i);
+      csds_log_sparts(e->csds, &sparts[spart_offset], s_counts[c_ind], e,
+                        /* log_all_fields */ 1, csds_flag_mpi_exit, i);
 
       /* Log the gparts */
-      logger_log_gparts(e->logger, &gparts[gpart_offset], g_counts[c_ind], e,
-                        /* log_all_fields */ 1, logger_flag_mpi_exit, i);
+      csds_log_gparts(e->csds, &gparts[gpart_offset], g_counts[c_ind], e,
+                        /* log_all_fields */ 1, csds_flag_mpi_exit, i);
 
       /* Log the bparts */
       if (b_counts[c_ind] > 0) {
@@ -1083,8 +1083,8 @@ void engine_redistribute(struct engine *e) {
   /* All particles have now arrived. Time for some final operations on the
      stuff we just received */
 
-#ifdef WITH_LOGGER
-  if (!initial_redistribute && e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+  if (!initial_redistribute && e->policy & engine_policy_csds) {
     size_t part_offset = 0;
     size_t spart_offset = 0;
     size_t gpart_offset = 0;
@@ -1103,17 +1103,17 @@ void engine_redistribute(struct engine *e) {
       }
 
       /* Log the hydro parts. */
-      logger_log_parts(e->logger, &s->parts[part_offset],
+      csds_log_parts(e->csds, &s->parts[part_offset],
                        &s->xparts[part_offset], counts[c_ind], e,
-                       /* log_all_fields */ 1, logger_flag_mpi_enter, i);
+                       /* log_all_fields */ 1, csds_flag_mpi_enter, i);
 
       /* Log the stellar parts. */
-      logger_log_sparts(e->logger, &s->sparts[spart_offset], s_counts[c_ind], e,
-                        /* log_all_fields */ 1, logger_flag_mpi_enter, i);
+      csds_log_sparts(e->csds, &s->sparts[spart_offset], s_counts[c_ind], e,
+                        /* log_all_fields */ 1, csds_flag_mpi_enter, i);
 
       /* Log the gparts */
-      logger_log_gparts(e->logger, &s->gparts[gpart_offset], g_counts[c_ind], e,
-                        /* log_all_fields */ 1, logger_flag_mpi_enter, i);
+      csds_log_gparts(e->csds, &s->gparts[gpart_offset], g_counts[c_ind], e,
+                        /* log_all_fields */ 1, csds_flag_mpi_enter, i);
 
       /* Log the bparts */
       if (b_counts[c_ind] > 0) {
diff --git a/src/engine_strays.c b/src/engine_strays.c
index 6330ee0bde28597cd137fb4f9d3d9872d7a1cf0e..dd6fbf26735191b6af4fdcc5a11e9ec5e3897a36 100644
--- a/src/engine_strays.c
+++ b/src/engine_strays.c
@@ -117,12 +117,12 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
     proxy_parts_load(&e->proxies[pid], &s->parts[offset_parts + k],
                      &s->xparts[offset_parts + k], 1);
 
-#ifdef WITH_LOGGER
-    if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+    if (e->policy & engine_policy_csds) {
       /* Log the particle when leaving a rank. */
-      logger_log_part(e->logger, &s->parts[offset_parts + k],
+      csds_log_part(e->csds, &s->parts[offset_parts + k],
                       &s->xparts[offset_parts + k], e, /* log_all_fields */ 1,
-                      logger_flag_mpi_exit, node_id);
+                      csds_flag_mpi_exit, node_id);
     }
 #endif
   }
@@ -161,11 +161,11 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
     /* Load the spart into the proxy */
     proxy_sparts_load(&e->proxies[pid], &s->sparts[offset_sparts + k], 1);
 
-#ifdef WITH_LOGGER
-    if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+    if (e->policy & engine_policy_csds) {
       /* Log the particle when leaving a rank. */
-      logger_log_spart(e->logger, &s->sparts[offset_sparts + k], e,
-                       /* log_all_fields */ 1, logger_flag_mpi_exit, node_id);
+      csds_log_spart(e->csds, &s->sparts[offset_sparts + k], e,
+                       /* log_all_fields */ 1, csds_flag_mpi_exit, node_id);
     }
 #endif
   }
@@ -204,8 +204,8 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
     /* Load the bpart into the proxy */
     proxy_bparts_load(&e->proxies[pid], &s->bparts[offset_bparts + k], 1);
 
-#ifdef WITH_LOGGER
-    if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+    if (e->policy & engine_policy_csds) {
       error("Not yet implemented.");
     }
 #endif
@@ -239,14 +239,14 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
     /* Load the gpart into the proxy */
     proxy_gparts_load(&e->proxies[pid], &s->gparts[offset_gparts + k], 1);
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
     /* Write only the dark matter particles */
-    if ((e->policy & engine_policy_logger) &&
+    if ((e->policy & engine_policy_csds) &&
         s->gparts[offset_gparts + k].type == swift_type_dark_matter) {
 
       /* Log the particle when leaving a rank. */
-      logger_log_gpart(e->logger, &s->gparts[offset_gparts + k], e,
-                       /* log_all_fields */ 1, logger_flag_mpi_exit, node_id);
+      csds_log_gpart(e->csds, &s->gparts[offset_gparts + k], e,
+                       /* log_all_fields */ 1, csds_flag_mpi_exit, node_id);
     }
 #endif
   }
@@ -469,26 +469,26 @@ void engine_exchange_strays(struct engine *e, const size_t offset_parts,
       memcpy(&s->bparts[offset_bparts + count_bparts], prox->bparts_in,
              sizeof(struct bpart) * prox->nr_bparts_in);
 
-#ifdef WITH_LOGGER
-      if (e->policy & engine_policy_logger) {
+#ifdef WITH_CSDS
+      if (e->policy & engine_policy_csds) {
         struct part *parts = &s->parts[offset_parts + count_parts];
         struct xpart *xparts = &s->xparts[offset_parts + count_parts];
         struct spart *sparts = &s->sparts[offset_sparts + count_sparts];
         struct gpart *gparts = &s->gparts[offset_gparts + count_gparts];
 
         /* Log the gas particles */
-        logger_log_parts(e->logger, parts, xparts, prox->nr_parts_in, e,
-                         /* log_all_fields */ 1, logger_flag_mpi_enter,
+        csds_log_parts(e->csds, parts, xparts, prox->nr_parts_in, e,
+                         /* log_all_fields */ 1, csds_flag_mpi_enter,
                          prox->nodeID);
 
         /* Log the stellar particles */
-        logger_log_sparts(e->logger, sparts, prox->nr_sparts_in, e,
-                          /* log_all_fields */ 1, logger_flag_mpi_enter,
+        csds_log_sparts(e->csds, sparts, prox->nr_sparts_in, e,
+                          /* log_all_fields */ 1, csds_flag_mpi_enter,
                           prox->nodeID);
 
         /* Log the gparts */
-        logger_log_gparts(e->logger, gparts, prox->nr_gparts_in, e,
-                          /* log_all_fields */ 1, logger_flag_mpi_enter,
+        csds_log_gparts(e->csds, gparts, prox->nr_gparts_in, e,
+                          /* log_all_fields */ 1, csds_flag_mpi_enter,
                           prox->nodeID);
 
         /* Log the bparts */
diff --git a/src/gravity/Default/gravity_part.h b/src/gravity/Default/gravity_part.h
index a1dbfe79f4ca5481cf4d5740c6c36ff0b0eb798f..b94da6479f4e4888ceef32bc2d3364fef91dad23 100644
--- a/src/gravity/Default/gravity_part.h
+++ b/src/gravity/Default/gravity_part.h
@@ -67,11 +67,6 @@ struct gpart {
   /*! Type of the #gpart (DM, gas, star, ...) */
   enum part_type type;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
-#endif
-
 #ifdef HAVE_VELOCIRAPTOR_ORPHANS
   /* Flag to indicate this particle should be output at subsequent VR
      invocations because it was the most bound in a group at some point */
diff --git a/src/gravity/MultiSoftening/gravity_logger.c b/src/gravity/MultiSoftening/gravity_csds.c
similarity index 87%
rename from src/gravity/MultiSoftening/gravity_logger.c
rename to src/gravity/MultiSoftening/gravity_csds.c
index 2622c747ee0d10b8b626acdfb85313e4ed49adfe..ca56d418abcdaa01bd2537a60527e211829edbda 100644
--- a/src/gravity/MultiSoftening/gravity_logger.c
+++ b/src/gravity/MultiSoftening/gravity_csds.c
@@ -19,12 +19,12 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "gravity_logger.h"
+#include "gravity_csds.h"
 
-const char *gravity_logger_field_names[gravity_logger_field_count] = {
+const char *gravity_csds_field_names[gravity_csds_field_count] = {
     "Coordinates", "Velocities", "Accelerations", "Masses", "ParticleIDs",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/gravity/MultiSoftening/gravity_logger.h b/src/gravity/MultiSoftening/gravity_csds.h
similarity index 57%
rename from src/gravity/MultiSoftening/gravity_logger.h
rename to src/gravity/MultiSoftening/gravity_csds.h
index a29418179adf784e754ecbf06e202c602277fb5e..c7d95567515fc8a820224c5ee4c8a467e9adb211 100644
--- a/src/gravity/MultiSoftening/gravity_logger.h
+++ b/src/gravity/MultiSoftening/gravity_csds.h
@@ -16,137 +16,137 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_MULTISOFTENING_GRAVITY_LOGGER_H
-#define SWIFT_MULTISOFTENING_GRAVITY_LOGGER_H
+#ifndef SWIFT_MULTISOFTENING_GRAVITY_CSDS_H
+#define SWIFT_MULTISOFTENING_GRAVITY_CSDS_H
 
 #include "gravity_part.h"
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only logger_gravity_count is used.
+ * Outside the module, only csds_gravity_count is used.
  */
-enum gravity_logger_fields {
-  gravity_logger_field_coordinates = 0,
-  gravity_logger_field_velocities,
-  gravity_logger_field_accelerations,
-  gravity_logger_field_masses,
-  gravity_logger_field_particle_ids,
-  gravity_logger_field_count,
+enum gravity_csds_fields {
+  gravity_csds_field_coordinates = 0,
+  gravity_csds_field_velocities,
+  gravity_csds_field_accelerations,
+  gravity_csds_field_masses,
+  gravity_csds_field_particle_ids,
+  gravity_csds_field_count,
 };
 
 /* Name of each possible mask. */
-extern const char *gravity_logger_field_names[gravity_logger_field_count];
+extern const char *gravity_csds_field_names[gravity_csds_field_count];
 
 /**
- * @brief Initialize the logger.
+ * @brief Initialize the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #gravity_logger_fields!
+ * #gravity_csds_fields!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int gravity_logger_writer_populate_mask_data(
+INLINE static int gravity_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  mask_data[gravity_logger_field_coordinates] = logger_create_mask_entry(
-      gravity_logger_field_names[gravity_logger_field_coordinates],
+  mask_data[gravity_csds_field_coordinates] = csds_create_mask_entry(
+      gravity_csds_field_names[gravity_csds_field_coordinates],
       3 * sizeof(double));
 
-  mask_data[gravity_logger_field_velocities] = logger_create_mask_entry(
-      gravity_logger_field_names[gravity_logger_field_velocities],
+  mask_data[gravity_csds_field_velocities] = csds_create_mask_entry(
+      gravity_csds_field_names[gravity_csds_field_velocities],
       3 * sizeof(float));
 
-  mask_data[gravity_logger_field_accelerations] = logger_create_mask_entry(
-      gravity_logger_field_names[gravity_logger_field_accelerations],
+  mask_data[gravity_csds_field_accelerations] = csds_create_mask_entry(
+      gravity_csds_field_names[gravity_csds_field_accelerations],
       3 * sizeof(float));
 
-  mask_data[gravity_logger_field_masses] = logger_create_mask_entry(
-      gravity_logger_field_names[gravity_logger_field_masses], sizeof(float));
+  mask_data[gravity_csds_field_masses] = csds_create_mask_entry(
+      gravity_csds_field_names[gravity_csds_field_masses], sizeof(float));
 
-  mask_data[gravity_logger_field_particle_ids] = logger_create_mask_entry(
-      gravity_logger_field_names[gravity_logger_field_particle_ids],
+  mask_data[gravity_csds_field_particle_ids] = csds_create_mask_entry(
+      gravity_csds_field_names[gravity_csds_field_particle_ids],
       sizeof(long long));
 
-  return gravity_logger_field_count;
+  return gravity_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record.
  *
  * WARNING: The order should be the same in all the functions and
- * #gravity_logger_fields!
+ * #gravity_csds_fields!
  *
- * @param masks The list of masks (same order than in #gravity_logger_init).
+ * @param masks The list of masks (same order than in #gravity_csds_init).
  * @param part The #gpart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void gravity_logger_compute_size_and_mask(
+INLINE static void gravity_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct gpart *part,
     const int write_all, size_t *buffer_size, unsigned int *mask) {
 
   /* Here you can decide your own writing logic */
 
   /* Add the coordinates. */
-  *mask |= logger_add_field_to_mask(masks[gravity_logger_field_coordinates],
+  *mask |= csds_add_field_to_mask(masks[gravity_csds_field_coordinates],
                                     buffer_size);
 
   /* Add the velocities. */
-  *mask |= logger_add_field_to_mask(masks[gravity_logger_field_velocities],
+  *mask |= csds_add_field_to_mask(masks[gravity_csds_field_velocities],
                                     buffer_size);
 
   /* Add the accelerations. */
-  *mask |= logger_add_field_to_mask(masks[gravity_logger_field_accelerations],
+  *mask |= csds_add_field_to_mask(masks[gravity_csds_field_accelerations],
                                     buffer_size);
 
   /* Add the masses. */
   *mask |=
-      logger_add_field_to_mask(masks[gravity_logger_field_masses], buffer_size);
+      csds_add_field_to_mask(masks[gravity_csds_field_masses], buffer_size);
 
   /* Add the ID. */
-  *mask |= logger_add_field_to_mask(masks[gravity_logger_field_particle_ids],
+  *mask |= csds_add_field_to_mask(masks[gravity_csds_field_particle_ids],
                                     buffer_size);
 }
 
 /**
- * @brief Write a particle to the logger.
+ * @brief Write a particle to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #gravity_logger_fields!
+ * #gravity_csds_fields!
  *
- * @param masks The list of masks (same order than in #gravity_logger_init).
+ * @param masks The list of masks (same order than in #gravity_csds_init).
  * @param p The #gpart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *gravity_logger_write_particle(
+INLINE static char *gravity_csds_write_particle(
     const struct mask_data *mask_data, const struct gpart *p,
     unsigned int *mask, char *buff) {
 
   /* Write the coordinate. */
-  if (logger_should_write_field(mask_data[gravity_logger_field_coordinates],
+  if (csds_should_write_field(mask_data[gravity_csds_field_coordinates],
                                 mask)) {
     memcpy(buff, p->x, 3 * sizeof(double));
     buff += 3 * sizeof(double);
   }
 
   /* Write the velocity. */
-  if (logger_should_write_field(mask_data[gravity_logger_field_velocities],
+  if (csds_should_write_field(mask_data[gravity_csds_field_velocities],
                                 mask)) {
     memcpy(buff, p->v_full, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the acceleration. */
-  if (logger_should_write_field(mask_data[gravity_logger_field_accelerations],
+  if (csds_should_write_field(mask_data[gravity_csds_field_accelerations],
                                 mask)) {
     float acc[3] = {
         p->a_grav[0] + p->a_grav_mesh[0],
@@ -158,13 +158,13 @@ INLINE static char *gravity_logger_write_particle(
   }
 
   /* Write the mass. */
-  if (logger_should_write_field(mask_data[gravity_logger_field_masses], mask)) {
+  if (csds_should_write_field(mask_data[gravity_csds_field_masses], mask)) {
     memcpy(buff, &p->mass, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the Id. */
-  if (logger_should_write_field(mask_data[gravity_logger_field_particle_ids],
+  if (csds_should_write_field(mask_data[gravity_csds_field_particle_ids],
                                 mask)) {
     memcpy(buff, &p->id_or_neg_offset, sizeof(long long));
     buff += sizeof(long long);
@@ -172,5 +172,5 @@ INLINE static char *gravity_logger_write_particle(
 
   return buff;
 }
-#endif  // WITH_LOGGER
-#endif  // SWIFT_MULTISOFTENING_GRAVITY_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_MULTISOFTENING_GRAVITY_CSDS_H
diff --git a/src/gravity/MultiSoftening/gravity_part.h b/src/gravity/MultiSoftening/gravity_part.h
index 8cf8e241a5cb3b5427e6138b65738fdb7c180a2c..ae9afc00ba1e88982c1f944821eaed1ebf6f49bd 100644
--- a/src/gravity/MultiSoftening/gravity_part.h
+++ b/src/gravity/MultiSoftening/gravity_part.h
@@ -20,7 +20,7 @@
 #define SWIFT_MULTI_SOFTENING_GRAVITY_PART_H
 
 #include "fof_struct.h"
-#include "logger.h"
+#include "csds.h"
 
 /* Gravity particle. */
 struct gpart {
@@ -69,9 +69,9 @@ struct gpart {
   /*! Type of the #gpart (DM, gas, star, ...) */
   enum part_type type;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
+#ifdef WITH_CSDS
+  /* Additional data for the particle csds */
+  struct csds_part_data csds_data;
 #endif
 
 #ifdef HAVE_VELOCIRAPTOR_ORPHANS
diff --git a/src/gravity_logger.h b/src/gravity_csds.h
similarity index 87%
rename from src/gravity_logger.h
rename to src/gravity_csds.h
index c87831b37b682c368ca5413cb5fa2e09e8ab4752..708cf8b629aed946d7f54816c9ab76370a820dab 100644
--- a/src/gravity_logger.h
+++ b/src/gravity_csds.h
@@ -16,8 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_GRAVITY_LOGGER_H
-#define SWIFT_GRAVITY_LOGGER_H
+#ifndef SWIFT_GRAVITY_CSDS_H
+#define SWIFT_GRAVITY_CSDS_H
 
 /* Config parameters. */
 #include "../config.h"
@@ -25,7 +25,7 @@
 /* Local headers. */
 #include "./const.h"
 #include "align.h"
-#include "logger.h"
+#include "csds.h"
 #include "part_type.h"
 #include "timeline.h"
 
@@ -33,9 +33,9 @@
 #if defined(DEFAULT_GRAVITY)
 #error TODO
 #elif defined(MULTI_SOFTENING_GRAVITY)
-#include "./gravity/MultiSoftening/gravity_logger.h"
+#include "./gravity/MultiSoftening/gravity_csds.h"
 #else
 #error "Invalid choice of gravity variant"
 #endif
 
-#endif /* SWIFT_GRAVITY_LOGGER_H */
+#endif /* SWIFT_GRAVITY_CSDS_H */
diff --git a/src/hydro/Gadget2/hydro_logger.c b/src/hydro/Gadget2/hydro_csds.c
similarity index 90%
rename from src/hydro/Gadget2/hydro_logger.c
rename to src/hydro/Gadget2/hydro_csds.c
index 236e9cd3b592824444b33c6fd3d0dcd5cda2d350..62b6e6971ab52f849cffa29a0eb462294f27764b 100644
--- a/src/hydro/Gadget2/hydro_logger.c
+++ b/src/hydro/Gadget2/hydro_csds.c
@@ -19,11 +19,11 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "hydro_logger.h"
+#include "hydro_csds.h"
 
-const char *hydro_logger_field_names[hydro_logger_field_count] = {
+const char *hydro_csds_field_names[hydro_csds_field_count] = {
     "Coordinates",      "Velocities", "Accelerations", "Masses",
     "SmoothingLengths", "Entropies",  "ParticleIDs",   "Densities"};
 
diff --git a/src/hydro/Gadget2/hydro_logger.h b/src/hydro/Gadget2/hydro_csds.h
similarity index 56%
rename from src/hydro/Gadget2/hydro_logger.h
rename to src/hydro/Gadget2/hydro_csds.h
index abbdc8552e07b04f2785cf34476836074c40b18f..df39c1c8d3dcc1111644f04acea47cf30a36998b 100644
--- a/src/hydro/Gadget2/hydro_logger.h
+++ b/src/hydro/Gadget2/hydro_csds.h
@@ -16,13 +16,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_GADGET2_HYDRO_LOGGER_H
-#define SWIFT_GADGET2_HYDRO_LOGGER_H
+#ifndef SWIFT_GADGET2_HYDRO_CSDS_H
+#define SWIFT_GADGET2_HYDRO_CSDS_H
 
 /* Include configuration */
 #include "config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /* Include the particles */
 #include "align.h"
@@ -31,79 +31,79 @@
 /* Include the hydro functions */
 #include "hydro.h"
 
-/* Include the logger functions */
-#include "logger_io.h"
+/* Include the csds functions */
+#include "csds_io.h"
 
 /*
  * List of all possible mask.
- * Outside the module, only hydro_logger_field_count is used.
+ * Outside the module, only hydro_csds_field_count is used.
  */
-enum hydro_logger_fields {
-  hydro_logger_field_coordinates = 0,
-  hydro_logger_field_velocities,
-  hydro_logger_field_accelerations,
-  hydro_logger_field_masses,
-  hydro_logger_field_smoothing_lengths,
-  hydro_logger_field_entropies,
-  hydro_logger_field_particle_ids,
-  hydro_logger_field_densities,
-  hydro_logger_field_count,
+enum hydro_csds_fields {
+  hydro_csds_field_coordinates = 0,
+  hydro_csds_field_velocities,
+  hydro_csds_field_accelerations,
+  hydro_csds_field_masses,
+  hydro_csds_field_smoothing_lengths,
+  hydro_csds_field_entropies,
+  hydro_csds_field_particle_ids,
+  hydro_csds_field_densities,
+  hydro_csds_field_count,
 };
 
 /* Name of each possible mask. */
-extern const char *hydro_logger_field_names[hydro_logger_field_count];
+extern const char *hydro_csds_field_names[hydro_csds_field_count];
 
 /**
- * @brief Initialize the logger.
+ * @brief Initialize the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int hydro_logger_writer_populate_mask_data(
+INLINE static int hydro_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  mask_data[hydro_logger_field_coordinates] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_coordinates],
+  mask_data[hydro_csds_field_coordinates] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_coordinates],
       3 * sizeof(double));
 
-  mask_data[hydro_logger_field_velocities] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_velocities],
+  mask_data[hydro_csds_field_velocities] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_velocities],
       3 * sizeof(float));
 
-  mask_data[hydro_logger_field_accelerations] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_accelerations],
+  mask_data[hydro_csds_field_accelerations] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_accelerations],
       3 * sizeof(float));
 
-  mask_data[hydro_logger_field_masses] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_masses], sizeof(float));
+  mask_data[hydro_csds_field_masses] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_masses], sizeof(float));
 
-  mask_data[hydro_logger_field_smoothing_lengths] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_smoothing_lengths],
+  mask_data[hydro_csds_field_smoothing_lengths] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_smoothing_lengths],
       sizeof(float));
 
-  mask_data[hydro_logger_field_entropies] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_entropies], sizeof(float));
+  mask_data[hydro_csds_field_entropies] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_entropies], sizeof(float));
 
-  mask_data[hydro_logger_field_particle_ids] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_particle_ids],
+  mask_data[hydro_csds_field_particle_ids] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_particle_ids],
       sizeof(long long));
 
-  mask_data[hydro_logger_field_densities] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_densities], sizeof(float));
+  mask_data[hydro_csds_field_densities] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_densities], sizeof(float));
 
-  return hydro_logger_field_count;
+  return hydro_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
- * @param masks The list of masks (same order than in #hydro_logger_init).
+ * @param masks The list of masks (same order than in #hydro_csds_init).
  * @param part The #part that will be written.
  * @param xpart The #xpart that will be written.
  * @param write_all Are we forcing to write all the fields?
@@ -111,7 +111,7 @@ INLINE static int hydro_logger_writer_populate_mask_data(
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void hydro_logger_compute_size_and_mask(
+INLINE static void hydro_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct part *part,
     const struct xpart *xpart, const int write_all, size_t *buffer_size,
     unsigned int *mask) {
@@ -119,45 +119,45 @@ INLINE static void hydro_logger_compute_size_and_mask(
   /* Here you can decide your own writing logic */
 
   /* Add the coordinates. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_coordinates],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_coordinates],
                                     buffer_size);
 
   /* Add the velocities. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_velocities],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_velocities],
                                     buffer_size);
 
   /* Add the accelerations. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_accelerations],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_accelerations],
                                     buffer_size);
 
   /* Add the masses. */
   *mask |=
-      logger_add_field_to_mask(masks[hydro_logger_field_masses], buffer_size);
+      csds_add_field_to_mask(masks[hydro_csds_field_masses], buffer_size);
 
   /* Add the smoothing lengths. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_smoothing_lengths],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_smoothing_lengths],
                                     buffer_size);
 
   /* Add the entropies. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_entropies],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_entropies],
                                     buffer_size);
 
   /* Add the ID. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_particle_ids],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_particle_ids],
                                     buffer_size);
 
   /* Add the density. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_densities],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_densities],
                                     buffer_size);
 }
 
 /**
- * @brief Write a particle to the logger.
+ * @brief Write a particle to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
- * @param masks The list of masks (same order than in #hydro_logger_init).
+ * @param masks The list of masks (same order than in #hydro_csds_init).
  * @param p The #part to write.
  * @param xp The #xpart to write.
  * @param mask The mask to use for this record.
@@ -165,26 +165,26 @@ INLINE static void hydro_logger_compute_size_and_mask(
  *
  * @return The buffer after the data.
  */
-INLINE static char *hydro_logger_write_particle(
+INLINE static char *hydro_csds_write_particle(
     const struct mask_data *mask_data, const struct part *p,
     const struct xpart *xp, unsigned int *mask, char *buff) {
 
   /* Write the coordinate. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_coordinates],
+  if (csds_should_write_field(mask_data[hydro_csds_field_coordinates],
                                 mask)) {
     memcpy(buff, p->x, 3 * sizeof(double));
     buff += 3 * sizeof(double);
   }
 
   /* Write the velocity. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_velocities],
+  if (csds_should_write_field(mask_data[hydro_csds_field_velocities],
                                 mask)) {
     memcpy(buff, p->v, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the acceleration. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_accelerations],
+  if (csds_should_write_field(mask_data[hydro_csds_field_accelerations],
                                 mask)) {
 
     /* Compute the acceleration due to hydro and gravity */
@@ -203,34 +203,34 @@ INLINE static char *hydro_logger_write_particle(
   }
 
   /* Write the mass. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_masses], mask)) {
+  if (csds_should_write_field(mask_data[hydro_csds_field_masses], mask)) {
     memcpy(buff, &p->mass, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the smoothing length. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_smoothing_lengths],
+  if (csds_should_write_field(mask_data[hydro_csds_field_smoothing_lengths],
                                 mask)) {
     memcpy(buff, &p->h, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the entropy. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_entropies],
+  if (csds_should_write_field(mask_data[hydro_csds_field_entropies],
                                 mask)) {
     memcpy(buff, &p->entropy, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the Id. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_particle_ids],
+  if (csds_should_write_field(mask_data[hydro_csds_field_particle_ids],
                                 mask)) {
     memcpy(buff, &p->id, sizeof(long long));
     buff += sizeof(long long);
   }
 
   /* Write the density. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_densities],
+  if (csds_should_write_field(mask_data[hydro_csds_field_densities],
                                 mask)) {
     memcpy(buff, &p->rho, sizeof(float));
     buff += sizeof(float);
@@ -239,5 +239,5 @@ INLINE static char *hydro_logger_write_particle(
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_GADGET2_HYDRO_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_GADGET2_HYDRO_CSDS_H
diff --git a/src/hydro/Gadget2/hydro_part.h b/src/hydro/Gadget2/hydro_part.h
index 3509dcf0de99e7008992aa12952ed040f10461de..a165728df894f3a39ff90a47ee0bbc969d6a566c 100644
--- a/src/hydro/Gadget2/hydro_part.h
+++ b/src/hydro/Gadget2/hydro_part.h
@@ -35,7 +35,7 @@
 #include "chemistry_struct.h"
 #include "cooling_struct.h"
 #include "feedback_struct.h"
-#include "logger.h"
+#include "csds.h"
 #include "particle_splitting_struct.h"
 #include "pressure_floor_struct.h"
 #include "rt_struct.h"
@@ -76,9 +76,9 @@ struct xpart {
   /* Additional data used by the feedback */
   struct feedback_xpart_data feedback_data;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
+#ifdef WITH_CSDS
+  /* Additional data for the particle csds */
+  struct csds_part_data csds_data;
 #endif
 
 } SWIFT_STRUCT_ALIGN;
diff --git a/src/hydro/Planetary/hydro_part.h b/src/hydro/Planetary/hydro_part.h
index 2c61d123b589e02b3e5a670277e00f607d692270..b11bcd815dfe69b3f3850bcec5301f7d31ec60ad 100644
--- a/src/hydro/Planetary/hydro_part.h
+++ b/src/hydro/Planetary/hydro_part.h
@@ -38,7 +38,6 @@
 #include "cooling_struct.h"
 #include "equation_of_state.h"  // For enum material_id
 #include "feedback_struct.h"
-#include "logger.h"
 #include "particle_splitting_struct.h"
 #include "rt_struct.h"
 #include "star_formation_struct.h"
@@ -84,10 +83,6 @@ struct xpart {
   /* Additional data used by the feedback */
   struct feedback_part_data feedback_data;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
-#endif
 } SWIFT_STRUCT_ALIGN;
 
 /**
diff --git a/src/hydro/SPHENIX/hydro_logger.c b/src/hydro/SPHENIX/hydro_csds.c
similarity index 90%
rename from src/hydro/SPHENIX/hydro_logger.c
rename to src/hydro/SPHENIX/hydro_csds.c
index d8cd31691bc3658e1ba5b8cd85c6fede13becf2b..467026f4282adcec31ddf91a73678fbca687b047 100644
--- a/src/hydro/SPHENIX/hydro_logger.c
+++ b/src/hydro/SPHENIX/hydro_csds.c
@@ -19,19 +19,19 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /* Include the particles */
 #include "align.h"
 #include "hydro_part.h"
 
 /* Include the header */
-#include "hydro_logger.h"
+#include "hydro_csds.h"
 
-const char *hydro_logger_field_names[hydro_logger_field_count] = {
+const char *hydro_csds_field_names[hydro_csds_field_count] = {
     "Coordinates", "Velocities",       "Accelerations",
     "Masses",      "SmoothingLengths", "InternalEnergies",
     "ParticleIDs", "Densities",        "SecondaryFields",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/hydro/SPHENIX/hydro_logger.h b/src/hydro/SPHENIX/hydro_csds.h
similarity index 58%
rename from src/hydro/SPHENIX/hydro_logger.h
rename to src/hydro/SPHENIX/hydro_csds.h
index 5e646bc7ad1d0ffad6ac274ac77ab0c90524600a..37c0f8a97f1825840fe57c80b8785cc6f084f4d1 100644
--- a/src/hydro/SPHENIX/hydro_logger.h
+++ b/src/hydro/SPHENIX/hydro_csds.h
@@ -16,97 +16,97 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_SPHENIX_HYDRO_LOGGER_H
-#define SWIFT_SPHENIX_HYDRO_LOGGER_H
+#ifndef SWIFT_SPHENIX_HYDRO_CSDS_H
+#define SWIFT_SPHENIX_HYDRO_CSDS_H
 
 /* Other Includes */
 #include "hydro.h"
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only hydro_logger_field_count is used.
+ * Outside the module, only hydro_csds_field_count is used.
  */
-enum hydro_logger_fields {
-  hydro_logger_field_coordinates = 0,
-  hydro_logger_field_velocities,
-  hydro_logger_field_accelerations,
-  hydro_logger_field_masses,
-  hydro_logger_field_smoothing_lengths,
-  hydro_logger_field_internal_energies,
-  hydro_logger_field_particle_ids,
-  hydro_logger_field_densities,
+enum hydro_csds_fields {
+  hydro_csds_field_coordinates = 0,
+  hydro_csds_field_velocities,
+  hydro_csds_field_accelerations,
+  hydro_csds_field_masses,
+  hydro_csds_field_smoothing_lengths,
+  hydro_csds_field_internal_energies,
+  hydro_csds_field_particle_ids,
+  hydro_csds_field_densities,
   /* Due to the low number of masks available,
    * we group the fields together: pressure, entopries,
    * viscosity and diffusion parameters, laplacian of the energy
    * and the velocity divergence along its derivative.
    */
-  hydro_logger_field_secondary_fields,
-  hydro_logger_field_count,
+  hydro_csds_field_secondary_fields,
+  hydro_csds_field_count,
 };
 
 /* Name of each possible mask. */
-extern const char *hydro_logger_field_names[hydro_logger_field_count];
+extern const char *hydro_csds_field_names[hydro_csds_field_count];
 
 /**
- * @brief Initialize the logger.
+ * @brief Initialize the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int hydro_logger_writer_populate_mask_data(
+INLINE static int hydro_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  mask_data[hydro_logger_field_coordinates] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_coordinates],
+  mask_data[hydro_csds_field_coordinates] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_coordinates],
       3 * sizeof(double));
 
-  mask_data[hydro_logger_field_velocities] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_velocities],
+  mask_data[hydro_csds_field_velocities] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_velocities],
       3 * sizeof(float));
 
-  mask_data[hydro_logger_field_accelerations] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_accelerations],
+  mask_data[hydro_csds_field_accelerations] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_accelerations],
       3 * sizeof(float));
 
-  mask_data[hydro_logger_field_masses] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_masses], sizeof(float));
+  mask_data[hydro_csds_field_masses] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_masses], sizeof(float));
 
-  mask_data[hydro_logger_field_smoothing_lengths] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_smoothing_lengths],
+  mask_data[hydro_csds_field_smoothing_lengths] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_smoothing_lengths],
       sizeof(float));
 
-  mask_data[hydro_logger_field_internal_energies] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_internal_energies],
+  mask_data[hydro_csds_field_internal_energies] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_internal_energies],
       sizeof(float));
 
-  mask_data[hydro_logger_field_particle_ids] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_particle_ids],
+  mask_data[hydro_csds_field_particle_ids] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_particle_ids],
       sizeof(long long));
 
-  mask_data[hydro_logger_field_densities] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_densities], sizeof(float));
+  mask_data[hydro_csds_field_densities] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_densities], sizeof(float));
 
   const size_t size_secondary = 7 * sizeof(float);
-  mask_data[hydro_logger_field_secondary_fields] = logger_create_mask_entry(
-      hydro_logger_field_names[hydro_logger_field_secondary_fields],
+  mask_data[hydro_csds_field_secondary_fields] = csds_create_mask_entry(
+      hydro_csds_field_names[hydro_csds_field_secondary_fields],
       size_secondary);
 
-  return hydro_logger_field_count;
+  return hydro_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
- * @param masks The list of masks (same order than in #hydro_logger_init).
+ * @param masks The list of masks (same order than in #hydro_csds_init).
  * @param part The #part that will be written.
  * @param xpart The #xpart that will be written.
  * @param write_all Are we forcing to write all the fields?
@@ -114,7 +114,7 @@ INLINE static int hydro_logger_writer_populate_mask_data(
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void hydro_logger_compute_size_and_mask(
+INLINE static void hydro_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct part *part,
     const struct xpart *xpart, const int write_all, size_t *buffer_size,
     unsigned int *mask) {
@@ -122,49 +122,49 @@ INLINE static void hydro_logger_compute_size_and_mask(
   /* Here you can decide your own writing logic */
 
   /* Add the coordinates. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_coordinates],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_coordinates],
                                     buffer_size);
 
   /* Add the velocities. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_velocities],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_velocities],
                                     buffer_size);
 
   /* Add the accelerations. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_accelerations],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_accelerations],
                                     buffer_size);
 
   /* Add the masses. */
   *mask |=
-      logger_add_field_to_mask(masks[hydro_logger_field_masses], buffer_size);
+      csds_add_field_to_mask(masks[hydro_csds_field_masses], buffer_size);
 
   /* Add the smoothing lengths. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_smoothing_lengths],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_smoothing_lengths],
                                     buffer_size);
 
   /* Add the energies. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_internal_energies],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_internal_energies],
                                     buffer_size);
 
   /* Add the ID. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_particle_ids],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_particle_ids],
                                     buffer_size);
 
   /* Add the density. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_densities],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_densities],
                                     buffer_size);
 
   /* Add the secondary fields. */
-  *mask |= logger_add_field_to_mask(masks[hydro_logger_field_secondary_fields],
+  *mask |= csds_add_field_to_mask(masks[hydro_csds_field_secondary_fields],
                                     buffer_size);
 }
 
 /**
- * @brief Write a particle to the logger.
+ * @brief Write a particle to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields!
+ * #hydro_csds_fields!
  *
- * @param masks The list of masks (same order than in #hydro_logger_init).
+ * @param masks The list of masks (same order than in #hydro_csds_init).
  * @param p The #part to write.
  * @param xp The #xpart to write.
  * @param mask The mask to use for this record.
@@ -172,26 +172,26 @@ INLINE static void hydro_logger_compute_size_and_mask(
  *
  * @return The buffer after the data.
  */
-INLINE static char *hydro_logger_write_particle(
+INLINE static char *hydro_csds_write_particle(
     const struct mask_data *mask_data, const struct part *p,
     const struct xpart *xp, unsigned int *mask, char *buff) {
 
   /* Write the coordinate. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_coordinates],
+  if (csds_should_write_field(mask_data[hydro_csds_field_coordinates],
                                 mask)) {
     memcpy(buff, p->x, 3 * sizeof(double));
     buff += 3 * sizeof(double);
   }
 
   /* Write the velocity. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_velocities],
+  if (csds_should_write_field(mask_data[hydro_csds_field_velocities],
                                 mask)) {
     memcpy(buff, p->v, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the acceleration. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_accelerations],
+  if (csds_should_write_field(mask_data[hydro_csds_field_accelerations],
                                 mask)) {
 
     /* Compute the acceleration due to hydro and gravity */
@@ -210,41 +210,41 @@ INLINE static char *hydro_logger_write_particle(
   }
 
   /* Write the mass. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_masses], mask)) {
+  if (csds_should_write_field(mask_data[hydro_csds_field_masses], mask)) {
     memcpy(buff, &p->mass, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the smoothing length. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_smoothing_lengths],
+  if (csds_should_write_field(mask_data[hydro_csds_field_smoothing_lengths],
                                 mask)) {
     memcpy(buff, &p->h, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the energy. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_internal_energies],
+  if (csds_should_write_field(mask_data[hydro_csds_field_internal_energies],
                                 mask)) {
     memcpy(buff, &p->u, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the Id. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_particle_ids],
+  if (csds_should_write_field(mask_data[hydro_csds_field_particle_ids],
                                 mask)) {
     memcpy(buff, &p->id, sizeof(long long));
     buff += sizeof(long long);
   }
 
   /* Write the density. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_densities],
+  if (csds_should_write_field(mask_data[hydro_csds_field_densities],
                                 mask)) {
     memcpy(buff, &p->rho, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the secondary fields. */
-  if (logger_should_write_field(mask_data[hydro_logger_field_secondary_fields],
+  if (csds_should_write_field(mask_data[hydro_csds_field_secondary_fields],
                                 mask)) {
     const float secondary[7] = {
         hydro_get_comoving_entropy(p, xp),
@@ -263,5 +263,5 @@ INLINE static char *hydro_logger_write_particle(
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_SPHENIX_HYDRO_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_SPHENIX_HYDRO_CSDS_H
diff --git a/src/hydro/SPHENIX/hydro_part.h b/src/hydro/SPHENIX/hydro_part.h
index 36061c06d4e51c90e78801e3e948108f7bf7f9fb..d40e8ee41ea37b22aa96968422bbac0f8851f6eb 100644
--- a/src/hydro/SPHENIX/hydro_part.h
+++ b/src/hydro/SPHENIX/hydro_part.h
@@ -30,7 +30,7 @@
 #include "chemistry_struct.h"
 #include "cooling_struct.h"
 #include "feedback_struct.h"
-#include "logger.h"
+#include "csds.h"
 #include "particle_splitting_struct.h"
 #include "pressure_floor_struct.h"
 #include "rt_struct.h"
@@ -77,9 +77,9 @@ struct xpart {
   /* Additional data used by the feedback */
   struct feedback_xpart_data feedback_data;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
+#ifdef WITH_CSDS
+  /* Additional data for the particle csds */
+  struct csds_part_data csds_data;
 #endif
 
 } SWIFT_STRUCT_ALIGN;
diff --git a/src/hydro_logger.h b/src/hydro_csds.h
similarity index 89%
rename from src/hydro_logger.h
rename to src/hydro_csds.h
index a4fef3617ef6c76fc7bdfcee37ad492392a351ca..06ee61cef5bbe11a1c9ee3e824c9d32003e9ec9f 100644
--- a/src/hydro_logger.h
+++ b/src/hydro_csds.h
@@ -16,15 +16,15 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_HYDRO_LOGGER_H
-#define SWIFT_HYDRO_LOGGER_H
+#ifndef SWIFT_HYDRO_CSDS_H
+#define SWIFT_HYDRO_CSDS_H
 
 /* Config parameters. */
 #include "../config.h"
 
 /* Local includes */
 #include "align.h"
-#include "logger.h"
+#include "csds.h"
 #include "part_type.h"
 #include "timeline.h"
 
@@ -32,7 +32,7 @@
 #if defined(MINIMAL_SPH)
 #error TODO
 #elif defined(GADGET2_SPH)
-#include "./hydro/Gadget2/hydro_logger.h"
+#include "./hydro/Gadget2/hydro_csds.h"
 #elif defined(HOPKINS_PE_SPH)
 #error TODO
 #elif defined(HOPKINS_PU_SPH)
@@ -48,11 +48,11 @@
 #elif defined(PLANETARY_SPH)
 #error TODO
 #elif defined(SPHENIX_SPH)
-#include "./hydro/SPHENIX/hydro_logger.h"
+#include "./hydro/SPHENIX/hydro_csds.h"
 #elif defined(ANARCHY_PU_SPH)
 #error TODO
 #else
 #error "Invalid choice of SPH variant"
 #endif
 
-#endif /* SWIFT_HYDRO_LOGGER_H */
+#endif /* SWIFT_HYDRO_CSDS_H */
diff --git a/src/partition.c b/src/partition.c
index 1d7e397b2f22a98320b03a570b482e441f034b08..e3c3a8086e4772d08383a33469196a575b13fd8e 100644
--- a/src/partition.c
+++ b/src/partition.c
@@ -1402,7 +1402,7 @@ static void partition_gather_weights(void *map_data, int num_elements,
 
     /* Skip un-interesting tasks. */
     if (t->type == task_type_send || t->type == task_type_recv ||
-        t->type == task_type_logger || t->implicit || t->ci == NULL)
+        t->type == task_type_csds || t->implicit || t->ci == NULL)
       continue;
 
     /* Get weight for this task. Either based on fixed costs or task timings. */
@@ -2322,7 +2322,7 @@ static void check_weights(struct task *tasks, int nr_tasks,
 
     /* Skip un-interesting tasks. */
     if (t->type == task_type_send || t->type == task_type_recv ||
-        t->type == task_type_logger || t->implicit || t->ci == NULL)
+        t->type == task_type_csds || t->implicit || t->ci == NULL)
       continue;
 
     /* Get weight for this task. Either based on fixed costs or task timings. */
diff --git a/src/runner.h b/src/runner.h
index 8c71570d9c2e131e3cea2706b7941bab5c2207e4..15cd508c1ca962c10fe18d8829b1b213dccc065c 100644
--- a/src/runner.h
+++ b/src/runner.h
@@ -120,7 +120,7 @@ void runner_do_sync(struct runner *r, struct cell *c, int force, int timer);
 void runner_do_grav_mesh(struct runner *r, struct cell *c, int timer);
 void runner_do_grav_external(struct runner *r, struct cell *c, int timer);
 void runner_do_grav_fft(struct runner *r, int timer);
-void runner_do_logger(struct runner *r, struct cell *c, int timer);
+void runner_do_csds(struct runner *r, struct cell *c, int timer);
 void runner_do_fof_self(struct runner *r, struct cell *c, int timer);
 void runner_do_fof_pair(struct runner *r, struct cell *ci, struct cell *cj,
                         int timer);
diff --git a/src/runner_main.c b/src/runner_main.c
index 988e42b69f29f5b09236d8d32f2b9854b524b3a0..a8f4ee499b2a8383908bf4ef451524b60eaedefe 100644
--- a/src/runner_main.c
+++ b/src/runner_main.c
@@ -494,8 +494,8 @@ void *runner_main(void *data) {
         case task_type_end_grav_force:
           runner_do_end_grav_force(r, ci, 1);
           break;
-        case task_type_logger:
-          runner_do_logger(r, ci, 1);
+        case task_type_csds:
+          runner_do_csds(r, ci, 1);
           break;
         case task_type_timestep:
           runner_do_timestep(r, ci, 1);
diff --git a/src/runner_others.c b/src/runner_others.c
index 8db7033bbafc15d33919f07794af7081d71874b7..d3d62c16cdb7704a10c590d379b0f64c5f82d3f6 100644
--- a/src/runner_others.c
+++ b/src/runner_others.c
@@ -48,8 +48,8 @@
 #include "fof.h"
 #include "gravity.h"
 #include "hydro.h"
-#include "logger.h"
-#include "logger_io.h"
+#include "csds.h"
+#include "csds_io.h"
 #include "pressure_floor.h"
 #include "rt.h"
 #include "space.h"
@@ -242,7 +242,7 @@ void runner_do_star_formation_sink(struct runner *r, struct cell *c,
       /* Only work on active particles */
       if (sink_is_active(s, e)) {
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
         error("TODO");
 #endif
 
@@ -402,12 +402,12 @@ void runner_do_star_formation(struct runner *r, struct cell *c, int timer) {
               } else {
                 /* Convert the gas particle to a star particle */
                 sp = cell_convert_part_to_spart(e, c, p, xp);
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
                 /* Write the particle */
                 /* Logs all the fields request by the user */
                 // TODO select only the requested fields
-                logger_log_part(e->logger, p, xp, e, /* log_all */ 1,
-                                logger_flag_change_type, swift_type_stars);
+                csds_log_part(e->csds, p, xp, e, /* log_all */ 1,
+                                csds_flag_change_type, swift_type_stars);
 #endif
               }
 
@@ -454,18 +454,18 @@ void runner_do_star_formation(struct runner *r, struct cell *c, int timer) {
                 c->hydro.dx_max_sort = max(c->hydro.dx_max_sort, dx_sort);
               }
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
               if (spawn_spart) {
-                /* Set to zero the logger data. */
-                logger_part_data_init(&sp->logger_data);
+                /* Set to zero the csds data. */
+                csds_part_data_init(&sp->csds_data);
               } else {
                 /* Copy the properties back to the stellar particle */
-                sp->logger_data = xp->logger_data;
+                sp->csds_data = xp->csds_data;
               }
 
               /* Write the s-particle */
-              logger_log_spart(e->logger, sp, e, /* log_all */ 1,
-                               logger_flag_create, /* data */ 0);
+              csds_log_spart(e->csds, sp, e, /* log_all */ 1,
+                               csds_flag_create, /* data */ 0);
 #endif
             } else if (swift_star_formation_model_creates_stars) {
 
@@ -580,7 +580,7 @@ void runner_do_sink_formation(struct runner *r, struct cell *c) {
           /* Are we forming a sink particle? */
           if (sink_should_convert_to_sink(p, xp, sink_props, e, dt_sink)) {
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
             error("TODO");
 #endif
 
@@ -824,15 +824,15 @@ void runner_do_end_grav_force(struct runner *r, struct cell *c, int timer) {
 }
 
 /**
- * @brief Write the required particles through the logger.
+ * @brief Write the required particles through the csds.
  *
  * @param r The runner thread.
  * @param c The cell.
  * @param timer Are we timing this ?
  */
-void runner_do_logger(struct runner *r, struct cell *c, int timer) {
+void runner_do_csds(struct runner *r, struct cell *c, int timer) {
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
   TIMER_TIC;
 
   const struct engine *e = r->e;
@@ -845,10 +845,10 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) {
   const int scount = c->stars.count;
 
   if (c->black_holes.count != 0) {
-    error("Black holes are not implemented in the logger.");
+    error("Black holes are not implemented in the csds.");
   }
   if (c->sinks.count != 0) {
-    error("Sink particles are not implemented in the logger.");
+    error("Sink particles are not implemented in the csds.");
   }
 
   /* Anything to do here? */
@@ -859,7 +859,7 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) {
   /* Recurse? Avoid spending too much time in useless cells. */
   if (c->split) {
     for (int k = 0; k < 8; k++)
-      if (c->progeny[k] != NULL) runner_do_logger(r, c->progeny[k], 0);
+      if (c->progeny[k] != NULL) runner_do_csds(r, c->progeny[k], 0);
   } else {
 
     /* Loop over the parts in this cell. */
@@ -872,14 +872,14 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) {
       /* If particle needs to be log */
       if (part_is_active(p, e)) {
 
-        if (logger_should_write(&xp->logger_data, e->logger)) {
+        if (csds_should_write(&xp->csds_data, e->csds)) {
           /* Write particle */
           /* Currently writing everything, should adapt it through time */
-          logger_log_part(e->logger, p, xp, e, /* log_all_fields= */ 0,
-                          logger_flag_none, /* flag_data= */ 0);
+          csds_log_part(e->csds, p, xp, e, /* log_all_fields= */ 0,
+                          csds_flag_none, /* flag_data= */ 0);
         } else
           /* Update counter */
-          xp->logger_data.steps_since_last_output += 1;
+          xp->csds_data.steps_since_last_output += 1;
       }
     }
 
@@ -897,15 +897,15 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) {
       /* If particle needs to be log */
       if (gpart_is_active(gp, e)) {
 
-        if (logger_should_write(&gp->logger_data, e->logger)) {
+        if (csds_should_write(&gp->csds_data, e->csds)) {
           /* Write particle */
           /* Currently writing everything, should adapt it through time */
-          logger_log_gpart(e->logger, gp, e, /* log_all_fields= */ 0,
-                           logger_flag_none, /* flag_data= */ 0);
+          csds_log_gpart(e->csds, gp, e, /* log_all_fields= */ 0,
+                           csds_flag_none, /* flag_data= */ 0);
 
         } else
           /* Update counter */
-          gp->logger_data.steps_since_last_output += 1;
+          gp->csds_data.steps_since_last_output += 1;
       }
     }
 
@@ -918,22 +918,22 @@ void runner_do_logger(struct runner *r, struct cell *c, int timer) {
       /* If particle needs to be log */
       if (spart_is_active(sp, e)) {
 
-        if (logger_should_write(&sp->logger_data, e->logger)) {
+        if (csds_should_write(&sp->csds_data, e->csds)) {
           /* Write particle */
           /* Currently writing everything, should adapt it through time */
-          logger_log_spart(e->logger, sp, e, /* Log_all_fields= */ 0,
-                           logger_flag_none, /* flag_data= */ 0);
+          csds_log_spart(e->csds, sp, e, /* Log_all_fields= */ 0,
+                           csds_flag_none, /* flag_data= */ 0);
         } else
           /* Update counter */
-          sp->logger_data.steps_since_last_output += 1;
+          sp->csds_data.steps_since_last_output += 1;
       }
     }
   }
 
-  if (timer) TIMER_TOC(timer_logger);
+  if (timer) TIMER_TOC(timer_csds);
 
 #else
-  error("Logger disabled, please enable it during configuration");
+  error("CSDS disabled, please enable it during configuration");
 #endif
 }
 
diff --git a/src/scheduler.c b/src/scheduler.c
index 8a570ce345285f60c0a6a94d9d31ca6d2287270d..a8ac330676b31eb6d476670718bed83ed421d9bd 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -2018,7 +2018,7 @@ void scheduler_enqueue(struct scheduler *s, struct task *t) {
       case task_type_kick1:
       case task_type_kick2:
       case task_type_stars_ghost:
-      case task_type_logger:
+      case task_type_csds:
       case task_type_stars_sort:
       case task_type_timestep:
         qid = t->ci->super->owner;
diff --git a/src/space_first_init.c b/src/space_first_init.c
index 2af63445d47217acdf4b744dc6c23a77150b9351..27943be6ea82e3b7102a5dfb17044ab42ceb6d59 100644
--- a/src/space_first_init.c
+++ b/src/space_first_init.c
@@ -112,8 +112,8 @@ void space_first_init_parts_mapper(void *restrict map_data, int count,
     p[k].limiter_data.wakeup = time_bin_not_awake;
     p[k].limiter_data.to_be_synchronized = 0;
 
-#ifdef WITH_LOGGER
-    logger_part_data_init(&xp[k].logger_data);
+#ifdef WITH_CSDS
+    csds_part_data_init(&xp[k].csds_data);
 #endif
 
     /* Also initialise the chemistry */
@@ -210,8 +210,8 @@ void space_first_init_gparts_mapper(void *restrict map_data, int count,
     if (gp[k].type == swift_type_neutrino)
       gravity_first_init_neutrino(&gp[k], s->e);
 
-#ifdef WITH_LOGGER
-    logger_part_data_init(&gp[k].logger_data);
+#ifdef WITH_CSDS
+    csds_part_data_init(&gp[k].csds_data);
 #endif
 
 #ifdef SWIFT_DEBUG_CHECKS
@@ -299,8 +299,8 @@ void space_first_init_sparts_mapper(void *restrict map_data, int count,
     stars_first_init_spart(&sp[k], stars_properties, with_cosmology, cosmo->a,
                            e->time);
 
-#ifdef WITH_LOGGER
-    logger_part_data_init(&sp[k].logger_data);
+#ifdef WITH_CSDS
+    csds_part_data_init(&sp[k].csds_data);
 #endif
 
     /* Also initialise the chemistry */
diff --git a/src/star_formation/GEAR/star_formation_particle_logger.c b/src/star_formation/GEAR/star_formation_csds.c
similarity index 86%
rename from src/star_formation/GEAR/star_formation_particle_logger.c
rename to src/star_formation/GEAR/star_formation_csds.c
index 506d7004b7b0bf9ca9582712c3ee38ff02cc76a3..b71cc60734aa11b7933eeb7948ac92404771b819 100644
--- a/src/star_formation/GEAR/star_formation_particle_logger.c
+++ b/src/star_formation/GEAR/star_formation_csds.c
@@ -19,14 +19,14 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "star_formation_particle_logger.h"
+#include "star_formation_csds.h"
 
 /* Name of each possible mask. */
 const char
-    *star_formation_logger_field_names[star_formation_logger_field_count] = {
+    *star_formation_csds_field_names[star_formation_csds_field_count] = {
         "StarFormation",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/star_formation/GEAR/star_formation_particle_logger.h b/src/star_formation/GEAR/star_formation_csds.h
similarity index 67%
rename from src/star_formation/GEAR/star_formation_particle_logger.h
rename to src/star_formation/GEAR/star_formation_csds.h
index 938d6cbbdffa7398f3863251944a14fc186669b1..c0096b585eab95efe57cd512337e795e25638421 100644
--- a/src/star_formation/GEAR/star_formation_particle_logger.h
+++ b/src/star_formation/GEAR/star_formation_csds.h
@@ -16,87 +16,87 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_STAR_FORMATION_GEAR_STAR_FORMATION_PARTICLE_LOGGER_H
-#define SWIFT_STAR_FORMATION_GEAR_STAR_FORMATION_PARTICLE_LOGGER_H
+#ifndef SWIFT_STAR_FORMATION_GEAR_STAR_FORMATION_CSDS_H
+#define SWIFT_STAR_FORMATION_GEAR_STAR_FORMATION_CSDS_H
 
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only star_formation_logger_field_count is used.
+ * Outside the module, only star_formation_csds_field_count is used.
  */
-enum star_formation_logger_fields_spart {
-  star_formation_logger_field_all = 0,
-  star_formation_logger_field_count,
+enum star_formation_csds_fields_spart {
+  star_formation_csds_field_all = 0,
+  star_formation_csds_field_count,
 };
 
 /* Name of each possible mask. */
 extern const char
-    *star_formation_logger_field_names[star_formation_logger_field_count];
+    *star_formation_csds_field_names[star_formation_csds_field_count];
 
 /**
- * @brief Initialize the logger for the #spart.
+ * @brief Initialize the csds for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #star_formation_logger_fields_spart!
+ * #star_formation_csds_fields_spart!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int star_formation_logger_writer_populate_mask_data(
+INLINE static int star_formation_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
   /* We store the birth density, mass and progenitor id. */
-  mask_data[star_formation_logger_field_all] = logger_create_mask_entry(
-      star_formation_logger_field_names[star_formation_logger_field_all],
+  mask_data[star_formation_csds_field_all] = csds_create_mask_entry(
+      star_formation_csds_field_names[star_formation_csds_field_all],
       2 * sizeof(float) + sizeof(long long));
 
-  return star_formation_logger_field_count;
+  return star_formation_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #star_formation_logger_fields_spart!
+ * #star_formation_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #star_formation_logger_writer_populate_mask_data_spart).
+ * #star_formation_csds_writer_populate_mask_data_spart).
  * @param spart The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void star_formation_logger_compute_size_and_mask(
+INLINE static void star_formation_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct spart *spart,
     const int write_all, size_t *buffer_size, unsigned int *mask) {
   /* Add the star formation. */
-  *mask |= logger_add_field_to_mask(masks[star_formation_logger_field_all],
+  *mask |= csds_add_field_to_mask(masks[star_formation_csds_field_all],
                                     buffer_size);
 }
 
 /**
- * @brief Write a #spart to the logger.
+ * @brief Write a #spart to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_spart!
+ * #hydro_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #star_formation_logger_writer_populate_mask_data_spart).
+ * #star_formation_csds_writer_populate_mask_data_spart).
  * @param sp The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *star_formation_logger_write_sparticle(
+INLINE static char *star_formation_csds_write_sparticle(
     const struct mask_data *mask_data, const struct spart *sp,
     unsigned int *mask, char *buff) {
   /* Write the star formation. */
-  if (logger_should_write_field(mask_data[star_formation_logger_field_all],
+  if (csds_should_write_field(mask_data[star_formation_csds_field_all],
                                 mask)) {
 
     /* Write the birth density */
@@ -114,5 +114,5 @@ INLINE static char *star_formation_logger_write_sparticle(
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_PARTICLE_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_CSDS_H
diff --git a/src/star_formation/none/star_formation_particle_logger.c b/src/star_formation/none/star_formation_csds.c
similarity index 85%
rename from src/star_formation/none/star_formation_particle_logger.c
rename to src/star_formation/none/star_formation_csds.c
index a48f7d9e9a0989c0f6a92b1bd6ae42c45a2192e8..f7bbf9a5d8530dfb5e3dcb9843de4340bea5376e 100644
--- a/src/star_formation/none/star_formation_particle_logger.c
+++ b/src/star_formation/none/star_formation_csds.c
@@ -19,11 +19,11 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "star_formation_particle_logger.h"
+#include "star_formation_csds.h"
 
 const char
-    *star_formation_logger_field_names[star_formation_logger_field_count] = {};
+    *star_formation_csds_field_names[star_formation_csds_field_count] = {};
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/star_formation/none/star_formation_particle_logger.h b/src/star_formation/none/star_formation_csds.h
similarity index 67%
rename from src/star_formation/none/star_formation_particle_logger.h
rename to src/star_formation/none/star_formation_csds.h
index b69df66d3d33a4dbf290cce1fd14af841ecbd2ed..625328cd38a87ca30c06e3c02c0ea60bfa129061 100644
--- a/src/star_formation/none/star_formation_particle_logger.h
+++ b/src/star_formation/none/star_formation_csds.h
@@ -16,77 +16,77 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_PARTICLE_LOGGER_H
-#define SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_PARTICLE_LOGGER_H
+#ifndef SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_CSDS_H
+#define SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_CSDS_H
 
-#include "logger_io.h"
+#include "csds_io.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
 /*
  * List of all possible mask.
- * Outside the module, only star_formation_logger_field_count is used.
+ * Outside the module, only star_formation_csds_field_count is used.
  */
-enum star_formation_logger_fields_spart {
-  star_formation_logger_field_count = 0,
+enum star_formation_csds_fields_spart {
+  star_formation_csds_field_count = 0,
 };
 
 /* Name of each possible mask. */
 extern const char
-    *star_formation_logger_field_names[star_formation_logger_field_count];
+    *star_formation_csds_field_names[star_formation_csds_field_count];
 
 /**
- * @brief Initialize the logger for the #spart.
+ * @brief Initialize the csds for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #star_formation_logger_fields_spart!
+ * #star_formation_csds_fields_spart!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int star_formation_logger_writer_populate_mask_data(
+INLINE static int star_formation_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  return star_formation_logger_field_count;
+  return star_formation_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record for the #spart.
  *
  * WARNING: The order should be the same in all the functions and
- * #star_formation_logger_fields_spart!
+ * #star_formation_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #star_formation_logger_writer_populate_mask_data_spart).
+ * #star_formation_csds_writer_populate_mask_data_spart).
  * @param spart The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void star_formation_logger_compute_size_and_mask(
+INLINE static void star_formation_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct spart *spart,
     const int write_all, size_t *buffer_size, unsigned int *mask) {}
 
 /**
- * @brief Write a #spart to the logger.
+ * @brief Write a #spart to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #hydro_logger_fields_spart!
+ * #hydro_csds_fields_spart!
  *
  * @param masks The list of masks (same order than in
- * #star_formation_logger_writer_populate_mask_data_spart).
+ * #star_formation_csds_writer_populate_mask_data_spart).
  * @param sp The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *star_formation_logger_write_sparticle(
+INLINE static char *star_formation_csds_write_sparticle(
     const struct mask_data *mask_data, const struct spart *sp,
     unsigned int *mask, char *buff) {
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_PARTICLE_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_STAR_FORMATION_NONE_STAR_FORMATION_CSDS_H
diff --git a/src/star_formation_particle_logger.h b/src/star_formation_csds.h
similarity index 81%
rename from src/star_formation_particle_logger.h
rename to src/star_formation_csds.h
index a3ced362d0c1e3700ad98ba8afc93c06428931f2..e0db074748f895073be77d5248953b3deebb5363 100644
--- a/src/star_formation_particle_logger.h
+++ b/src/star_formation_csds.h
@@ -16,29 +16,29 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_STAR_FORMATION_PARTICLE_LOGGER_H
-#define SWIFT_STAR_FORMATION_PARTICLE_LOGGER_H
+#ifndef SWIFT_STAR_FORMATION_PARTICLE_CSDS_H
+#define SWIFT_STAR_FORMATION_PARTICLE_CSDS_H
 
 /* Config parameters. */
 #include "../config.h"
 
 /* Local includes */
 #include "align.h"
-#include "logger.h"
+#include "csds.h"
 #include "part_type.h"
 #include "timeline.h"
 
 /* Import the right function */
 #if defined(STAR_FORMATION_NONE)
-#include "./star_formation/none/star_formation_particle_logger.h"
+#include "./star_formation/none/star_formation_csds.h"
 #elif defined(STAR_FORMATION_QLA)
 #error TODO
 #elif defined(STAR_FORMATION_EAGLE)
 #error TODO
 #elif defined(STAR_FORMATION_GEAR)
-#include "./star_formation/GEAR/star_formation_particle_logger.h"
+#include "./star_formation/GEAR/star_formation_csds.h"
 #else
 #error "Invalid choice of star formation law"
 #endif
 
-#endif /* SWIFT_STAR_FORMATION_PARTICLE_LOGGER_H */
+#endif /* SWIFT_STAR_FORMATION_PARTICLE_CSDS_H */
diff --git a/src/stars/Basic/stars_logger.c b/src/stars/Basic/stars_csds.c
similarity index 88%
rename from src/stars/Basic/stars_logger.c
rename to src/stars/Basic/stars_csds.c
index f84360e740be2697e1861f26823f7b1ee36d63c4..273e30c05476aa84bd67c51a2e865ee80ddc5304 100644
--- a/src/stars/Basic/stars_logger.c
+++ b/src/stars/Basic/stars_csds.c
@@ -19,13 +19,13 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "stars_logger.h"
+#include "stars_csds.h"
 
-const char *stars_logger_field_names[stars_logger_field_count] = {
+const char *stars_csds_field_names[stars_csds_field_count] = {
     "Coordinates", "Velocities",       "Accelerations",
     "Masses",      "SmoothingLengths", "ParticleIDs",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/stars/Basic/stars_logger.h b/src/stars/Basic/stars_csds.h
similarity index 55%
rename from src/stars/Basic/stars_logger.h
rename to src/stars/Basic/stars_csds.h
index 00a2ce6987d5acd1a91ddfcfec63889b731eec79..4fe0c64808edf9aa9705389f1718e646368c61dc 100644
--- a/src/stars/Basic/stars_logger.h
+++ b/src/stars/Basic/stars_csds.h
@@ -16,165 +16,165 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_BASIC_STARS_LOGGER_H
-#define SWIFT_BASIC_STARS_LOGGER_H
+#ifndef SWIFT_BASIC_STARS_CSDS_H
+#define SWIFT_BASIC_STARS_CSDS_H
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "logger_io.h"
+#include "csds_io.h"
 
 /*
  * List of all possible mask.
- * Outside the module, only stars_logger_field_count is used.
+ * Outside the module, only stars_csds_field_count is used.
  */
-enum stars_logger_fields {
-  stars_logger_field_coordinates = 0,
-  stars_logger_field_velocities,
-  stars_logger_field_accelerations,
-  stars_logger_field_masses,
-  stars_logger_field_smoothing_lengths,
-  stars_logger_field_particle_ids,
-  stars_logger_field_count,
+enum stars_csds_fields {
+  stars_csds_field_coordinates = 0,
+  stars_csds_field_velocities,
+  stars_csds_field_accelerations,
+  stars_csds_field_masses,
+  stars_csds_field_smoothing_lengths,
+  stars_csds_field_particle_ids,
+  stars_csds_field_count,
 };
 
 /* Name of each possible mask. */
-extern const char *stars_logger_field_names[stars_logger_field_count];
+extern const char *stars_csds_field_names[stars_csds_field_count];
 
 /**
- * @brief Initialize the logger.
+ * @brief Initialize the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int stars_logger_writer_populate_mask_data(
+INLINE static int stars_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  mask_data[stars_logger_field_coordinates] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_coordinates],
+  mask_data[stars_csds_field_coordinates] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_coordinates],
       3 * sizeof(double));
 
-  mask_data[stars_logger_field_velocities] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_velocities],
+  mask_data[stars_csds_field_velocities] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_velocities],
       3 * sizeof(float));
 
-  mask_data[stars_logger_field_accelerations] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_accelerations],
+  mask_data[stars_csds_field_accelerations] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_accelerations],
       3 * sizeof(float));
 
-  mask_data[stars_logger_field_masses] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_masses], sizeof(float));
+  mask_data[stars_csds_field_masses] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_masses], sizeof(float));
 
-  mask_data[stars_logger_field_smoothing_lengths] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_smoothing_lengths],
+  mask_data[stars_csds_field_smoothing_lengths] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_smoothing_lengths],
       sizeof(float));
 
-  mask_data[stars_logger_field_particle_ids] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_particle_ids],
+  mask_data[stars_csds_field_particle_ids] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_particle_ids],
       sizeof(long long));
 
-  return stars_logger_field_count;
+  return stars_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
- * @param masks The list of masks (same order than in #stars_logger_init).
+ * @param masks The list of masks (same order than in #stars_csds_init).
  * @param part The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void stars_logger_compute_size_and_mask(
+INLINE static void stars_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct spart *part,
     const int write_all, size_t *buffer_size, unsigned int *mask) {
 
   /* Here you can decide your own writing logic */
 
   /* Add the coordinates. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_coordinates],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_coordinates],
                                     buffer_size);
 
   /* Add the velocities. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_velocities],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_velocities],
                                     buffer_size);
 
   /* Add the accelerations. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_accelerations],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_accelerations],
                                     buffer_size);
 
   /* Add the masses. */
   *mask |=
-      logger_add_field_to_mask(masks[stars_logger_field_masses], buffer_size);
+      csds_add_field_to_mask(masks[stars_csds_field_masses], buffer_size);
 
   /* Add the smoothing lengths. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_smoothing_lengths],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_smoothing_lengths],
                                     buffer_size);
 
   /* Add the ID. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_particle_ids],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_particle_ids],
                                     buffer_size);
 }
 
 /**
- * @brief Write a particle to the logger.
+ * @brief Write a particle to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
- * @param masks The list of masks (same order than in #stars_logger_init).
+ * @param masks The list of masks (same order than in #stars_csds_init).
  * @param p The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *stars_logger_write_particle(
+INLINE static char *stars_csds_write_particle(
     const struct mask_data *mask_data, const struct spart *p,
     unsigned int *mask, char *buff) {
 
   /* Write the coordinate. */
-  if (logger_should_write_field(mask_data[stars_logger_field_coordinates],
+  if (csds_should_write_field(mask_data[stars_csds_field_coordinates],
                                 mask)) {
     memcpy(buff, p->x, 3 * sizeof(double));
     buff += 3 * sizeof(double);
   }
 
   /* Write the velocity. */
-  if (logger_should_write_field(mask_data[stars_logger_field_velocities],
+  if (csds_should_write_field(mask_data[stars_csds_field_velocities],
                                 mask)) {
     memcpy(buff, p->v, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the acceleration. */
-  if (logger_should_write_field(mask_data[stars_logger_field_accelerations],
+  if (csds_should_write_field(mask_data[stars_csds_field_accelerations],
                                 mask)) {
     memcpy(buff, p->gpart->a_grav, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the mass. */
-  if (logger_should_write_field(mask_data[stars_logger_field_masses], mask)) {
+  if (csds_should_write_field(mask_data[stars_csds_field_masses], mask)) {
     memcpy(buff, &p->mass, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the smoothing length. */
-  if (logger_should_write_field(mask_data[stars_logger_field_smoothing_lengths],
+  if (csds_should_write_field(mask_data[stars_csds_field_smoothing_lengths],
                                 mask)) {
     memcpy(buff, &p->h, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the Id. */
-  if (logger_should_write_field(mask_data[stars_logger_field_particle_ids],
+  if (csds_should_write_field(mask_data[stars_csds_field_particle_ids],
                                 mask)) {
     memcpy(buff, &p->id, sizeof(long long));
     buff += sizeof(long long);
@@ -183,5 +183,5 @@ INLINE static char *stars_logger_write_particle(
   return buff;
 }
 
-#endif /* WITH_LOGGER */
-#endif /* SWIFT_BASIC_STARS_LOGGER_H */
+#endif /* WITH_CSDS */
+#endif /* SWIFT_BASIC_STARS_CSDS_H */
diff --git a/src/stars/Basic/stars_part.h b/src/stars/Basic/stars_part.h
index 7ecd4e7425121a34ce549ac6364d454426389a1b..b023d8205a5694bcc641211f088d5d7ae867a5a1 100644
--- a/src/stars/Basic/stars_part.h
+++ b/src/stars/Basic/stars_part.h
@@ -99,9 +99,9 @@ struct spart {
   /*! Radiative Transfer data */
   struct rt_spart_data rt_data;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
+#ifdef WITH_CSDS
+  /* Additional data for the particle csds */
+  struct csds_part_data csds_data;
 #endif
 
 #ifdef SWIFT_DEBUG_CHECKS
diff --git a/src/stars/EAGLE/stars_part.h b/src/stars/EAGLE/stars_part.h
index 4aaac428892e0e4317bf417fcb411bfa096347a3..82c0ee898aad1462b6f4e57d0bec49ff128872f6 100644
--- a/src/stars/EAGLE/stars_part.h
+++ b/src/stars/EAGLE/stars_part.h
@@ -127,11 +127,6 @@ struct spart {
   /*! Number of time-steps since the last enrichment step */
   char count_since_last_enrichment;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
-#endif
-
 #ifdef SWIFT_DEBUG_CHECKS
 
   /* Time of the last drift */
diff --git a/src/stars/GEAR/stars_logger.c b/src/stars/GEAR/stars_csds.c
similarity index 88%
rename from src/stars/GEAR/stars_logger.c
rename to src/stars/GEAR/stars_csds.c
index e12875bd3582f1fbe915355f039acbd8b4250448..b33d1a1a593ec02ecec415ff40cad5fe6488f66f 100644
--- a/src/stars/GEAR/stars_logger.c
+++ b/src/stars/GEAR/stars_csds.c
@@ -19,13 +19,13 @@
 
 #include "../config.h"
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "stars_logger.h"
+#include "stars_csds.h"
 
-const char *stars_logger_field_names[stars_logger_field_count] = {
+const char *stars_csds_field_names[stars_csds_field_count] = {
     "Coordinates",      "Velocities",  "Accelerations",     "Masses",
     "SmoothingLengths", "ParticleIDs", "BirthScaleFactors",
 };
 
-#endif  // WITH_LOGGER
+#endif  // WITH_CSDS
diff --git a/src/stars/GEAR/stars_logger.h b/src/stars/GEAR/stars_csds.h
similarity index 53%
rename from src/stars/GEAR/stars_logger.h
rename to src/stars/GEAR/stars_csds.h
index 365505c50c9278a1efec3f248231f97c14d971d5..8f1cae97c0c1c1f01b7929499520648c0de08a3e 100644
--- a/src/stars/GEAR/stars_logger.h
+++ b/src/stars/GEAR/stars_csds.h
@@ -16,182 +16,182 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_DEFAULT_STARS_LOGGER_H
-#define SWIFT_DEFAULT_STARS_LOGGER_H
+#ifndef SWIFT_DEFAULT_STARS_CSDS_H
+#define SWIFT_DEFAULT_STARS_CSDS_H
 
-#ifdef WITH_LOGGER
+#ifdef WITH_CSDS
 
-#include "logger_io.h"
+#include "csds_io.h"
 
 /*
  * List of all possible mask.
- * Outside the module, only stars_logger_field_count is used.
+ * Outside the module, only stars_csds_field_count is used.
  */
-enum stars_logger_fields {
-  stars_logger_field_coordinates = 0,
-  stars_logger_field_velocities,
-  stars_logger_field_accelerations,
-  stars_logger_field_masses,
-  stars_logger_field_smoothing_lengths,
-  stars_logger_field_particle_ids,
-  stars_logger_field_birth_scale_factors,
-  stars_logger_field_count,
+enum stars_csds_fields {
+  stars_csds_field_coordinates = 0,
+  stars_csds_field_velocities,
+  stars_csds_field_accelerations,
+  stars_csds_field_masses,
+  stars_csds_field_smoothing_lengths,
+  stars_csds_field_particle_ids,
+  stars_csds_field_birth_scale_factors,
+  stars_csds_field_count,
 };
 
 /* Name of each possible mask. */
-extern const char *stars_logger_field_names[stars_logger_field_count];
+extern const char *stars_csds_field_names[stars_csds_field_count];
 
 /**
- * @brief Initialize the logger.
+ * @brief Initialize the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
  * @param mask_data Data for each type of mask.
  *
  * @return Number of masks used.
  */
-INLINE static int stars_logger_writer_populate_mask_data(
+INLINE static int stars_csds_writer_populate_mask_data(
     struct mask_data *mask_data) {
-  mask_data[stars_logger_field_coordinates] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_coordinates],
+  mask_data[stars_csds_field_coordinates] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_coordinates],
       3 * sizeof(double));
 
-  mask_data[stars_logger_field_velocities] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_velocities],
+  mask_data[stars_csds_field_velocities] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_velocities],
       3 * sizeof(float));
 
-  mask_data[stars_logger_field_accelerations] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_accelerations],
+  mask_data[stars_csds_field_accelerations] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_accelerations],
       3 * sizeof(float));
 
-  mask_data[stars_logger_field_masses] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_masses], sizeof(float));
+  mask_data[stars_csds_field_masses] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_masses], sizeof(float));
 
-  mask_data[stars_logger_field_smoothing_lengths] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_smoothing_lengths],
+  mask_data[stars_csds_field_smoothing_lengths] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_smoothing_lengths],
       sizeof(float));
 
-  mask_data[stars_logger_field_particle_ids] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_particle_ids],
+  mask_data[stars_csds_field_particle_ids] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_particle_ids],
       sizeof(long long));
 
-  mask_data[stars_logger_field_birth_scale_factors] = logger_create_mask_entry(
-      stars_logger_field_names[stars_logger_field_birth_scale_factors],
+  mask_data[stars_csds_field_birth_scale_factors] = csds_create_mask_entry(
+      stars_csds_field_names[stars_csds_field_birth_scale_factors],
       sizeof(float));
 
-  return stars_logger_field_count;
+  return stars_csds_field_count;
 }
 
 /**
  * @brief Generates the mask and compute the size of the record.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
- * @param masks The list of masks (same order than in #stars_logger_init).
+ * @param masks The list of masks (same order than in #stars_csds_init).
  * @param part The #spart that will be written.
  * @param write_all Are we forcing to write all the fields?
  *
  * @param buffer_size (out) The requested size for the buffer.
  * @param mask (out) The mask that will be written.
  */
-INLINE static void stars_logger_compute_size_and_mask(
+INLINE static void stars_csds_compute_size_and_mask(
     const struct mask_data *masks, const struct spart *part,
     const int write_all, size_t *buffer_size, unsigned int *mask) {
 
   /* Here you can decide your own writing logic */
 
   /* Add the coordinates. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_coordinates],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_coordinates],
                                     buffer_size);
 
   /* Add the velocities. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_velocities],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_velocities],
                                     buffer_size);
 
   /* Add the accelerations. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_accelerations],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_accelerations],
                                     buffer_size);
 
   /* Add the masses. */
   *mask |=
-      logger_add_field_to_mask(masks[stars_logger_field_masses], buffer_size);
+      csds_add_field_to_mask(masks[stars_csds_field_masses], buffer_size);
 
   /* Add the smoothing lengths. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_smoothing_lengths],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_smoothing_lengths],
                                     buffer_size);
 
   /* Add the ID. */
-  *mask |= logger_add_field_to_mask(masks[stars_logger_field_particle_ids],
+  *mask |= csds_add_field_to_mask(masks[stars_csds_field_particle_ids],
                                     buffer_size);
 
   /* Add the birth scale factor. */
-  *mask |= logger_add_field_to_mask(
-      masks[stars_logger_field_birth_scale_factors], buffer_size);
+  *mask |= csds_add_field_to_mask(
+      masks[stars_csds_field_birth_scale_factors], buffer_size);
 }
 
 /**
- * @brief Write a particle to the logger.
+ * @brief Write a particle to the csds.
  *
  * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
+ * #stars_csds_fields!
  *
- * @param masks The list of masks (same order than in #stars_logger_init).
+ * @param masks The list of masks (same order than in #stars_csds_init).
  * @param p The #spart to write.
  * @param mask The mask to use for this record.
  * @param buff The buffer where to write the particle.
  *
  * @return The buffer after the data.
  */
-INLINE static char *stars_logger_write_particle(
+INLINE static char *stars_csds_write_particle(
     const struct mask_data *mask_data, const struct spart *p,
     unsigned int *mask, char *buff) {
 
   /* Write the coordinate. */
-  if (logger_should_write_field(mask_data[stars_logger_field_coordinates],
+  if (csds_should_write_field(mask_data[stars_csds_field_coordinates],
                                 mask)) {
     memcpy(buff, p->x, 3 * sizeof(double));
     buff += 3 * sizeof(double);
   }
 
   /* Write the velocity. */
-  if (logger_should_write_field(mask_data[stars_logger_field_velocities],
+  if (csds_should_write_field(mask_data[stars_csds_field_velocities],
                                 mask)) {
     memcpy(buff, p->v, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the acceleration. */
-  if (logger_should_write_field(mask_data[stars_logger_field_accelerations],
+  if (csds_should_write_field(mask_data[stars_csds_field_accelerations],
                                 mask)) {
     memcpy(buff, p->gpart->a_grav, 3 * sizeof(float));
     buff += 3 * sizeof(float);
   }
 
   /* Write the mass. */
-  if (logger_should_write_field(mask_data[stars_logger_field_masses], mask)) {
+  if (csds_should_write_field(mask_data[stars_csds_field_masses], mask)) {
     memcpy(buff, &p->mass, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the smoothing length. */
-  if (logger_should_write_field(mask_data[stars_logger_field_smoothing_lengths],
+  if (csds_should_write_field(mask_data[stars_csds_field_smoothing_lengths],
                                 mask)) {
     memcpy(buff, &p->h, sizeof(float));
     buff += sizeof(float);
   }
 
   /* Write the Id. */
-  if (logger_should_write_field(mask_data[stars_logger_field_particle_ids],
+  if (csds_should_write_field(mask_data[stars_csds_field_particle_ids],
                                 mask)) {
     memcpy(buff, &p->id, sizeof(long long));
     buff += sizeof(long long);
   }
 
   /* Write the birth scale factor. */
-  if (logger_should_write_field(
-          mask_data[stars_logger_field_birth_scale_factors], mask)) {
+  if (csds_should_write_field(
+          mask_data[stars_csds_field_birth_scale_factors], mask)) {
     memcpy(buff, &p->birth_scale_factor, sizeof(float));
     buff += sizeof(float);
   }
@@ -199,5 +199,5 @@ INLINE static char *stars_logger_write_particle(
   return buff;
 }
 
-#endif  // WITH_LOGGER
-#endif  // SWIFT_DEFAULT_STARS_LOGGER_H
+#endif  // WITH_CSDS
+#endif  // SWIFT_DEFAULT_STARS_CSDS_H
diff --git a/src/stars/GEAR/stars_part.h b/src/stars/GEAR/stars_part.h
index ca3e56419c08a622bb97ff0ee06183772bd2bb41..cbca5a11c158c095738aaf3696cec197ec297c4a 100644
--- a/src/stars/GEAR/stars_part.h
+++ b/src/stars/GEAR/stars_part.h
@@ -96,9 +96,9 @@ struct spart {
   /*! Splitting structure */
   struct particle_splitting_data split_data;
 
-#ifdef WITH_LOGGER
-  /* Additional data for the particle logger */
-  struct logger_part_data logger_data;
+#ifdef WITH_CSDS
+  /* Additional data for the particle csds */
+  struct csds_part_data csds_data;
 #endif
 
   /*! Radiative Transfer data */
diff --git a/src/stars/None/stars_logger.h b/src/stars/None/stars_logger.h
deleted file mode 100644
index 3bf22fb62da6985bbef7affd8ca187c1eafddadb..0000000000000000000000000000000000000000
--- a/src/stars/None/stars_logger.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * This file is part of SWIFT.
- * Coypright (c) 2020 Loic Hausammann (loic.hausammann@epfl.ch)
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published
- * by the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- ******************************************************************************/
-#ifndef SWIFT_NONE_STARS_LOGGER_H
-#define SWIFT_NONE_STARS_LOGGER_H
-
-#ifdef WITH_LOGGER
-
-#include "logger_io.h"
-
-/**
- * List of all possible mask.
- * Outside the module, only stars_logger_field_count is used.
- */
-enum stars_logger_fields {
-  stars_logger_field_count,
-};
-
-/* Name of each possible mask. */
-extern const char *stars_logger_field_names[stars_logger_field_count];
-
-/**
- * @brief Initialize the logger.
- *
- * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
- *
- * @param mask_data Data for each type of mask.
- *
- * @return Number of masks used.
- */
-INLINE static int stars_logger_writer_populate_mask_data(
-    struct mask_data *mask_data) {
-  return 0;
-}
-
-/**
- * @brief Generates the mask and compute the size of the record.
- *
- * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
- *
- * @param masks The list of masks (same order than in #stars_logger_init).
- * @param part The #spart that will be written.
- * @param write_all Are we forcing to write all the fields?
- *
- * @param buffer_size (out) The requested size for the buffer.
- * @param mask (out) The mask that will be written.
- */
-INLINE static void stars_logger_compute_size_and_mask(
-    const struct mask_data *masks, const struct spart *part,
-    const int write_all, size_t *buffer_size, unsigned int *mask) {}
-
-/**
- * @brief Write a particle to the logger.
- *
- * WARNING: The order should be the same in all the functions and
- * #stars_logger_fields!
- *
- * @param masks The list of masks (same order than in #stars_logger_init).
- * @param p The #spart to write.
- * @param mask The mask to use for this record.
- * @param buff The buffer where to write the particle.
- *
- * @return The buffer after the data.
- */
-INLINE static char *stars_logger_write_particle(
-    const struct mask_data *mask_data, const struct spart *p,
-    unsigned int *mask, char *buff) {
-  return NULL;
-}
-
-#endif /* WITH_LOGGER */
-#endif /* SWIFT_NONE_STARS_LOGGER_H */
diff --git a/src/stars_logger.h b/src/stars_csds.h
similarity index 87%
rename from src/stars_logger.h
rename to src/stars_csds.h
index 95ffd76f27a78e0bfc2a60b789bf53f728d70cfe..e3ff6219b4069596ea4e662587a92e4e68fb5197 100644
--- a/src/stars_logger.h
+++ b/src/stars_csds.h
@@ -16,8 +16,8 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_STARS_LOGGER_H
-#define SWIFT_STARS_LOGGER_H
+#ifndef SWIFT_STARS_CSDS_H
+#define SWIFT_STARS_CSDS_H
 
 /* Include config */
 #include "../config.h"
@@ -25,7 +25,7 @@
 /* Local includes */
 #include "./const.h"
 #include "align.h"
-#include "logger.h"
+#include "csds.h"
 #include "part_type.h"
 #include "timeline.h"
 
@@ -33,13 +33,13 @@
 #if defined(STARS_NONE)
 #error TODO
 #elif defined(STARS_BASIC)
-#include "./stars/Basic/stars_logger.h"
+#include "./stars/Basic/stars_csds.h"
 #elif defined(STARS_EAGLE)
 #error TODO
 #elif defined(STARS_GEAR)
-#include "./stars/GEAR/stars_logger.h"
+#include "./stars/GEAR/stars_csds.h"
 #else
 #error "Invalid choice of star model"
 #endif
 
-#endif /* SWIFT_STARS_LOGGER_H */
+#endif /* SWIFT_STARS_CSDS_H */
diff --git a/src/swift.h b/src/swift.h
index 06741a5a96fba8191643b9cd39bc620934bc1821..372ad4a0b24b4a39c64ddc337487926def500f82 100644
--- a/src/swift.h
+++ b/src/swift.h
@@ -52,8 +52,8 @@
 #include "hydro_properties.h"
 #include "line_of_sight.h"
 #include "lock.h"
-#include "logger.h"
-#include "logger_io.h"
+#include "csds.h"
+#include "csds_io.h"
 #include "map.h"
 #include "memuse.h"
 #include "mesh_gravity.h"
diff --git a/src/task.c b/src/task.c
index 44854e5ff2ad47e05839b36a08ed25975f095cc3..f6cf319f08261a3d9782a4bdfd0acf3da461a776 100644
--- a/src/task.c
+++ b/src/task.c
@@ -88,7 +88,7 @@ const char *taskID_names[task_type_count] = {
     "star_formation_in",
     "star_formation_out",
     "star_formation_sink",
-    "logger",
+    "csds",
     "stars_in",
     "stars_out",
     "stars_ghost_in",
@@ -319,7 +319,7 @@ __attribute__((always_inline)) INLINE static enum task_actions task_acts_on(
 
     case task_type_kick1:
     case task_type_kick2:
-    case task_type_logger:
+    case task_type_csds:
     case task_type_fof_self:
     case task_type_fof_pair:
     case task_type_timestep:
@@ -530,7 +530,7 @@ void task_unlock(struct task *t) {
 
     case task_type_kick1:
     case task_type_kick2:
-    case task_type_logger:
+    case task_type_csds:
     case task_type_timestep:
       cell_unlocktree(ci);
       cell_gunlocktree(ci);
@@ -755,7 +755,7 @@ int task_lock(struct task *t) {
 
     case task_type_kick1:
     case task_type_kick2:
-    case task_type_logger:
+    case task_type_csds:
     case task_type_timestep:
       if (ci->hydro.hold || ci->grav.phold) return 0;
       if (cell_locktree(ci) != 0) return 0;
diff --git a/src/task.h b/src/task.h
index 96a218a87d34f928c2e58eb71ad85e6cf6ea4b10..0fcb327c85b5509d9ce988b671333125b9755a83 100644
--- a/src/task.h
+++ b/src/task.h
@@ -81,7 +81,7 @@ enum task_types {
   task_type_star_formation_in,  /* Implicit */
   task_type_star_formation_out, /* Implicit */
   task_type_star_formation_sink,
-  task_type_logger,
+  task_type_csds,
   task_type_stars_in,       /* Implicit */
   task_type_stars_out,      /* Implicit */
   task_type_stars_ghost_in, /* Implicit */
diff --git a/src/timers.c b/src/timers.c
index 4045a3d7bb578608892389f17c28c1f7e78bbf06..354c61db86165b2b3deda1b8b2a90361e686e6db 100644
--- a/src/timers.c
+++ b/src/timers.c
@@ -118,7 +118,7 @@ const char* timers_names[timer_count] = {
     "locktree",
     "runners",
     "step",
-    "logger",
+    "csds",
     "do_stars_sort",
     "do_stars_resort",
     "fof_self",
diff --git a/src/timers.h b/src/timers.h
index a00a79ccd9cdd2b9ea5f3d501c13ed91d59b42c0..4af7947279beca21109bc01745c7afe392c5e6de 100644
--- a/src/timers.h
+++ b/src/timers.h
@@ -119,7 +119,7 @@ enum {
   timer_locktree,
   timer_runners,
   timer_step,
-  timer_logger,
+  timer_csds,
   timer_do_stars_sort,
   timer_do_stars_resort,
   timer_fof_self,
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8f72493890ffd7d0eda54dc9ebc0144b1aa23526..f0d62303b3c67705305a1891dc84b75b823224f0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -24,7 +24,7 @@ TESTS = testGreetings testMaths testReading.sh testKernel testKernelLongGrav \
         testActivePair.sh test27cells.sh test27cellsPerturbed.sh testExp \
         testParser.sh test125cells.sh test125cellsPerturbed.sh testFFT \
         testAdiabaticIndex testRandom testRandomSpacing testErfc \
-        testMatrixInversion testThreadpool testDump testLogger testInteractions.sh \
+        testMatrixInversion testThreadpool testDump testCSDS testInteractions.sh \
         testVoronoi1D testVoronoi2D testVoronoi3D testGravityDerivatives \
 	testPeriodicBC.sh testPeriodicBCPerturbed.sh testPotentialSelf \
 	testPotentialPair testEOS testUtilities testSelectOutput.sh \
@@ -39,7 +39,7 @@ check_PROGRAMS = testGreetings testReading testTimeIntegration testKernelLongGra
                  testKernel testFFT testInteractions testMaths testRandom testExp \
                  testSymmetry testThreadpool testRandomSpacing testErfc \
                  testAdiabaticIndex testRiemannExact testRiemannTRRS \
-                 testRiemannHLLC testMatrixInversion testDump testLogger \
+                 testRiemannHLLC testMatrixInversion testDump testCSDS \
 		 testVoronoi1D testVoronoi2D testVoronoi3D testPeriodicBC \
 		 testGravityDerivatives testPotentialSelf testPotentialPair testEOS testUtilities \
 		 testSelectOutput testCbrt testCosmology testOutputList test27cellsStars \
@@ -128,7 +128,7 @@ testThreadpool_SOURCES = testThreadpool.c
 
 testDump_SOURCES = testDump.c
 
-testLogger_SOURCES = testLogger.c
+testCSDS_SOURCES = testCSDS.c
 
 testExp_SOURCES = testExp.c
 
diff --git a/tests/logger.yml b/tests/csds.yml
similarity index 77%
rename from tests/logger.yml
rename to tests/csds.yml
index eaf8731f0e09df40b891c7b57be35cd9e14fc5cc..1487369c87cef1711a7070bd71b6069449ed8fb1 100644
--- a/tests/logger.yml
+++ b/tests/csds.yml
@@ -1,5 +1,5 @@
-# Parameters governing the logger snapshot system
-Logger:
+# Parameters governing the CSDS snapshot system
+CSDS:
   delta_step:           10     # (Optional) Update the particle log every this many updates
   initial_buffer_size:   .1    # buffer size in GB
   basename:             indice # Common part of the filenames
diff --git a/tests/testLogger.c b/tests/testCSDS.c
similarity index 74%
rename from tests/testLogger.c
rename to tests/testCSDS.c
index d0f40522ed3a4df5de9d25a314dec85d01f6093b..560200acfd37f182dc49b43731b8089bee75f318 100644
--- a/tests/testLogger.c
+++ b/tests/testCSDS.c
@@ -21,7 +21,7 @@
 #include "../config.h"
 
 #if defined(HAVE_POSIX_FALLOCATE) && \
-    defined(WITH_LOGGER) /* Are we on a sensible platform? */
+    defined(WITH_CSDS) /* Are we on a sensible platform? */
 
 /* Some standard headers. */
 #include <stdio.h>
@@ -32,7 +32,7 @@
 /* Local headers. */
 #include "swift.h"
 
-void test_log_parts(struct logger_writer *log) {
+void test_log_parts(struct csds_writer *log) {
   struct dump *d = &log->dump;
   struct engine e;
 
@@ -43,29 +43,29 @@ void test_log_parts(struct logger_writer *log) {
   bzero(&xp, sizeof(struct xpart));
   p.x[0] = 1.0;
   p.v[0] = 0.1;
-  xp.logger_data.last_offset = 0;
+  xp.csds_data.last_offset = 0;
 
   /* Write the full part. */
-  logger_log_part(log, &p, &xp, &e, /* log_all */ 1, /* special flags */ 0);
-  printf("Wrote part at offset %#016zx.\n", xp.logger_data.last_offset);
+  csds_log_part(log, &p, &xp, &e, /* log_all */ 1, /* special flags */ 0);
+  printf("Wrote part at offset %#016zx.\n", xp.csds_data.last_offset);
 
   /* Write only the position. */
   p.x[0] = 2.0;
   p.v[0] = 0.;
-  logger_log_part(log, &p, &xp, &e, /* log_all */ 0, /* special flags */ 0);
-  printf("Wrote part at offset %#016zx.\n", xp.logger_data.last_offset);
+  csds_log_part(log, &p, &xp, &e, /* log_all */ 0, /* special flags */ 0);
+  printf("Wrote part at offset %#016zx.\n", xp.csds_data.last_offset);
 
   /* Write the position and velocity. */
   p.x[0] = 3.0;
   p.v[0] = 0.3;
-  logger_log_part(log, &p, &xp, &e, /* log_all */ 0, /* special flags */ 0);
-  printf("Wrote part at offset %#016zx.\n", xp.logger_data.last_offset);
+  csds_log_part(log, &p, &xp, &e, /* log_all */ 0, /* special flags */ 0);
+  printf("Wrote part at offset %#016zx.\n", xp.csds_data.last_offset);
 
   /* Recover the last part from the dump. */
   bzero(&p, sizeof(struct part));
-  size_t offset = xp.logger_data.last_offset;
+  size_t offset = xp.csds_data.last_offset;
   size_t offset_old = offset;
-  unsigned int mask = logger_read_part(log, &p, &offset, (const char *)d->data);
+  unsigned int mask = csds_read_part(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered part at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -78,7 +78,7 @@ void test_log_parts(struct logger_writer *log) {
   /* Recover the second part from the dump (only position). */
   bzero(&p, sizeof(struct part));
   offset_old = offset;
-  mask = logger_read_part(log, &p, &offset, (const char *)d->data);
+  mask = csds_read_part(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered part at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -91,7 +91,7 @@ void test_log_parts(struct logger_writer *log) {
   /* Recover the first part from the dump. */
   bzero(&p, sizeof(struct part));
   offset_old = offset;
-  mask = logger_read_part(log, &p, &offset, (const char *)d->data);
+  mask = csds_read_part(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered part at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -102,7 +102,7 @@ void test_log_parts(struct logger_writer *log) {
   }
 }
 
-void test_log_gparts(struct logger_writer *log) {
+void test_log_gparts(struct csds_writer *log) {
   struct dump *d = &log->dump;
   struct engine e;
 
@@ -112,29 +112,29 @@ void test_log_gparts(struct logger_writer *log) {
   p.x[0] = 1.0;
   p.v_full[0] = 0.1;
   p.type = swift_type_dark_matter;
-  p.logger_data.last_offset = 0;
+  p.csds_data.last_offset = 0;
 
   /* Write the full part. */
-  logger_log_gpart(log, &p, &e, /* log_all */ 1, /* special flags */ 0);
-  printf("Wrote gpart at offset %#016zx.\n", p.logger_data.last_offset);
+  csds_log_gpart(log, &p, &e, /* log_all */ 1, /* special flags */ 0);
+  printf("Wrote gpart at offset %#016zx.\n", p.csds_data.last_offset);
 
   /* Write only the position. */
   p.x[0] = 2.0;
   p.v_full[0] = 0.;
-  logger_log_gpart(log, &p, &e, /* log_all */ 0, /* special flags */ 0);
-  printf("Wrote gpart at offset %#016zx.\n", p.logger_data.last_offset);
+  csds_log_gpart(log, &p, &e, /* log_all */ 0, /* special flags */ 0);
+  printf("Wrote gpart at offset %#016zx.\n", p.csds_data.last_offset);
 
   /* Write the position and velocity. */
   p.x[0] = 3.0;
   p.v_full[0] = 0.3;
-  logger_log_gpart(log, &p, &e, /* log_all */ 0, /* special flags */ 0);
-  printf("Wrote gpart at offset %#016zx.\n", p.logger_data.last_offset);
+  csds_log_gpart(log, &p, &e, /* log_all */ 0, /* special flags */ 0);
+  printf("Wrote gpart at offset %#016zx.\n", p.csds_data.last_offset);
 
   /* Recover the last part from the dump. */
-  size_t offset = p.logger_data.last_offset;
+  size_t offset = p.csds_data.last_offset;
   bzero(&p, sizeof(struct gpart));
   size_t offset_old = offset;
-  int mask = logger_read_gpart(log, &p, &offset, (const char *)d->data);
+  int mask = csds_read_gpart(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered gpart at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -147,7 +147,7 @@ void test_log_gparts(struct logger_writer *log) {
   /* Recover the second part from the dump. */
   bzero(&p, sizeof(struct gpart));
   offset_old = offset;
-  mask = logger_read_gpart(log, &p, &offset, (const char *)d->data);
+  mask = csds_read_gpart(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered gpart at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -160,7 +160,7 @@ void test_log_gparts(struct logger_writer *log) {
   /* Recover the first part from the dump. */
   bzero(&p, sizeof(struct gpart));
   offset_old = offset;
-  mask = logger_read_gpart(log, &p, &offset, (const char *)d->data);
+  mask = csds_read_gpart(log, &p, &offset, (const char *)d->data);
   printf(
       "Recovered gpart at offset %#016zx with mask %#04x: p.x[0]=%e, "
       "p.v[0]=%e.\n",
@@ -171,7 +171,7 @@ void test_log_gparts(struct logger_writer *log) {
   }
 }
 
-void test_log_timestamps(struct logger_writer *log) {
+void test_log_timestamps(struct csds_writer *log) {
   struct dump *d = &log->dump;
 
   /* The timestamp to log. */
@@ -182,15 +182,15 @@ void test_log_timestamps(struct logger_writer *log) {
   size_t offset = d->count;
 
   /* Log three consecutive timestamps. */
-  logger_log_timestamp(log, t, time, &offset);
+  csds_log_timestamp(log, t, time, &offset);
   printf("Logged timestamp %020llu at offset %#016zx.\n", t, offset);
   t += 10;
   time = 0.2;
-  logger_log_timestamp(log, t, time, &offset);
+  csds_log_timestamp(log, t, time, &offset);
   printf("Logged timestamp %020llu at offset %#016zx.\n", t, offset);
   t += 10;
   time = 0.3;
-  logger_log_timestamp(log, t, time, &offset);
+  csds_log_timestamp(log, t, time, &offset);
   printf("Logged timestamp %020llu at offset %#016zx.\n", t, offset);
 
   /* Recover the three timestamps. */
@@ -198,7 +198,7 @@ void test_log_timestamps(struct logger_writer *log) {
   t = 0;
   time = 0;
   int mask =
-      logger_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
+      csds_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
   printf(
       "Recovered timestamp %020llu with time %g at offset %#016zx with mask "
       "%#04x.\n",
@@ -215,7 +215,7 @@ void test_log_timestamps(struct logger_writer *log) {
   offset_old = offset;
   t = 0;
   time = 0;
-  mask = logger_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
+  mask = csds_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
   printf(
       "Recovered timestamp %020llu with time %g at offset %#016zx with mask "
       "%#04x.\n",
@@ -232,7 +232,7 @@ void test_log_timestamps(struct logger_writer *log) {
   offset_old = offset;
   t = 0;
   time = 0;
-  mask = logger_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
+  mask = csds_read_timestamp(log, &t, &time, &offset, (const char *)d->data);
   printf(
       "Recovered timestamp %020llu with time %g at offset %#016zx with mask "
       "%#04x.\n",
@@ -249,14 +249,14 @@ void test_log_timestamps(struct logger_writer *log) {
 
 int main(int argc, char *argv[]) {
 
-  /* Prepare a logger. */
-  struct logger_writer log;
+  /* Prepare a csds. */
+  struct csds_writer log;
   struct swift_params params;
   struct engine e;
   e.policy = engine_policy_hydro | engine_policy_self_gravity;
 
-  parser_read_file("logger.yml", &params);
-  logger_init(&log, &e, &params);
+  parser_read_file("csds.yml", &params);
+  csds_init(&log, &e, &params);
 
   /* Test writing/reading parts. */
   test_log_parts(&log);
@@ -272,8 +272,8 @@ int main(int argc, char *argv[]) {
   sprintf(filename, "%s.dump", log.base_name);
   remove(filename);
 
-  /* Clean the logger. */
-  logger_free(&log);
+  /* Clean the csds. */
+  csds_free(&log);
 
   /* Return a happy number. */
   return 0;
diff --git a/tools/task_plots/swift_hardcoded_data.py b/tools/task_plots/swift_hardcoded_data.py
index c987e990d313a9440d3011dd33f84548dfca09af..40c66d556675af7a4d7439c71d7905f22459cb16 100644
--- a/tools/task_plots/swift_hardcoded_data.py
+++ b/tools/task_plots/swift_hardcoded_data.py
@@ -48,7 +48,7 @@ TASKTYPES = [
     "star_formation",
     "star_formation_in",
     "star_formation_out",
-    "logger",
+    "csds",
     "stars_in",
     "stars_out",
     "stars_ghost_in",