diff --git a/src/tools.c b/src/tools.c
index 4653c2ef799f9256bd459d9dcc1cf5698a7db6f4..8b8b7fdf37d91547f328a6b49d69b3c5a491aed1 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -36,6 +36,7 @@
 /* Local includes. */
 #include "active.h"
 #include "cell.h"
+#include "chemistry.h"
 #include "cosmology.h"
 #include "error.h"
 #include "gravity.h"
@@ -187,7 +188,9 @@ void pairs_all_density(struct runner *r, struct cell *ci, struct cell *cj) {
   struct part *pi, *pj;
   const double dim[3] = {r->e->s->dim[0], r->e->s->dim[1], r->e->s->dim[2]};
   const struct engine *e = r->e;
-  float a = 1.f, H = 0.f;
+  const struct cosmology *cosmo = e->cosmology;
+  const float a = cosmo->a;
+  const float H = cosmo->H;
 
   /* Implements a double-for loop and checks every interaction */
   for (int i = 0; i < ci->count; ++i) {
@@ -216,6 +219,7 @@ void pairs_all_density(struct runner *r, struct cell *ci, struct cell *cj) {
 
         /* Interact */
         runner_iact_nonsym_density(r2, dx, hi, pj->h, pi, pj, a, H);
+        runner_iact_nonsym_chemistry(r2, dx, hi, pj->h, pi, pj, a, H);
       }
     }
   }
@@ -247,6 +251,7 @@ void pairs_all_density(struct runner *r, struct cell *ci, struct cell *cj) {
 
         /* Interact */
         runner_iact_nonsym_density(r2, dx, hj, pi->h, pj, pi, a, H);
+        runner_iact_nonsym_chemistry(r2, dx, hj, pi->h, pj, pi, a, H);
       }
     }
   }
@@ -258,7 +263,9 @@ void pairs_all_force(struct runner *r, struct cell *ci, struct cell *cj) {
   struct part *pi, *pj;
   const double dim[3] = {r->e->s->dim[0], r->e->s->dim[1], r->e->s->dim[2]};
   const struct engine *e = r->e;
-  float a = 1.f, H = 0.f;
+  const struct cosmology *cosmo = e->cosmology;
+  const float a = cosmo->a;
+  const float H = cosmo->H;
 
   /* Implements a double-for loop and checks every interaction */
   for (int i = 0; i < ci->count; ++i) {
@@ -331,7 +338,9 @@ void self_all_density(struct runner *r, struct cell *ci) {
   float r2, hi, hj, hig2, hjg2, dxi[3];  //, dxj[3];
   struct part *pi, *pj;
   const struct engine *e = r->e;
-  float a = 1.f, H = 0.f;
+  const struct cosmology *cosmo = e->cosmology;
+  const float a = cosmo->a;
+  const float H = cosmo->H;
 
   /* Implements a double-for loop and checks every interaction */
   for (int i = 0; i < ci->count; ++i) {
@@ -360,6 +369,7 @@ void self_all_density(struct runner *r, struct cell *ci) {
 
         /* Interact */
         runner_iact_nonsym_density(r2, dxi, hi, hj, pi, pj, a, H);
+        runner_iact_nonsym_chemistry(r2, dxi, hi, hj, pi, pj, a, H);
       }
 
       /* Hit or miss? */
@@ -371,6 +381,7 @@ void self_all_density(struct runner *r, struct cell *ci) {
 
         /* Interact */
         runner_iact_nonsym_density(r2, dxi, hj, hi, pj, pi, a, H);
+        runner_iact_nonsym_chemistry(r2, dxi, hj, hi, pj, pi, a, H);
       }
     }
   }
@@ -379,7 +390,10 @@ void self_all_density(struct runner *r, struct cell *ci) {
 void self_all_force(struct runner *r, struct cell *ci) {
   float r2, hi, hj, hig2, hjg2, dxi[3];  //, dxj[3];
   struct part *pi, *pj;
-  float a = 1.f, H = 0.f;
+  const struct engine *e = r->e;
+  const struct cosmology *cosmo = e->cosmology;
+  const float a = cosmo->a;
+  const float H = cosmo->H;
 
   /* Implements a double-for loop and checks every interaction */
   for (int i = 0; i < ci->count; ++i) {
diff --git a/tests/tolerance_27_perturbed.dat b/tests/tolerance_27_perturbed.dat
index 4b7534f4ba43e7117452af819937f2d2b0451352..75974fe8f22a3cbc0d5ccc8e1022f56eaa45d6e7 100644
--- a/tests/tolerance_27_perturbed.dat
+++ b/tests/tolerance_27_perturbed.dat
@@ -1,4 +1,4 @@
 #   ID      pos_x      pos_y      pos_z        v_x        v_y        v_z           rho        rho_dh        wcount     wcount_dh         div_v       curl_vx       curl_vy       curl_vz
     0	    1e-6       1e-6	  1e-6 	       1e-6 	  1e-6	     1e-6	   2e-6       1e-4	    2e-4       1e-2		 1e-5	     3e-6	   3e-6		 7e-6
-    0	    1e-6       1e-6	  1e-6 	       1e-6 	  1e-6	     1e-6	   1e-6	      1.3e-3	    1e-5       2e-3		 6e-5	     3e-3	   2e-3	 	 2e-3
+    0	    1e-6       1e-6	  1e-6 	       1e-6 	  1e-6	     1e-6	   1e-6	      1.5e-3	    1e-5       2e-3		 6e-5	     3e-3	   2e-3	 	 2e-3
     0	    1e-6       1e-6	  1e-6 	       1e-6 	  1e-6	     1e-6	   1e-6	      2e-3	    1e-6       1e0		 1e-6	     2e-6	   2e-6		 2e-6