   char staggerMins = 10;            // gap to leave between valve startups
   Valve* valves = 0;                // the valves and their states
 
-  public:
   FlowController() { init(); }
   int getStaggerMillis() { return staggerMins * 60 * 1000; }
   void init() {
+    Valve::counter = 1;
     if(valves != 0) delete(valves);
     valves = new Valve[numValves];
 

  startWebServer();

  mcp.begin();      // use default address 0 for mcp23008
  mcp.pinMode(P1_MCP_PIN, OUTPUT);
  mcp.pinMode(P2_MCP_PIN, OUTPUT);
  mcp.pinMode(P3_MCP_PIN, OUTPUT);
  mcp.pinMode(S1_MCP_PIN, OUTPUT);
  mcp.pinMode(S2_MCP_PIN, OUTPUT);
  mcp.pinMode(S3_MCP_PIN, OUTPUT);    

  if(WiFi.hostname("waterelf"))
    Serial.println("set hostname succeeded");

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include "./DNSServer.h"      // patched lib
#include <FS.h>
#include <OneWire.h>
#include <DallasTemperature.h>
