   // SAFETY: do not move this code after any other code.
   if ( flameOnTime.check() ) { // time to turn the flame off
     flameOff();
-    sensorEmiCooldown.reset(); // sensing needs to pause.
-  }
-
-  static boolean gameEnableFlag = gameEnabled();
-  static boolean systemResetFlag = systemReseted();
-  
+  }
+
+  // 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( sensorEmiCooldown.check() ) {
+  if( !emiInterference ) {
     // check system enable state
     if ( systemReset.update() ) { // reset state change
       Serial << F("Reset state change.  State: ");

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

// luminosity is not equal among LEDs
#define RED_MAX 255 // entry 255 in the gamma lookup

    // start cooldown counter
    flameCoolDownTime.reset();

    // when the solenoid closes, there's a lot of EMI that disrupts sensors.  Ignore the sensors for a period of time.
    sensorEmiCooldown.interval( config.flameCoolDownTime + EMI_COOLDOWN ); // add a little more time.
    sensorEmiCooldown.reset(); // sensing needs to pause.
    emiInterference = true;

    Serial << F("Flame on! ") << fireLevel << F(" mapped [") << config.minFireTime << F(",") << config.maxFireTime << F("]");
    Serial << F(" -> ") << flameTime << F("ms.  Cooldown: ") << config.flameCoolDownTime << F("ms.") << endl;
  }
