diff --git a/src/Makefile.am b/src/Makefile.am
index f44d47819672d10445fd969fe2ff20dbcb49463b..833f07e9e6cec94a7f1f3c01dfb0f975982ff931 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -41,11 +41,11 @@ include_HEADERS = space.h runner.h queue.h task.h lock.h cell.h part.h const.h \
 AM_SOURCES = space.c runner.c queue.c task.c cell.c engine.c \
     serial_io.c timers.c debug.c scheduler.c proxy.c parallel_io.c \
     units.c common_io.c single_io.c multipole.c version.c map.c \
-    kernel.c tools.c part.c partition.c clocks.c
+    kernel_hydro.c kernel_gravity.c tools.c part.c partition.c clocks.c
 
 # Include files for distribution, not installation.
-nobase_noinst_HEADERS = approx_math.h atomic.h cycle.h error.h inline.h kernel.h vector.h \
-		 runner_doiact.h runner_doiact_grav.h units.h intrinsics.h minmax.h \
+nobase_noinst_HEADERS = approx_math.h atomic.h cycle.h error.h inline.h kernel_hydro.h kernel_gravity.h \
+		 vector.h runner_doiact.h runner_doiact_grav.h units.h intrinsics.h minmax.h \
 		 gravity.h gravity_io.h \
 		 gravity/Default/gravity.h gravity/Default/gravity_iact.h gravity/Default/gravity_io.h \
 		 gravity/Default/gravity_debug.h gravity/Default/gravity_part.h  \
diff --git a/src/common_io.c b/src/common_io.c
index 6183effe9ce392ab930c581cbd118f025bbce773..bc981ecab31c56925ce08bfafb1a3a16aeee104b 100644
--- a/src/common_io.c
+++ b/src/common_io.c
@@ -42,7 +42,7 @@
 /* Local includes. */
 #include "const.h"
 #include "error.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "version.h"
 
 const char* particle_type_names[NUM_PARTICLE_TYPES] = {
diff --git a/src/common_io.h b/src/common_io.h
index 961f40e63d771e5e06ade525301caf59aae0bceb..b7f3a1a317d69937dde8692eead8f00c75649477 100644
--- a/src/common_io.h
+++ b/src/common_io.h
@@ -24,6 +24,7 @@
 #include "../config.h"
 
 /* Includes. */
+#include "kernel_hydro.h"
 #include "part.h"
 #include "units.h"
 
diff --git a/src/gravity/Default/gravity_iact.h b/src/gravity/Default/gravity_iact.h
index 37c9e912fc38cddc1dac3bbd8c69cb11ae219f0d..9158bf6ec288e78b5d3b73640a29520f3a00678b 100644
--- a/src/gravity/Default/gravity_iact.h
+++ b/src/gravity/Default/gravity_iact.h
@@ -22,7 +22,7 @@
 
 /* Includes. */
 #include "const.h"
-#include "kernel.h"
+#include "kernel_gravity.h"
 #include "vector.h"
 
 /**
diff --git a/src/hydro/Default/hydro_iact.h b/src/hydro/Default/hydro_iact.h
index b5b631501b2f9c398cf1f7e5ee32fd5c962ba86e..4f85299b9d61b3a66389bac3527a63068ab96db9 100644
--- a/src/hydro/Default/hydro_iact.h
+++ b/src/hydro/Default/hydro_iact.h
@@ -22,7 +22,7 @@
 
 /* Includes. */
 #include "const.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "part.h"
 #include "vector.h"
 
diff --git a/src/hydro/Gadget2/hydro_iact.h b/src/hydro/Gadget2/hydro_iact.h
index 09f796a8f37a9c015135f4aab3f821c2e862bdc9..d988c678affcf4ca722a965a7e52a7c120b4a924 100644
--- a/src/hydro/Gadget2/hydro_iact.h
+++ b/src/hydro/Gadget2/hydro_iact.h
@@ -22,7 +22,7 @@
 
 /* Includes. */
 #include "const.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "part.h"
 #include "vector.h"
 
diff --git a/src/hydro/Minimal/hydro_iact.h b/src/hydro/Minimal/hydro_iact.h
index b3b81a9a0dfe41e7bfafe51050d6f7cf7157e31c..3427ec538613842f8fbcf0d8ba5f9ba5a0b8d540 100644
--- a/src/hydro/Minimal/hydro_iact.h
+++ b/src/hydro/Minimal/hydro_iact.h
@@ -21,7 +21,7 @@
 
 /* Includes. */
 #include "const.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "part.h"
 #include "vector.h"
 
diff --git a/src/kernel.c b/src/kernel_gravity.c
similarity index 78%
rename from src/kernel.c
rename to src/kernel_gravity.c
index 58f5b0c9fdaa62663c65d5af18afe0a15a813834..639a964c813ef7fd95008857ee17b7dd5ffafb27 100644
--- a/src/kernel.c
+++ b/src/kernel_gravity.c
@@ -21,32 +21,7 @@
 #include <math.h>
 #include <stdio.h>
 
-#include "kernel.h"
-
-/**
- * @brief Test the SPH kernel function by dumping it in the interval [0,1].
- *
- * @param N number of intervals in [0,1].
- */
-void SPH_kernel_dump(int N) {
-
-  int k;
-  float x, w, dw_dx;
-  float x4[4] = {0.0f, 0.0f, 0.0f, 0.0f};
-  float w4[4] = {0.0f, 0.0f, 0.0f, 0.0f};
-  // float dw_dx4[4] __attribute__ ((aligned (16)));
-
-  for (k = 0; k <= N; k++) {
-    x = ((float)k) / N;
-    x4[3] = x4[2];
-    x4[2] = x4[1];
-    x4[1] = x4[0];
-    x4[0] = x;
-    kernel_deval(x, &w, &dw_dx);
-    // kernel_deval_vec( (vector *)x4 , (vector *)w4 , (vector *)dw_dx4 );
-    printf(" %e %e %e %e %e %e %e\n", x, w, dw_dx, w4[0], w4[1], w4[2], w4[3]);
-  }
-}
+#include "kernel_gravity.h"
 
 /**
  * @brief The Gadget-2 gravity kernel function
diff --git a/src/kernel_gravity.h b/src/kernel_gravity.h
new file mode 100644
index 0000000000000000000000000000000000000000..7fd4b061a7e94be01a11b06ad23d9113f579ebb8
--- /dev/null
+++ b/src/kernel_gravity.h
@@ -0,0 +1,209 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2012 Pedro Gonnet (pedro.gonnet@durham.ac.uk)
+ *                    Matthieu Schaller (matthieu.schaller@durham.ac.uk)
+ *
+ * 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_KERNEL_GRAVITY_H
+#define SWIFT_KERNEL_GRAVITY_H
+
+/* Includes. */
+#include "const.h"
+#include "inline.h"
+#include "vector.h"
+
+/* Gravity kernel stuff
+ * -----------------------------------------------------------------------------------------------
+ */
+
+/* The gravity kernel is defined as a degree 6 polynomial in the distance
+   r. The resulting value should be post-multiplied with r^-3, resulting
+   in a polynomial with terms ranging from r^-3 to r^3, which are
+   sufficient to model both the direct potential as well as the splines
+   near the origin. */
+
+/* Coefficients for the gravity kernel. */
+#define kernel_grav_degree 6
+#define kernel_grav_ivals 2
+#define kernel_grav_scale (2 * const_iepsilon)
+static float kernel_grav_coeffs
+    [(kernel_grav_degree + 1) * (kernel_grav_ivals + 1)] = {
+        32.0f * const_iepsilon6,         -192.0f / 5.0f * const_iepsilon5,
+        0.0f,                            32.0f / 3.0f * const_iepsilon3,
+        0.0f,                            0.0f,
+        0.0f,                            -32.0f / 3.0f * const_iepsilon6,
+        192.0f / 5.0f * const_iepsilon5, -48.0f * const_iepsilon4,
+        64.0f / 3.0f * const_iepsilon3,  0.0f,
+        0.0f,                            -1.0f / 15.0f,
+        0.0f,                            0.0f,
+        0.0f,                            0.0f,
+        0.0f,                            0.0f,
+        1.0f};
+
+/**
+ * @brief Computes the gravity cubic spline for a given distance x.
+ */
+
+__attribute__((always_inline)) INLINE static void kernel_grav_eval(float x,
+                                                                   float *W) {
+  int ind = fmin(x * kernel_grav_scale, kernel_grav_ivals);
+  float *coeffs = &kernel_grav_coeffs[ind * (kernel_grav_degree + 1)];
+  float w = coeffs[0] * x + coeffs[1];
+  for (int k = 2; k <= kernel_grav_degree; k++) w = x * w + coeffs[k];
+  *W = w;
+}
+
+#ifdef VECTORIZE
+
+/**
+ * @brief Computes the gravity cubic spline for a given distance x (Vectorized
+ * version).
+ */
+
+__attribute__((always_inline))
+    INLINE static void kernel_grav_eval_vec(vector *x, vector *w) {
+
+  vector ind, c[kernel_grav_degree + 1];
+  int j, k;
+
+  /* Load x and get the interval id. */
+  ind.m = vec_ftoi(vec_fmin(x->v * vec_set1(kernel_grav_scale),
+                            vec_set1((float)kernel_grav_ivals)));
+
+  /* load the coefficients. */
+  for (k = 0; k < VEC_SIZE; k++)
+    for (j = 0; j < kernel_grav_degree + 1; j++)
+      c[j].f[k] = kernel_grav_coeffs[ind.i[k] * (kernel_grav_degree + 1) + j];
+
+  /* Init the iteration for Horner's scheme. */
+  w->v = (c[0].v * x->v) + c[1].v;
+
+  /* And we're off! */
+  for (int k = 2; k <= kernel_grav_degree; k++) w->v = (x->v * w->v) + c[k].v;
+}
+
+#endif
+
+/* Blending function stuff
+ * --------------------------------------------------------------------------------------------
+ */
+
+/* Coefficients for the blending function. */
+#define blender_degree 3
+#define blender_ivals 3
+#define blender_scale 4.0f
+static float blender_coeffs[(blender_degree + 1) * (blender_ivals + 1)] = {
+    0.0f,   0.0f,  0.0f,   1.0f,  -32.0f, 24.0f, -6.0f, 1.5f,
+    -32.0f, 72.0f, -54.0f, 13.5f, 0.0f,   0.0f,  0.0f,  0.0f};
+
+/**
+ * @brief Computes the cubic spline blender for a given distance x.
+ */
+
+__attribute__((always_inline)) INLINE static void blender_eval(float x,
+                                                               float *W) {
+  int ind = fmin(x * blender_scale, blender_ivals);
+  float *coeffs = &blender_coeffs[ind * (blender_degree + 1)];
+  float w = coeffs[0] * x + coeffs[1];
+  for (int k = 2; k <= blender_degree; k++) w = x * w + coeffs[k];
+  *W = w;
+}
+
+/**
+ * @brief Computes the cubic spline blender and its derivative for a given
+ * distance x.
+ */
+
+__attribute__((always_inline)) INLINE static void blender_deval(float x,
+                                                                float *W,
+                                                                float *dW_dx) {
+  int ind = fminf(x * blender_scale, blender_ivals);
+  float *coeffs = &blender_coeffs[ind * (blender_degree + 1)];
+  float w = coeffs[0] * x + coeffs[1];
+  float dw_dx = coeffs[0];
+  for (int k = 2; k <= blender_degree; k++) {
+    dw_dx = dw_dx * x + w;
+    w = x * w + coeffs[k];
+  }
+  *W = w;
+  *dW_dx = dw_dx;
+}
+
+#ifdef VECTORIZE
+
+/**
+ * @brief Computes the cubic spline blender and its derivative for a given
+ * distance x (Vectorized version). Gives a sensible answer only if x<2.
+ */
+
+__attribute__((always_inline)) INLINE static void blender_eval_vec(vector *x,
+                                                                   vector *w) {
+
+  vector ind, c[blender_degree + 1];
+  int j, k;
+
+  /* Load x and get the interval id. */
+  ind.m = vec_ftoi(
+      vec_fmin(x->v * vec_set1(blender_scale), vec_set1((float)blender_ivals)));
+
+  /* load the coefficients. */
+  for (k = 0; k < VEC_SIZE; k++)
+    for (j = 0; j < blender_degree + 1; j++)
+      c[j].f[k] = blender_coeffs[ind.i[k] * (blender_degree + 1) + j];
+
+  /* Init the iteration for Horner's scheme. */
+  w->v = (c[0].v * x->v) + c[1].v;
+
+  /* And we're off! */
+  for (int k = 2; k <= blender_degree; k++) w->v = (x->v * w->v) + c[k].v;
+}
+
+/**
+ * @brief Computes the cubic spline blender and its derivative for a given
+ * distance x (Vectorized version). Gives a sensible answer only if x<2.
+ */
+
+__attribute__((always_inline))
+    INLINE static void blender_deval_vec(vector *x, vector *w, vector *dw_dx) {
+
+  vector ind, c[blender_degree + 1];
+  int j, k;
+
+  /* Load x and get the interval id. */
+  ind.m = vec_ftoi(
+      vec_fmin(x->v * vec_set1(blender_scale), vec_set1((float)blender_ivals)));
+
+  /* load the coefficients. */
+  for (k = 0; k < VEC_SIZE; k++)
+    for (j = 0; j < blender_degree + 1; j++)
+      c[j].f[k] = blender_coeffs[ind.i[k] * (blender_degree + 1) + j];
+
+  /* Init the iteration for Horner's scheme. */
+  w->v = (c[0].v * x->v) + c[1].v;
+  dw_dx->v = c[0].v;
+
+  /* And we're off! */
+  for (int k = 2; k <= blender_degree; k++) {
+    dw_dx->v = (dw_dx->v * x->v) + w->v;
+    w->v = (x->v * w->v) + c[k].v;
+  }
+}
+
+#endif
+
+void gravity_kernel_dump(float r_max, int N);
+
+#endif  // SWIFT_KERNEL_GRAVITY_H
diff --git a/src/kernel_hydro.c b/src/kernel_hydro.c
new file mode 100644
index 0000000000000000000000000000000000000000..18a930d8ff7f792b2f9606787a6e4c547770629a
--- /dev/null
+++ b/src/kernel_hydro.c
@@ -0,0 +1,49 @@
+/*******************************************************************************
+ * This file is part of SWIFT.
+ * Copyright (c) 2015 Pedro Gonnet (pedro.gonnet@durham.ac.uk),
+ *                    Matthieu Schaller (matthieu.schaller@durham.ac.uk)
+ *
+ * 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/>.
+ *
+ ******************************************************************************/
+
+#include <math.h>
+#include <stdio.h>
+
+#include "kernel_hydro.h"
+
+/**
+ * @brief Test the SPH kernel function by dumping it in the interval [0,1].
+ *
+ * @param N number of intervals in [0,1].
+ */
+void hydro_kernel_dump(int N) {
+
+  int k;
+  float x, w, dw_dx;
+  float x4[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+  float w4[4] = {0.0f, 0.0f, 0.0f, 0.0f};
+  // float dw_dx4[4] __attribute__ ((aligned (16)));
+
+  for (k = 0; k <= N; k++) {
+    x = ((float)k) / N;
+    x4[3] = x4[2];
+    x4[2] = x4[1];
+    x4[1] = x4[0];
+    x4[0] = x;
+    kernel_deval(x, &w, &dw_dx);
+    // kernel_deval_vec( (vector *)x4 , (vector *)w4 , (vector *)dw_dx4 );
+    printf(" %e %e %e %e %e %e %e\n", x, w, dw_dx, w4[0], w4[1], w4[2], w4[3]);
+  }
+}
diff --git a/src/kernel.h b/src/kernel_hydro.h
similarity index 69%
rename from src/kernel.h
rename to src/kernel_hydro.h
index aead6a95adc35028834d671448223a31a57fc2b6..2780742bdca73d80abc3897741ae45981fa5cba0 100644
--- a/src/kernel.h
+++ b/src/kernel_hydro.h
@@ -17,202 +17,14 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  ******************************************************************************/
-#ifndef SWIFT_KERNEL_H
-#define SWIFT_KERNEL_H
+#ifndef SWIFT_KERNEL_HYDRO_H
+#define SWIFT_KERNEL_HYDRO_H
 
 /* Includes. */
 #include "const.h"
 #include "inline.h"
 #include "vector.h"
 
-/**
- * @file kernel.h
- * @brief SPH kernel functions. Compute W(x,h) and the gradient of W(x,h),
- *        as well as the blending function used for gravity.
- */
-
-/* Gravity kernel stuff
- * -----------------------------------------------------------------------------------------------
- */
-
-/* The gravity kernel is defined as a degree 6 polynomial in the distance
-   r. The resulting value should be post-multiplied with r^-3, resulting
-   in a polynomial with terms ranging from r^-3 to r^3, which are
-   sufficient to model both the direct potential as well as the splines
-   near the origin. */
-
-/* Coefficients for the gravity kernel. */
-#define kernel_grav_degree 6
-#define kernel_grav_ivals 2
-#define kernel_grav_scale (2 * const_iepsilon)
-static float kernel_grav_coeffs
-    [(kernel_grav_degree + 1) * (kernel_grav_ivals + 1)] = {
-        32.0f * const_iepsilon6,         -192.0f / 5.0f * const_iepsilon5,
-        0.0f,                            32.0f / 3.0f * const_iepsilon3,
-        0.0f,                            0.0f,
-        0.0f,                            -32.0f / 3.0f * const_iepsilon6,
-        192.0f / 5.0f * const_iepsilon5, -48.0f * const_iepsilon4,
-        64.0f / 3.0f * const_iepsilon3,  0.0f,
-        0.0f,                            -1.0f / 15.0f,
-        0.0f,                            0.0f,
-        0.0f,                            0.0f,
-        0.0f,                            0.0f,
-        1.0f};
-
-/**
- * @brief Computes the gravity cubic spline for a given distance x.
- */
-
-__attribute__((always_inline)) INLINE static void kernel_grav_eval(float x,
-                                                                   float *W) {
-  int ind = fmin(x * kernel_grav_scale, kernel_grav_ivals);
-  float *coeffs = &kernel_grav_coeffs[ind * (kernel_grav_degree + 1)];
-  float w = coeffs[0] * x + coeffs[1];
-  for (int k = 2; k <= kernel_grav_degree; k++) w = x * w + coeffs[k];
-  *W = w;
-}
-
-#ifdef VECTORIZE
-
-/**
- * @brief Computes the gravity cubic spline for a given distance x (Vectorized
- * version).
- */
-
-__attribute__((always_inline))
-    INLINE static void kernel_grav_eval_vec(vector *x, vector *w) {
-
-  vector ind, c[kernel_grav_degree + 1];
-  int j, k;
-
-  /* Load x and get the interval id. */
-  ind.m = vec_ftoi(vec_fmin(x->v * vec_set1(kernel_grav_scale),
-                            vec_set1((float)kernel_grav_ivals)));
-
-  /* load the coefficients. */
-  for (k = 0; k < VEC_SIZE; k++)
-    for (j = 0; j < kernel_grav_degree + 1; j++)
-      c[j].f[k] = kernel_grav_coeffs[ind.i[k] * (kernel_grav_degree + 1) + j];
-
-  /* Init the iteration for Horner's scheme. */
-  w->v = (c[0].v * x->v) + c[1].v;
-
-  /* And we're off! */
-  for (int k = 2; k <= kernel_grav_degree; k++) w->v = (x->v * w->v) + c[k].v;
-}
-
-#endif
-
-/* Blending function stuff
- * --------------------------------------------------------------------------------------------
- */
-
-/* Coefficients for the blending function. */
-#define blender_degree 3
-#define blender_ivals 3
-#define blender_scale 4.0f
-static float blender_coeffs[(blender_degree + 1) * (blender_ivals + 1)] = {
-    0.0f,   0.0f,  0.0f,   1.0f,  -32.0f, 24.0f, -6.0f, 1.5f,
-    -32.0f, 72.0f, -54.0f, 13.5f, 0.0f,   0.0f,  0.0f,  0.0f};
-
-/**
- * @brief Computes the cubic spline blender for a given distance x.
- */
-
-__attribute__((always_inline)) INLINE static void blender_eval(float x,
-                                                               float *W) {
-  int ind = fmin(x * blender_scale, blender_ivals);
-  float *coeffs = &blender_coeffs[ind * (blender_degree + 1)];
-  float w = coeffs[0] * x + coeffs[1];
-  for (int k = 2; k <= blender_degree; k++) w = x * w + coeffs[k];
-  *W = w;
-}
-
-/**
- * @brief Computes the cubic spline blender and its derivative for a given
- * distance x.
- */
-
-__attribute__((always_inline)) INLINE static void blender_deval(float x,
-                                                                float *W,
-                                                                float *dW_dx) {
-  int ind = fminf(x * blender_scale, blender_ivals);
-  float *coeffs = &blender_coeffs[ind * (blender_degree + 1)];
-  float w = coeffs[0] * x + coeffs[1];
-  float dw_dx = coeffs[0];
-  for (int k = 2; k <= blender_degree; k++) {
-    dw_dx = dw_dx * x + w;
-    w = x * w + coeffs[k];
-  }
-  *W = w;
-  *dW_dx = dw_dx;
-}
-
-#ifdef VECTORIZE
-
-/**
- * @brief Computes the cubic spline blender and its derivative for a given
- * distance x (Vectorized version). Gives a sensible answer only if x<2.
- */
-
-__attribute__((always_inline)) INLINE static void blender_eval_vec(vector *x,
-                                                                   vector *w) {
-
-  vector ind, c[blender_degree + 1];
-  int j, k;
-
-  /* Load x and get the interval id. */
-  ind.m = vec_ftoi(
-      vec_fmin(x->v * vec_set1(blender_scale), vec_set1((float)blender_ivals)));
-
-  /* load the coefficients. */
-  for (k = 0; k < VEC_SIZE; k++)
-    for (j = 0; j < blender_degree + 1; j++)
-      c[j].f[k] = blender_coeffs[ind.i[k] * (blender_degree + 1) + j];
-
-  /* Init the iteration for Horner's scheme. */
-  w->v = (c[0].v * x->v) + c[1].v;
-
-  /* And we're off! */
-  for (int k = 2; k <= blender_degree; k++) w->v = (x->v * w->v) + c[k].v;
-}
-
-/**
- * @brief Computes the cubic spline blender and its derivative for a given
- * distance x (Vectorized version). Gives a sensible answer only if x<2.
- */
-
-__attribute__((always_inline))
-    INLINE static void blender_deval_vec(vector *x, vector *w, vector *dw_dx) {
-
-  vector ind, c[blender_degree + 1];
-  int j, k;
-
-  /* Load x and get the interval id. */
-  ind.m = vec_ftoi(
-      vec_fmin(x->v * vec_set1(blender_scale), vec_set1((float)blender_ivals)));
-
-  /* load the coefficients. */
-  for (k = 0; k < VEC_SIZE; k++)
-    for (j = 0; j < blender_degree + 1; j++)
-      c[j].f[k] = blender_coeffs[ind.i[k] * (blender_degree + 1) + j];
-
-  /* Init the iteration for Horner's scheme. */
-  w->v = (c[0].v * x->v) + c[1].v;
-  dw_dx->v = c[0].v;
-
-  /* And we're off! */
-  for (int k = 2; k <= blender_degree; k++) {
-    dw_dx->v = (dw_dx->v * x->v) + w->v;
-    w->v = (x->v * w->v) + c[k].v;
-  }
-}
-
-#endif
-
-/* --------------------------------------------------------------------------------------------------------------------
- */
-
 #if defined(CUBIC_SPLINE_KERNEL)
 
 /* --------------------------------------------------------------------------------------------------------------------
@@ -611,7 +423,6 @@ __attribute__((always_inline)) INLINE static void kernel_eval(float x,
 #endif  // Kernel choice
 
 /* Some cross-check functions */
-void SPH_kernel_dump(int N);
-void gravity_kernel_dump(float r_max, int N);
+void hydro_kernel_dump(int N);
 
-#endif  // SWIFT_KERNEL_H
+#endif  // SWIFT_KERNEL_HYDRO_H
diff --git a/src/multipole.h b/src/multipole.h
index 91ba6df965ce9d3b088d538411b7f0a8555ba0e4..d5939878d86ff7f7540870942f00e7fd7da7f238 100644
--- a/src/multipole.h
+++ b/src/multipole.h
@@ -25,7 +25,7 @@
 /* Includes. */
 #include "const.h"
 #include "inline.h"
-#include "kernel.h"
+#include "kernel_gravity.h"
 #include "part.h"
 
 /* Some constants. */
diff --git a/src/scheduler.c b/src/scheduler.c
index 38a1cd8c663307e0c0378d8bec2e0cd3d8f37fa8..955d41c38e84b59ce69ae6f1f623fecaf574702e 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -43,7 +43,7 @@
 #include "cycle.h"
 #include "error.h"
 #include "intrinsics.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "timers.h"
 
 /**
diff --git a/src/space.c b/src/space.c
index 0cce068b5d8a8060b6ca4cde71aeff9dc6b69e8d..ddb6d67781c2a9cd2bde917ae0dfe350280af649 100644
--- a/src/space.c
+++ b/src/space.c
@@ -39,7 +39,7 @@
 #include "atomic.h"
 #include "engine.h"
 #include "error.h"
-#include "kernel.h"
+#include "kernel_hydro.h"
 #include "lock.h"
 #include "minmax.h"
 #include "runner.h"