diff --git a/src/cell.c b/src/cell.c
index 1e5968ecf362205e8b6c6b434d4f7dcc5b7f99c5..2df3608b0315deb6e1843359bfad1e21897511e0 100644
--- a/src/cell.c
+++ b/src/cell.c
@@ -39,17 +39,14 @@
 #undef TIMER
 #endif
 
+/* This object's header. */
+#include "cell.h"
+
 /* Local headers. */
-#include "const.h"
 #include "atomic.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
 #include "timers.h"
 #include "space.h"
-#include "multipole.h"
 #include "error.h"
-#include "inline.h"
 
 /* Global variables. */
 int cell_next_tag = 0;
diff --git a/src/common_io.c b/src/common_io.c
index 10f66f053152871a2a81ca5a2663573918bd33d6..c200a2deb1dea9b8e5cdcb2ab2afaaa81d7ecc9b 100644
--- a/src/common_io.c
+++ b/src/common_io.c
@@ -30,20 +30,19 @@
 #include <stddef.h>
 #include <hdf5.h>
 #include <math.h>
+
+/* MPI headers. */
 #ifdef WITH_MPI
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "common_io.h"
+
+/* Local includes. */
 #include "const.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
-#include "space.h"
-#include "scheduler.h"
-#include "engine.h"
 #include "error.h"
 #include "kernel.h"
-#include "common_io.h"
 
 /**
  * @brief Converts a C data type to the HDF5 equivalent.
diff --git a/src/debug.c b/src/debug.c
index ea1ac52d91a67f8656f110150375ea26ec522685..0ebbd44ae03ffc6ddfabab78e577335f0b9bbe5a 100644
--- a/src/debug.c
+++ b/src/debug.c
@@ -20,10 +20,8 @@
 
 #include <stdio.h>
 
-#include "const.h"
-#include "lock.h"
-#include "multipole.h"
-#include "space.h"
+/* This object's header. */
+#include "debug.h"
 
 /**
  * @brief Dump the information pertaining to the given cell.
diff --git a/src/engine.c b/src/engine.c
index ae93cfefe30f3cb17aecca793a3661563d98acd7..542035213f30f61666206478ed6bbe9b8fed2289 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -41,17 +41,15 @@
 #include <metis.h>
 #endif
 
-/* Local headers. */
+/* This object's header. */
 #include "engine.h"
-#include "const.h"
+
+/* Local headers. */
 #include "cycle.h"
 #include "atomic.h"
 #include "timers.h"
-#include "const.h"
-#include "vector.h"
 #include "debug.h"
 #include "cell.h"
-#include "queue.h"
 #include "error.h"
 
 #ifdef LEGACY_GADGET2_SPH
diff --git a/src/kernel.h b/src/kernel.h
index 4ffdbd081a3d9f6f89942b868898acee4e59b79d..da1d006e68e6272206eb047afe46e58566960910 100644
--- a/src/kernel.h
+++ b/src/kernel.h
@@ -23,6 +23,7 @@
 /* Includes. */
 #include "vector.h"
 #include "const.h"
+#include "inline.h"
 
 /**
  * @file kernel.h
diff --git a/src/multipole.c b/src/multipole.c
index bf3d77cf8feba7d965bad4128306ad7ba9b5797d..d76d7c14e415d2a2792ffa4da32966b1a5cd79c6 100644
--- a/src/multipole.c
+++ b/src/multipole.c
@@ -33,15 +33,8 @@
 #include <mpi.h>
 #endif
 
-/* Local headers. */
-#include "error.h"
-#include "const.h"
-#include "cycle.h"
-#include "atomic.h"
-#include "lock.h"
-#include "space.h"
+/* This object's header. */
 #include "multipole.h"
-#include "cell.h"
 
 /**
  * @brief Merge two multipoles.
diff --git a/src/parallel_io.c b/src/parallel_io.c
index beab80b880743da8f9afe5bbace4520006601f2d..f119fc0ebf895250024487f2201e8e5ec87b43e7 100644
--- a/src/parallel_io.c
+++ b/src/parallel_io.c
@@ -35,15 +35,11 @@
 #include <math.h>
 #include <mpi.h>
 
-#include "const.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
-#include "space.h"
-#include "scheduler.h"
-#include "engine.h"
+/* This object's header. */
+#include "parallel_io.h"
+
+/* Local includes. */
 #include "error.h"
-#include "kernel.h"
 #include "common_io.h"
 
 /**
diff --git a/src/proxy.c b/src/proxy.c
index d1aacef1f3f28a30cb547cd71736425669328a31..f8015575121df59dcabbad7aaaa47e67f05f34ad 100644
--- a/src/proxy.c
+++ b/src/proxy.c
@@ -37,19 +37,10 @@
 #include <mpi.h>
 #endif
 
-/* Local headers. */
-#include "const.h"
-#include "cycle.h"
-#include "atomic.h"
-#include "timers.h"
-#include "const.h"
-#include "vector.h"
-#include "lock.h"
-#include "space.h"
-#include "multipole.h"
-#include "task.h"
-#include "debug.h"
+/* This object's header. */
 #include "proxy.h"
+
+/* Local headers. */
 #include "error.h"
 
 /**
diff --git a/src/queue.c b/src/queue.c
index aa6658fe15ad9e4faa935ac477dcbd582eee6b77..3fa0096bf0fab8ecc6ec2508d5a7c2529451e54d 100644
--- a/src/queue.c
+++ b/src/queue.c
@@ -30,17 +30,12 @@
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "queue.h"
+
 /* Local headers. */
 #include "const.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
-#include "timers.h"
-#include "space.h"
-#include "multipole.h"
-#include "queue.h"
 #include "error.h"
-#include "inline.h"
 
 /* Counter macros. */
 #ifdef COUNTER
diff --git a/src/queue.h b/src/queue.h
index 6298eb1570b6b3ddfa145258738d025398d69a79..533007684fa41a4a25a10a14c504358926d0fe06 100644
--- a/src/queue.h
+++ b/src/queue.h
@@ -23,7 +23,6 @@
 #include "cell.h"
 #include "lock.h"
 #include "task.h"
-#include "queue.h"
 
 /* Some constants. */
 #define queue_maxsuper 50
diff --git a/src/runner.c b/src/runner.c
index 0e5cea066236d03072a857df09c436a6ef0b58a7..a1bfb53c77da389198c5c4f9860834587bc011f4 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -35,20 +35,16 @@
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "runner.h"
+
 /* Local headers. */
 #include "const.h"
-#include "cycle.h"
-#include "atomic.h"
 #include "timers.h"
-#include "const.h"
-#include "lock.h"
 #include "task.h"
 #include "space.h"
-#include "multipole.h"
-#include "queue.h"
 #include "scheduler.h"
 #include "engine.h"
-#include "runner.h"
 #include "error.h"
 
 /* Include the right variant of the SPH interactions */
diff --git a/src/scheduler.c b/src/scheduler.c
index 9ff63ec95a4bad17895136b31fd5d77ba788d5aa..87c5414a3a5d86f8cac88e162d50e3acaf07b20d 100644
--- a/src/scheduler.c
+++ b/src/scheduler.c
@@ -34,21 +34,16 @@
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "scheduler.h"
+
 /* Local headers. */
 #include "error.h"
 #include "cycle.h"
 #include "atomic.h"
 #include "timers.h"
 #include "const.h"
-#include "vector.h"
-#include "lock.h"
-#include "task.h"
-#include "debug.h"
-#include "space.h"
-#include "multipole.h"
-#include "queue.h"
 #include "kernel.h"
-#include "scheduler.h"
 
 /**
  * @brief Add an unlock_task to the given task.
diff --git a/src/serial_io.c b/src/serial_io.c
index 89b6c1583a2949651c27a8d7cc60c7a285a08a39..9d39695b19a3688950696fcf589904212158ea09 100644
--- a/src/serial_io.c
+++ b/src/serial_io.c
@@ -31,17 +31,16 @@
 #include <hdf5.h>
 #include <math.h>
 
-#include "mpi.h"
-
-#include "const.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
-#include "space.h"
-#include "scheduler.h"
-#include "engine.h"
+/* MPI headers. */
+#ifdef WITH_MPI
+#include <mpi.h>
+#endif
+
+/* This object's header. */
+#include "serial_io.h"
+
+/* Local includes. */
 #include "error.h"
-#include "kernel.h"
 #include "common_io.h"
 
 /*-----------------------------------------------------------------------------
diff --git a/src/single_io.c b/src/single_io.c
index cfcafc53df35beed330cb84a073f437193eb5122..0edab319e142404e774d17e89dd5956368d285c8 100644
--- a/src/single_io.c
+++ b/src/single_io.c
@@ -31,15 +31,11 @@
 #include <hdf5.h>
 #include <math.h>
 
-#include "const.h"
-#include "cycle.h"
-#include "lock.h"
-#include "task.h"
-#include "space.h"
-#include "scheduler.h"
-#include "engine.h"
+/* This object's header. */
+#include "single_io.h"
+
+/* Local includes. */
 #include "error.h"
-#include "kernel.h"
 #include "common_io.h"
 
 /*-----------------------------------------------------------------------------
diff --git a/src/space.c b/src/space.c
index 6db51a5899f1707b86b0798581b77722ab54dae6..e36e9547e5610133ce76966aefb322892313db4d 100644
--- a/src/space.c
+++ b/src/space.c
@@ -35,16 +35,13 @@
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "space.h"
+
 /* Local headers. */
-#include "const.h"
-#include "cycle.h"
 #include "atomic.h"
 #include "lock.h"
-#include "task.h"
 #include "kernel.h"
-#include "space.h"
-#include "multipole.h"
-#include "scheduler.h"
 #include "engine.h"
 #include "runner.h"
 #include "error.h"
diff --git a/src/task.c b/src/task.c
index 0586f97cdae58f10b62f9fc35bce68f7f6513a0a..4a068d5a79e25ca132635c6234a23b1f98c23589 100644
--- a/src/task.c
+++ b/src/task.c
@@ -36,14 +36,12 @@
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "task.h"
+
 /* Local headers. */
-#include "const.h"
-#include "cycle.h"
 #include "atomic.h"
 #include "lock.h"
-#include "space.h"
-#include "multipole.h"
-#include "task.h"
 #include "error.h"
 
 /* Task type names. */
diff --git a/src/timers.c b/src/timers.c
index 75d53bef18c719b8293ad574df3bf6d2c6f7b506..01a77d7804241f108b092f7d6857c90be3861cd0 100644
--- a/src/timers.c
+++ b/src/timers.c
@@ -20,8 +20,7 @@
 /* Config parameters. */
 #include "../config.h"
 
-/* Local headers. */
-#include "cycle.h"
+/* This object's header. */
 #include "timers.h"
 
 /* The timers. */
diff --git a/src/units.c b/src/units.c
index ed16f259f1de82a86448646ef886ba838e889e85..60cdbe6caef3bd0e3b3c36c06536ebe3a293076d 100644
--- a/src/units.c
+++ b/src/units.c
@@ -21,17 +21,23 @@
 /* Config parameters. */
 #include "../config.h"
 
+/* Some standard headers. */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <stddef.h>
 #include <math.h>
+
+/* MPI headers. */
 #ifdef WITH_MPI
 #include <mpi.h>
 #endif
 
+/* This object's header. */
+#include "units.h"
+
+/* Includes. */
 #include "const.h"
-#include "cycle.h"
 #include "error.h"
 #include "units.h"