diff --git a/src/cell.h b/src/cell.h
index 59d26413c6c333a32874f45aaf9288a6f254b725..211f16ab3078b082395ebee0babc594ec2b7882d 100644
--- a/src/cell.h
+++ b/src/cell.h
@@ -117,6 +117,10 @@ struct cell {
     /* Linking pointer for "memory management". */
     struct cell *next;
     
+    /* Timing stuff. */
+    ticks tic, toc;
+    int tid;
+    
     } __attribute__((aligned (64)));
 
 
diff --git a/src/engine.c b/src/engine.c
index 1e4afdb89bfa16b967b6d9fddf35ce8803f1cf0d..6241ec0755971d8422b259d52f6b85874866144a 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -732,8 +732,12 @@ void engine_step ( struct engine *e ) {
         while ( 1 ) {
             #pragma omp critical
             myk = k++;
-            if ( myk < e->s->nr_cells )
+            if ( myk < e->s->nr_cells ) {
+                e->s->cells[myk].tic = getticks();
+                e->s->cells[myk].tid = omp_get_thread_num();
                 engine_map_kick_first( &e->s->cells[myk] , e );
+                e->s->cells[myk].toc = getticks();
+                }
             else
                 break;
             }