diff --git a/src/engine.c b/src/engine.c
index 6241ec0755971d8422b259d52f6b85874866144a..d389129116c1b2280ab8352d88f8283bcbdcbe08 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -518,7 +518,12 @@ void engine_map_kick_first ( struct cell *c , void *data ) {
         /* Loop over the remaining progeny. */
         for ( k = 0 ; k < 8 ; k++ )
             if ( c->progeny[k] != NULL ) {
+                #pragma omp task
                 engine_map_kick_first( c->progeny[k] , e );
+                }
+        #pragma omp taskwait
+        for ( k = 0 ; k < 8 ; k++ )
+            if ( c->progeny[k] != NULL ) {
                 dt_min = fminf( dt_min , c->progeny[k]->dt_min );
                 dt_max = fmaxf( dt_max , c->progeny[k]->dt_max );
                 h_max = fmaxf( h_max , c->progeny[k]->h_max );
@@ -725,7 +730,7 @@ void engine_step ( struct engine *e ) {
     /* First kick. */
     TIMER_TIC
     // space_map_cells_post( e->s , 1 , &engine_map_kick_first , e );
-    k = 0;
+    /* k = 0;
     #pragma omp parallel shared(k,e)
     {
         int myk;
@@ -741,7 +746,12 @@ void engine_step ( struct engine *e ) {
             else
                 break;
             }
+        } */
+    for ( k = 0 ; k < e->s->nr_cells ; k++ ) {
+        #pragma omp task
+        engine_map_kick_first( &e->s->cells[k] , e );
         }
+    #pragma omp taskwait
     TIMER_TOC( timer_kick1 );
         
     // for(k=0; k<10; ++k)