diff --git a/src/cell.h b/src/cell.h
index ebdfc8ec5d13ce6867159b6ff8bc3c62d065adc6..ad39354c6ced334c8c6dfa8420dc6c7f649009a3 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -26,8 +26,10 @@
 /* Includes. */
 #include "lock.h"
 #include "multipole.h"
+#include "part.h"
+#include "task.h"
 
-/* Forward declaration of space, needed for cell_unpack. */
+/* Avoid cyclic inclusions */
 struct space;
 
 /* Max tag size set to 2^29 to take into account some MPI implementations
diff --git a/src/common_io.h b/src/common_io.h
index 08b4e4f22dd79a1a1f9accfb27eecbbb22a347a1..fa6811a26671a2ed85c12ada7bb380094f55795d 100644
--- a/src/common_io.h
+++ b/src/common_io.h
@@ -25,10 +25,8 @@
 
 #if defined(HAVE_HDF5)
 
-/* Forward-declare stuff to avoid cyclic includes. */
-struct UnitSystem;
-struct part;
-struct gpart;
+#include "part.h"
+#include "units.h"
 
 /**
  * @brief The different types of data used in the GADGET IC files.
@@ -107,6 +105,6 @@ void writeXMFline(FILE* xmfFile, char* fileName, char* partTypeGroupName,
 void writeCodeDescription(hid_t h_file);
 void writeUnitSystem(hid_t h_file, struct UnitSystem* us);
 
-#endif
+#endif /* defined HDF5 */
 
 #endif /* SWIFT_COMMON_IO_H */
diff --git a/src/parallel_io.h b/src/parallel_io.h
index 5e85e0948283ceb4095a6f49d026ef5e39168538..26757cb679e475d6acd2ce3c408135dfe5e49081 100644
--- a/src/parallel_io.h
+++ b/src/parallel_io.h
@@ -27,11 +27,10 @@
 #include <mpi.h>
 #endif
 
-/* Forward-declare stuff to avoid cyclic includes. */
-struct engine;
-struct gpart;
-struct part;
-struct UnitSystem;
+/* Includes. */
+#include "engine.h"
+#include "part.h"
+#include "units.h"
 
 #if defined(HAVE_HDF5) && defined(WITH_MPI) && defined(HAVE_PARALLEL_HDF5)
 
diff --git a/src/scheduler.h b/src/scheduler.h
index f6b358b158d8a37d118d8ad0ccee270108aa3f95..62af23152e7e2d2bc68e0cc4d7122f4dd0483aa1 100644
--- a/src/scheduler.h
+++ b/src/scheduler.h
@@ -32,13 +32,10 @@
 #include <pthread.h>
 
 /* Includes. */
+#include "cell.h"
 #include "lock.h"
-
-/* Forward-declare stuff to avoid cyclic includes. */
-struct cell;
-struct queue;
-struct space;
-struct task;
+#include "queue.h"
+#include "task.h"
 
 /* Some constants. */
 #define scheduler_maxwait 3
diff --git a/src/serial_io.h b/src/serial_io.h
index f3b6d7ab983ce2ba5c32017201f74d57c9e0a2fa..6b64624772214494a43316d3a8aa3910c7238dc8 100644
--- a/src/serial_io.h
+++ b/src/serial_io.h
@@ -27,11 +27,10 @@
 #include <mpi.h>
 #endif
 
-/* Forward-declare stuff to avoid cyclic includes. */
-struct engine;
-struct gpart;
-struct part;
-struct UnitSystem;
+/* Includes. */
+#include "engine.h"
+#include "part.h"
+#include "units.h"
 
 #if defined(HAVE_HDF5) && defined(WITH_MPI) && !defined(HAVE_PARALLEL_HDF5)
 
diff --git a/src/single_io.h b/src/single_io.h
index ae176ce37f41865df9c7c0d55c7af5ca97373702..d2c87655e1c91b92e8ccf2aa50d2e0bf98f13482 100644
--- a/src/single_io.h
+++ b/src/single_io.h
@@ -22,11 +22,10 @@
 /* Config parameters. */
 #include "../config.h"
 
-/* Forward-declare stuff to avoid cyclic includes. */
-struct engine;
-struct gpart;
-struct part;
-struct UnitSystem;
+/* Includes. */
+#include "engine.h"
+#include "part.h"
+#include "units.h"
 
 #if defined(HAVE_HDF5) && !defined(WITH_MPI)
 
diff --git a/src/space.h b/src/space.h
index fec25a35937c10c419a4c5dd4fffa8e08e5c9c82..5cfb2cb8368ed60586aad62e0f753aab17bf55d1 100644
--- a/src/space.h
+++ b/src/space.h
@@ -23,13 +23,18 @@
 #ifndef SWIFT_SPACE_H
 #define SWIFT_SPACE_H
 
-/* Includes. */
+/* Config parameters. */
+#include "../config.h"
+
+/* Some standard headers. */
 #include <stddef.h>
 
+/* Includes. */
+#include "cell.h"
 #include "lock.h"
-
-/* Forward-declare stuff to avoid cyclic includes. */
-struct swift_params;
+#include "parser.h"
+#include "part.h"
+#include "space.h"
 
 /* Some constants. */
 #define space_maxdepth 10
diff --git a/src/tools.h b/src/tools.h
index ea8eddf43fb835523b7a7631963bbab2d621cedf..2a4462f274d8e9acd1f2d8e79996ad92c630d404 100644
--- a/src/tools.h
+++ b/src/tools.h
@@ -22,11 +22,13 @@
 #ifndef SWIFT_TOOL_H
 #define SWIFT_TOOL_H
 
-/* Forward-declare stuff to avoid cyclic includes. */
-struct cell;
-struct gpart;
-struct part;
-struct runner;
+/* Config parameters. */
+#include "../config.h"
+
+/* Includes. */
+#include "cell.h"
+#include "part.h"
+#include "runner.h"
 
 void factor(int value, int *f1, int *f2);
 void density_dump(int N);