   bool urgent = false;
   if (next_event < global_clock) {
     urgent = true;
-    if (runlevel == GOGOGO) { 
-      /* TODO */
+    if (runlevel == GOGOGO) {
+      bool complete = run_iteration();
+      if (complete) process_stop_running();
     }
     else {
       if (led_is_on) digitalWrite(LED_PIN, LOW);

      runlevel = C_WAIT;
      t = p->t; t += d;
      yn = p->d; yn += d;
    }
    else {
      who = 255;

    return true;
  }

  void solo(Protocol *ps, int &pi) {
    int i = 0;
    ps[i] = *this;
    while (i+1 < PROT && ps[i].next < PROT) {
      ps[i+1] = ps[ps[i].next];
      ps[i].next = (byte)(i+1);
      i++;
    }
    pi = i;
  }

  static void init(Protocol *ps, int &pi) {
    for (int i = 0; i < DIG+ANA; i++) ps[i].init();
    for (int i = DIG; i < DIG+ANA; i++) ps[i].j = 'l';
    pi = 0;
  }
};

Protocol protocols[PROT];
int proti = 0;
Protocol not_a_protocol = (Protocol){{0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, ' ', ' ', 255, 255};


