diff --git a/src/engine.c b/src/engine.c
index 1fb0baa55322ff42de013a871f4811275715cf20..d832844770aae61714b61da25f771964f9b990f5 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -6717,7 +6717,7 @@ void engine_init(struct engine *e, struct space *s, struct swift_params *params,
   e->logger_dump = malloc(sizeof(struct dump));
   struct dump *dump_file = e->logger_dump;
   dump_init(dump_file, logger_name_file, e->logger_size);
-  logger_write_file_header(dump_file);
+  logger_write_file_header(dump_file, e);
   dump_ensure(dump_file, e->logger_size);
   e->logger_time_offset = 0;
 #endif
diff --git a/src/logger.c b/src/logger.c
index 649ea0b474d164f08b9fcc5f6ba41067e4f3835c..08affdfabd4ccd6c0062ae03fab7c2b32430d8a1 100644
--- a/src/logger.c
+++ b/src/logger.c
@@ -40,6 +40,14 @@
 #include "units.h"
 #include "engine.h"
 
+
+void logger_write_data(struct dump *d, size_t *offset, size_t size, void *p)
+{
+  char *buff;
+  buff = dump_get(d, size, offset);
+  memcpy(buff, p, size);
+}
+
 /**
  * @brief Compute the size of a message given its mask.
  *
@@ -284,14 +292,14 @@ void logger_ensure_size(size_t total_nr_parts, size_t logger_size) {
  * @param dump The #dump in which to log the particle data.
  *
  */
-void logger_write_file_header(struct dump *dump) {
+void logger_write_file_header(struct dump *dump, struct engine *e) {
 
 #ifdef SWIFT_DEBUG_CHECKS
   message("writing header");
 #endif
   
   size_t i;
-  char *buff, *skip_header;
+  char *skip_header;
   size_t *file_offset;
 
   struct logger_const log_const;
@@ -302,48 +310,41 @@ void logger_write_file_header(struct dump *dump) {
   if (*file_offset != 0) error("Something was already written in the dump file");
 
   /* Write version information */
-  buff = dump_get(dump, LOGGER_VERSION_SIZE, file_offset);
-  memcpy(buff, LOGGER_VERSION, LOGGER_VERSION_SIZE);
+  logger_write_data(dump, file_offset, LOGGER_VERSION_SIZE, LOGGER_VERSION);
  
   /* write number of bytes used for the offsets */
-  buff = dump_get(dump, LOGGER_OFFSET_SIZE, file_offset);
-  memcpy(buff, &log_const.offset, LOGGER_OFFSET_SIZE);
+  logger_write_data(dump, file_offset, LOGGER_OFFSET_SIZE, &log_const.offset);
 
   /* will write the offset of the first particle here */
   skip_header = dump_get(dump, log_const.offset, file_offset);
 
   /* write number of bytes used for names */
-  buff = dump_get(dump, LOGGER_NAME_SIZE, file_offset);
-  memcpy(buff, &log_const.name, LOGGER_NAME_SIZE);
+  logger_write_data(dump, file_offset, LOGGER_NAME_SIZE, &log_const.name);
 
   /* write number of bytes used for numbers */
-  buff = dump_get(dump, LOGGER_NBER_SIZE, file_offset);
-  memcpy(buff, &log_const.number, LOGGER_NBER_SIZE);
+  logger_write_data(dump, file_offset, LOGGER_NBER_SIZE, &log_const.number);
 
   /* write number of bytes used for masks */
-  buff = dump_get(dump, LOGGER_MASK_SIZE, file_offset);
-  memcpy(buff, &log_const.mask, LOGGER_MASK_SIZE);
+  logger_write_data(dump, file_offset, LOGGER_MASK_SIZE, &log_const.mask);
 
   /* write number of masks */
-  buff = dump_get(dump, log_const.number, file_offset);
-  memcpy(buff, &log_const.nber_mask, log_const.number);
+  logger_write_data(dump, file_offset, log_const.number, &log_const.nber_mask);
   
   /* write masks */
   // loop over all mask type
   for(i=0; i<log_const.nber_mask; i++) {
     // mask name
     size_t j = i * log_const.name;
-    buff = dump_get(dump, log_const.name, file_offset);
-    memcpy(buff, &log_const.masks_name[j], log_const.name);
+    logger_write_data(dump, file_offset, log_const.name, &log_const.masks_name[j]);
     
     // mask
-    buff = dump_get(dump, log_const.mask, file_offset);
-    memcpy(buff, &log_const.masks[i], log_const.mask);
+    logger_write_data(dump, file_offset, log_const.mask, &log_const.masks[i]);
 
     // mask size
-    buff = dump_get(dump, log_const.number, file_offset);
-    memcpy(buff, &log_const.masks_size[i], log_const.number);
+    logger_write_data(dump, file_offset, log_const.number, &log_const.masks_size[i]);
   }
+
+  /* Write data */
   
 
   /* last step */
diff --git a/src/logger.h b/src/logger.h
index 68562141a40cf9cba8462e5931884c6eeffd7226..a0dc44496f9e4b558015ec0117aaa02ec9b7fb56 100644
--- a/src/logger.h
+++ b/src/logger.h
@@ -114,7 +114,7 @@ int logger_read_part(struct part *p, size_t *offset, const char *buff);
 int logger_read_gpart(struct gpart *p, size_t *offset, const char *buff);
 int logger_read_timestamp(unsigned long long int *t, size_t *offset,
                           const char *buff);
-void logger_write_file_header(struct dump *dump);
+void logger_write_file_header(struct dump *dump, struct engine* e);
 void logger_const_init(struct logger_const* log_const);
 void logger_const_free(struct logger_const* log_const);
 void logger_ensure_size(size_t total_nr_parts, size_t logger_size);