diff --git a/src/space.c b/src/space.c
index 4d1ebfca87a933a8516ab144fc06624f46c0cc6c..e47fc2f4028d93389bf7cc6ec8caa621cfedaf1b 100644
--- a/src/space.c
+++ b/src/space.c
@@ -1189,7 +1189,7 @@ struct cell *space_getcell(struct space *s) {
  */
 
 void space_init(struct space *s, double dim[3], struct part *parts,
-                struct gpart *gparts, size_t N, size_t Ngpart, int periodic,
+                struct gpart *gparts, size_t Ngas, size_t Ngpart, int periodic,
                 double h_max, int verbose) {
 
   /* Store everything in the space. */
@@ -1197,54 +1197,50 @@ void space_init(struct space *s, double dim[3], struct part *parts,
   s->dim[1] = dim[1];
   s->dim[2] = dim[2];
   s->periodic = periodic;
-  s->nr_parts = N;
-  s->size_parts = N;
+  s->nr_parts = Ngas;
+  s->size_parts = Ngas;
   s->parts = parts;
+  s->nr_gparts = Ngpart;
+  s->size_gparts = Ngpart;
+  s->gparts = gparts;
   s->cell_min = h_max;
   s->nr_queues = 1;
   s->size_parts_foreign = 0;
 
-  /* Check that all the particle positions are reasonable, wrap if periodic. */
+  /* Check that all the gas particle positions are reasonable, wrap if periodic.
+   */
   if (periodic) {
-    for (int k = 0; k < N; k++)
+    for (int k = 0; k < Ngas; k++)
       for (int j = 0; j < 3; j++) {
         while (parts[k].x[j] < 0) parts[k].x[j] += dim[j];
         while (parts[k].x[j] >= dim[j]) parts[k].x[j] -= dim[j];
       }
   } else {
-    for (int k = 0; k < N; k++)
+    for (int k = 0; k < Ngas; k++)
       for (int j = 0; j < 3; j++)
         if (parts[k].x[j] < 0 || parts[k].x[j] >= dim[j])
           error("Not all particles are within the specified domain.");
   }
 
-  /* Allocate the xtra parts array. */
-  if (posix_memalign((void *)&s->xparts, part_align,
-                     N * sizeof(struct xpart)) != 0)
-    error("Failed to allocate xparts.");
-  bzero(s->xparts, N * sizeof(struct xpart));
-
-  /* For now, clone the parts to make gparts. */
-  if (posix_memalign((void *)&s->gparts, part_align,
-                     N * sizeof(struct gpart)) != 0)
-    error("Failed to allocate gparts.");
-  bzero(s->gparts, N * sizeof(struct gpart));
-  /* for ( int k = 0 ; k < N ; k++ ) {
-      s->gparts[k].x[0] = s->parts[k].x[0];
-      s->gparts[k].x[1] = s->parts[k].x[1];
-      s->gparts[k].x[2] = s->parts[k].x[2];
-      s->gparts[k].v[0] = s->parts[k].v[0];
-      s->gparts[k].v[1] = s->parts[k].v[1];
-      s->gparts[k].v[2] = s->parts[k].v[2];
-      s->gparts[k].mass = s->parts[k].mass;
-      s->gparts[k].dt = s->parts[k].dt;
-      s->gparts[k].id = s->parts[k].id;
-      s->gparts[k].part = &s->parts[k];
-      s->parts[k].gpart = &s->gparts[k];
+  /* Same for the gparts */
+  if (periodic) {
+    for (int k = 0; k < Ngpart; k++)
+      for (int j = 0; j < 3; j++) {
+        while (gparts[k].x[j] < 0) gparts[k].x[j] += dim[j];
+        while (gparts[k].x[j] >= dim[j]) gparts[k].x[j] -= dim[j];
       }
-  s->nr_gparts = s->nr_parts; */
-  s->nr_gparts = 0;
-  s->size_gparts = s->size_parts;
+  } else {
+    for (int k = 0; k < Ngpart; k++)
+      for (int j = 0; j < 3; j++)
+        if (gparts[k].x[j] < 0 || gparts[k].x[j] >= dim[j])
+          error("Not all particles are within the specified domain.");
+  }
+
+  /* Allocate the extra parts array. */
+  if (posix_memalign((void *)&s->xparts, xpart_align,
+                     Ngas * sizeof(struct xpart)) != 0)
+    error("Failed to allocate xparts.");
+  bzero(s->xparts, Ngas * sizeof(struct xpart));
 
   /* Init the space lock. */
   if (lock_init(&s->lock) != 0) error("Failed to create space spin-lock.");