 }
 
 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 );
 }

// remote control
#define RESET_PIN A0
#define GAME_ENABLE_PIN A1
#define DEBOUNCE_TIME 50UL // 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;

  if ( flameOnTime.check() ) { // time to turn the flame off
    flameOff();
  }
  
  // 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
