 }
 
 boolean systemReseted() {
+  // with EMI, be very sure.
+  Metro readTime(DEBOUNCE_TIME);
+  readTime.reset();
+  while( !readTime.check() ) systemReset.update();
+  
   // at system power up, relay is open, meaning pin will read HIGH.
   return ( systemReset.read() == LOW );
 }
 
 boolean gameEnabled() {
+  // with EMI, be very sure.
+  Metro readTime(DEBOUNCE_TIME);
+  readTime.reset();
+  while( !readTime.check() ) gameEnable.update();
+
   // at system power up, relay is open, meaning pin will read HIGH.
   return ( gameEnable.read() == HIGH );
 }

  if ( flameOnTime.check() ) { // time to turn the flame off
    flameOff();
  }

  // check to see if we can read sensors again after EMI burst.
  if ( sensorEmiCooldown.check() && emiInterference == true ) {
    Serial << F("EMI cooldown ended.") << endl;
    emiInterference = false;
  }
  // put all sensor code inside of this cooldown check.
  if ( !emiInterference ) {
    // check system enable state
    if ( systemReset.update() ) { // reset state change
      Serial << F("Reset state change.  State: ");
      systemResetFlag = systemReseted();
      Serial << systemResetFlag << endl;
    }
    // check system enable state
    if ( gameEnable.update() ) { // gameplay enable state change
      Serial << F("Gameplay state change.  State: ");
      gameEnableFlag = gameEnabled();
      Serial << gameEnableFlag << endl;
    }
  }

  // check for comms traffic

// remote control
#define RESET_PIN A0
#define GAME_ENABLE_PIN A1
#define DEBOUNCE_TIME 100UL // need a long debounce b/c electrical noise from solenoid.
Bounce systemReset = Bounce(RESET_PIN, DEBOUNCE_TIME);
Bounce gameEnable = Bounce(GAME_ENABLE_PIN, DEBOUNCE_TIME);
boolean gameEnableFlag = true;
