     long t = millis();
     long nextCycleStart = t;
     for(int i = 0; i < numValves; i++) {
-      // TODO valves[i].startTime = nextCycleStart;
-      // nextCycleStart += getStaggerMillis();
+      valves[i].startTime = nextCycleStart;
+      nextCycleStart += getStaggerMillis();
     }
   }
   void step(monitor_t* now) {

  void on()  { stateChange(true); } // fill time
  void off() { stateChange(false); }// drain time
  void step(monitor_t* now) {       // check conditions and adjust state
    /* TODO
    if(! running) {
      if(startTime >= millis()) {
        running = true;
        ...
      }
    }
    */
  }
};
int Valve::counter = 1;             // definition (the above only declares)

void loop() {
  dnsServer.processNextRequest();
  webServer.handleClient();

  if(loopCounter == TICK_MONITOR) { // monitor levels, step valves, push data
    monitor_t* now = &monitorData[monitorCursor];
