diff --git a/examples/CoolingBox/coolingBox.yml b/examples/CoolingBox/coolingBox.yml
index c251edf54885e9490b9e07f7adb80fb51475be9f..781919a498e1cac7626c42d33352e0c507133a0a 100644
--- a/examples/CoolingBox/coolingBox.yml
+++ b/examples/CoolingBox/coolingBox.yml
@@ -9,8 +9,8 @@ InternalUnitSystem:
 # Cosmological parameters
 Cosmology:
   h:              0.6777        # Reduced Hubble constant
-  a_begin: 0.142857142857     # Initial scale-factor of the simulation
-  a_end: 0.144285714286           # Final scale factor of the simulation
+  a_begin:        0.04     # Initial scale-factor of the simulation
+  a_end:          1.0           # Final scale factor of the simulation
   Omega_m:        0.307         # Matter density parameter
   Omega_lambda:   0.693         # Dark-energy density parameter
   Omega_b:        0.0455        # Baryon density parameter
diff --git a/examples/CoolingBox/makeIC.py b/examples/CoolingBox/makeIC.py
index bd0311ec9c0b6cf23ad80df0804c69bf14361caf..a8e888526fb1f86dd1341af377c91a480f124ca5 100644
--- a/examples/CoolingBox/makeIC.py
+++ b/examples/CoolingBox/makeIC.py
@@ -27,7 +27,7 @@ from numpy import *
 # Parameters
 periodic= 1           # 1 For periodic box
 boxSize = 3.0857e21   # 1 kiloparsec    
-rho = 1.e-25          # Density in cgs
+rho = 2.36748e-25          # Density in cgs
 P = 6.68e-12          # Pressure in cgs
 gamma = 5./3.         # Gas adiabatic index
 eta = 1.2349          # 48 ngbs with cubic spline kernel
diff --git a/examples/CoolingBox/testCooling.c b/examples/CoolingBox/testCooling.c
index 2a5969e6464befa3681427175e94f356f8575dfd..37db87f2bcbbb493128c3b7c7923c70502c4ed63 100644
--- a/examples/CoolingBox/testCooling.c
+++ b/examples/CoolingBox/testCooling.c
@@ -94,7 +94,7 @@ int main(int argc, char **argv) {
   /* Number of subcycles and tolerance used to compare
    * subcycled and implicit solution. Note, high value 
    * of tolerance due to mismatch between explicit and
-   * implicit solutioin for large timesteps */
+   * implicit solution for large timesteps */
   const int n_subcycle = 1000;
   const float integration_tolerance = 0.2;
 
diff --git a/examples/CoolingRates/Makefile.am b/examples/CoolingRates/Makefile.am
index ca9ddd8670957273b22cd8d4c6d91db782009f0e..058cdaf2efa3df3647af6f6e0263f65a0e515a15 100644
--- a/examples/CoolingRates/Makefile.am
+++ b/examples/CoolingRates/Makefile.am
@@ -23,10 +23,10 @@ AM_LDFLAGS = $(HDF5_LDFLAGS) $(HDF5_LIBS) $(FFTW_LIBS) $(TCMALLOC_LIBS) $(JEMALL
 EXTRA_LIBS = $(HDF5_LIBS) $(FFTW_LIBS) $(PROFILER_LIBS) $(TCMALLOC_LIBS) $(JEMALLOC_LIBS) $(TBBMALLOC_LIBS) $(GRACKLE_LIBS) $(VELOCIRAPTOR_LIBS) $(GSL_LIBS)
 
 # Programs.
-bin_PROGRAMS = testCooling
+bin_PROGRAMS = cooling_rates
 
 # Sources
-testCooling_SOURCES = testCooling.c
-testCooling_CFLAGS = $(MYFLAGS) $(AM_CFLAGS)
-testCooling_LDADD =  ../../src/.libs/libswiftsim.a $(EXTRA_LIBS)
+cooling_rates_SOURCES = cooling_rates.c
+cooling_rates_CFLAGS = $(MYFLAGS) $(AM_CFLAGS)
+cooling_rates_LDADD =  ../../src/.libs/libswiftsim.a $(EXTRA_LIBS)
 
diff --git a/examples/CoolingRates/README b/examples/CoolingRates/README
index 414a4dc9ebb453cd0a1c59160a36139b437c025f..1beea8fafe1786862f77eff0c435414da7020d2f 100644
--- a/examples/CoolingRates/README
+++ b/examples/CoolingRates/README
@@ -1,6 +1,6 @@
 This is a test that produces a plot of the contribution to the cooling rate from each of the elements depending on internal energy, density and redshift based on the EAGLE tables. To do so, the function in src/cooling/EAGLE returning the cooling rate is run for multiple values of the internal energy. The resulting cooling rates are written to files and plotted with a python script (cooling_rates_plot.py). 
 
-The test may be run by using the shell script, test_script.sh, or by running:
+The test may be run by:
 ./testCooling -z X -d Y
 python cooling_rates_plot.py
 
diff --git a/examples/CoolingRates/testCooling.c b/examples/CoolingRates/cooling_rates.c
similarity index 86%
rename from examples/CoolingRates/testCooling.c
rename to examples/CoolingRates/cooling_rates.c
index 87b07b1520bb2eb683820c9bee86f00554e9a188..31546c6a00f8e19bcf175361fe65ad81ad3cf620 100644
--- a/examples/CoolingRates/testCooling.c
+++ b/examples/CoolingRates/cooling_rates.c
@@ -44,23 +44,16 @@ void set_quantities(struct part *restrict p,
                     const struct phys_const *restrict internal_const, float nh,
                     double u) {
 
-  float scale_factor = 1.0 / (1.0 + cosmo->z);
   double hydrogen_number_density =
       nh * pow(units_cgs_conversion_factor(us, UNIT_CONV_LENGTH), 3);
   p->rho = hydrogen_number_density * internal_const->const_proton_mass /
            p->chemistry_data.metal_mass_fraction[chemistry_element_H];
 
-  float pressure = (u * scale_factor * scale_factor) / cooling->internal_energy_scale *
+  float pressure = (u * cosmo->a * cosmo->a) / cooling->internal_energy_scale *
                    p->rho * (hydro_gamma_minus_one);
   p->entropy = pressure * (pow(p->rho, -hydro_gamma));
   xp->entropy_full = p->entropy;
 
-  // Using hydro_set_init_internal_energy seems to work better for higher z for
-  // setting the internal energy correctly However, with Gadget2 this just sets
-  // the entropy to the internal energy, which needs to be converted somehow
-  if (cosmo->z >= 1)
-    hydro_set_init_internal_energy(
-        p, (u * scale_factor * scale_factor) / cooling->internal_energy_scale);
 }
 
 /*
@@ -79,18 +72,18 @@ int main(int argc, char **argv) {
   struct phys_const internal_const;
   struct cooling_function_data cooling;
   struct cosmology cosmo;
-  char *parametersFileName = "./testCooling.yml";
+  char *parametersFileName = "./cooling_rates.yml";
 
   float nh;              // hydrogen number density
   double u;              // internal energy
   const int npts = 250;  // number of values for the internal energy at which
                          // cooling rate is evaluated
 
+  // Set some default values
+  float redshift = 0.0, log_10_nh = -1;
+
   // Read options
   int param;
-  float redshift = -1.0,
-        log_10_nh =
-            100;  // unreasonable values will be changed if not set in options
   while ((param = getopt(argc, argv, "z:d:t")) != -1) switch (param) {
       case 'z':
         // read redshift
@@ -105,7 +98,7 @@ int main(int argc, char **argv) {
           printf("Option -%c requires an argument.\n", optopt);
         else
           printf("Unknown option character `\\x%x'.\n", optopt);
-        error("invalid option(s) to testCooling");
+        error("invalid option(s) to cooling_rates");
     }
 
   // Read the parameter file
@@ -125,17 +118,16 @@ int main(int argc, char **argv) {
   // Init cosmology
   cosmology_init(params, &us, &internal_const, &cosmo);
   cosmology_print(&cosmo);
-  if (redshift == -1.0) {
-    cosmo.z = 3.0;
-  } else {
-    cosmo.z = redshift;
-  }
+
+  // Set redshift and associated quantities
+  const float scale_factor = 1.0/(1.0+redshift);
+  integertime_t ti_current = log(scale_factor/cosmo.a_begin)/cosmo.time_base;
+  cosmology_update(&cosmo,&internal_const,ti_current);
 
   // Init cooling
   cooling_init(params, &us, &internal_const, &cooling);
   cooling_print(&cooling);
   cooling_update(&cosmo, &cooling, 0);
-  message("redshift %.5e", cosmo.z);
 
   // Calculate abundance ratios
   float *abundance_ratio;
@@ -160,12 +152,8 @@ int main(int argc, char **argv) {
   }
 
   // set hydrogen number density
-  if (log_10_nh == 100) {
-    // hydrogen number density not specified in options
-    nh = 1.0e-1;
-  } else {
-    nh = pow(10.0, log_10_nh);
-  }
+  nh = exp(M_LN10 * log_10_nh);
+  
 
   // set internal energy to dummy value, will get reset when looping over
   // internal energies
diff --git a/examples/CoolingRates/testCooling.yml b/examples/CoolingRates/cooling_rates.yml
similarity index 98%
rename from examples/CoolingRates/testCooling.yml
rename to examples/CoolingRates/cooling_rates.yml
index 63f3e381d73f706a2dcd97cf7882f3136eb2e35a..d90ed72764b67ee4e2f10b0993575a0c7ad8c8fe 100644
--- a/examples/CoolingRates/testCooling.yml
+++ b/examples/CoolingRates/cooling_rates.yml
@@ -9,7 +9,7 @@ InternalUnitSystem:
 # Cosmological parameters
 Cosmology:
   h:              0.6777        # Reduced Hubble constant
-  a_begin:        0.9090909     # Initial scale-factor of the simulation
+  a_begin:        0.04          # Initial scale-factor of the simulation
   a_end:          1.0           # Final scale factor of the simulation
   Omega_m:        0.307         # Matter density parameter
   Omega_lambda:   0.693         # Dark-energy density parameter
diff --git a/examples/CoolingRates/test_script.sh b/examples/CoolingRates/test_script.sh
deleted file mode 100644
index 880dc02b8ee139c131d1bff6ed6f9d1d0a7e3015..0000000000000000000000000000000000000000
--- a/examples/CoolingRates/test_script.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-
-#redshift_array=( 0 0.049 0.101 0.155 0.211 0.271 0.333 0.399 0.468 0.540)
-redshift_array=( 1 2 3 4 5 6 7 8 9 10 )
-
-for i in $(seq 10 -1 0); do
-  redshift=${redshift_array[$i]}
-  ./testCooling -z $redshift -d 3
-  file='cooling_output_'$i'.dat'
-  cp cooling_output.dat $file
-done
-
-#for nh in $(seq -1 -1 -6); do
-#  ./testCooling -z 1 -d $nh
-#  file='cooling_output_'$(expr 0 - $nh)'.dat'
-#  cp cooling_output.dat $file
-#done
-
-python cooling_rates_plot.py
diff --git a/src/chemistry/EAGLE/chemistry.h b/src/chemistry/EAGLE/chemistry.h
index 1429b8887c4a8ce17fdb62ebcbaa94cbb3b1f3c3..6c14737b53ef7ecf7a38fc77981a1c3f0298560c 100644
--- a/src/chemistry/EAGLE/chemistry.h
+++ b/src/chemistry/EAGLE/chemistry.h
@@ -105,13 +105,13 @@ __attribute__((always_inline)) INLINE static void chemistry_end_density(
     cpd->smoothed_metal_mass_fraction[i] *= factor;
   }
 
-  // Smooth mass fraction of all metals
+  /* Smooth mass fraction of all metals */
   cpd->smoothed_metal_mass_fraction_total +=
       m * cpd->metal_mass_fraction_total * kernel_root;
   cpd->smoothed_metal_mass_fraction_total *= factor;
   
   
-  // Smooth iron mass fraction from SNIa
+  /* Smooth iron mass fraction from SNIa */
   cpd->smoothed_iron_mass_fraction_from_SNIa +=
       m * cpd->iron_mass_fraction_from_SNIa * kernel_root;
   cpd->smoothed_iron_mass_fraction_from_SNIa *= factor;