diff --git a/src/chemistry.c b/src/chemistry.c
index 4d2a5e7ba9565931ef371273baf1f6b7e3c5bc34..f0ba8818fefc3f58e684eff56e51f9ea127feac7 100644
--- a/src/chemistry.c
+++ b/src/chemistry.c
@@ -36,7 +36,7 @@
 void chemistry_init(const struct swift_params* parameter_file,
                   const struct unit_system* us,
                   const struct phys_const* phys_const,
-                  struct chemistry_data* chemistry) {
+                  struct chemistry_part_data* chemistry) {
 
   chemistry_init_backend(parameter_file, us, phys_const, chemistry);
 }
@@ -48,7 +48,7 @@ void chemistry_init(const struct swift_params* parameter_file,
  *
  * @param chemistry The properties of the chemistry function.
  */
-void chemistry_print(const struct chemistry_data* chemistry) {
+void chemistry_print(const struct chemistry_part_data* chemistry) {
 
   chemistry_print_backend(chemistry);
 }
diff --git a/src/chemistry.h b/src/chemistry.h
index 25769240eb852e6b67a76ff3bc4e429305d09af6..c1971fd0dbab2ab372f6a1c76c538e34c44a13cf 100644
--- a/src/chemistry.h
+++ b/src/chemistry.h
@@ -39,8 +39,8 @@
 void chemistry_init(const struct swift_params* parameter_file,
 		    const struct unit_system* us,
 		    const struct phys_const* phys_const,
-		    struct chemistry_data* chem);
+		    struct chemistry_part_data* chem);
 
-void chemistry_print(const struct chemistry_data* chem);
+void chemistry_print(const struct chemistry_part_data* chem);
 
 #endif /* SWIFT_CHEMISTRY_H */
diff --git a/src/chemistry/none/chemistry.h b/src/chemistry/none/chemistry.h
index 6c17af00fd240d6d928168d0ab3a94882718bf17..6f2cb354d9f011689479554528c142e45bd9c32a 100644
--- a/src/chemistry/none/chemistry.h
+++ b/src/chemistry/none/chemistry.h
@@ -29,6 +29,7 @@
 #include <math.h>
 
 /* Local includes. */
+#include "chemistry_struct.h"
 #include "error.h"
 #include "hydro.h"
 #include "parser.h"
@@ -61,7 +62,7 @@ __attribute__((always_inline)) INLINE static void chemistry_init_part(
 static INLINE void chemistry_init_backend(
     const struct swift_params* parameter_file, const struct unit_system* us,
     const struct phys_const* phys_const,
-    struct chemistry_data* chemistry) {}
+    struct chemistry_part_data* chemistry) {}
 
 /**
  * @brief Prints the properties of the chemistry model to stdout.
@@ -69,7 +70,7 @@ static INLINE void chemistry_init_backend(
  * @param chemistry The properties of the chemistry function.
  */
 static INLINE void chemistry_print_backend(
-    const struct chemistry_data* chemistry) {
+    const struct chemistry_part_data* chemistry) {
 
   message("Chemistry function is 'No chemistry'.");
 }
diff --git a/src/cooling/const_du/cooling.h b/src/cooling/const_du/cooling.h
index 3dfc215c79fd675cf8ee3d17d2b4beaa901315e9..5fd12c657e6d16044644c8964c065e7a037ae414 100644
--- a/src/cooling/const_du/cooling.h
+++ b/src/cooling/const_du/cooling.h
@@ -48,7 +48,7 @@
  * @brief Writes the current model of SPH to the file
  * @param h_grpsph The HDF5 group in which to write
  */
-void writeCoolingFlavor(hid_t h_grpsph) {
+__attribute__((always_inline)) INLINE static void writeCoolingFlavor(hid_t h_grpsph) {
 
   /* Viscosity and thermal conduction */
   io_write_attribute_s(
diff --git a/src/cooling/const_lambda/cooling.h b/src/cooling/const_lambda/cooling.h
index ac0b4d348f8cbecc199570444d619312dd6be059..2dd311e8f396320ac4ec8f1d427ac9e465f3bce0 100644
--- a/src/cooling/const_lambda/cooling.h
+++ b/src/cooling/const_lambda/cooling.h
@@ -41,7 +41,7 @@
  * @brief Writes the current model of SPH to the file
  * @param h_grpsph The HDF5 group in which to write
  */
-void writeCoolingFlavor(hid_t h_grpsph) {
+__attribute__((always_inline)) INLINE static void writeCoolingFlavor(hid_t h_grpsph) {
 
   /* Viscosity and thermal conduction */
   io_write_attribute_s(
diff --git a/src/cooling/grackle/cooling.h b/src/cooling/grackle/cooling.h
index ad7c65bd28769c4e25fd60d699346b94892fec80..8e7a7dc86ff6a8f7be2193b43dea10ba933e3765 100644
--- a/src/cooling/grackle/cooling.h
+++ b/src/cooling/grackle/cooling.h
@@ -46,7 +46,7 @@
  * @brief Writes the current model of SPH to the file
  * @param h_grpsph The HDF5 group in which to write
  */
-void writeCoolingFlavor(hid_t h_grpsph) {
+__attribute__((always_inline)) INLINE static void writeCoolingFlavor(hid_t h_grpsph) {
 
   /* Viscosity and thermal conduction */
   io_write_attribute_s(
diff --git a/src/cooling/none/cooling.h b/src/cooling/none/cooling.h
index 90f21c8796c78d1c957724e77a38d6c93584170e..678f5b19a548f976cbeacc7906be7f86b41caee0 100644
--- a/src/cooling/none/cooling.h
+++ b/src/cooling/none/cooling.h
@@ -41,7 +41,7 @@
  * @brief Writes the current model of SPH to the file
  * @param h_grpsph The HDF5 group in which to write
  */
-void writeCoolingFlavor(hid_t h_grpsph) {
+__attribute__((always_inline)) INLINE static void writeCoolingFlavor(hid_t h_grpsph) {
 
   /* Viscosity and thermal conduction */
   io_write_attribute_s(
diff --git a/src/hydro/Gadget2/hydro_io.h b/src/hydro/Gadget2/hydro_io.h
index 482ab9723f141989b14519455dd8a5daef787da1..7a461ee266520dcc0cae27e18f5707e6fbf3a519 100644
--- a/src/hydro/Gadget2/hydro_io.h
+++ b/src/hydro/Gadget2/hydro_io.h
@@ -24,6 +24,7 @@
 #include "io_properties.h"
 #include "kernel_hydro.h"
 #include "chemistry_io.h"
+#include "cooling.h"
 
 /**
  * @brief Specifies which particle fields to read from a dataset
diff --git a/src/io_properties.h b/src/io_properties.h
index 2142d8d555fb52258d3443f20d14c72cf7568045..37ebd6da5b1678abd716c7ecba7202bd1fde75f0 100644
--- a/src/io_properties.h
+++ b/src/io_properties.h
@@ -24,6 +24,7 @@
 
 /* Local includes. */
 #include "inline.h"
+#include "common_io.h"
 
 /**
  * @brief The two sorts of data present in the GADGET IC files: compulsory to