 
 void outputColor( int r, int g, int b) {
 
-  if (!SINGLE_LED) {
+  if (GROVE_DRIVER) {
     Driver.begin();
     Driver.SetColor(r, g, b);
     Driver.end();

}

void flash() {
  if (debugMode) { Serial.print("Flash:");}
  outputColor( flashFirstColor ? flashcol1 : flashcol2 );
  flashFirstColor = !flashFirstColor;
  if (debugMode) { Serial.print(red); Serial.print(green); Serial.println(blue); }
}

void timeoutAction() {
  if (debugMode) { Serial.println("Processing timeout."); }
  if (!recentActivity) {
    Serial.print("No recent activity for "); Serial.print(TIMEOUT); Serial.println(" seconds.");
    // maybe timeout and timeout behavior should be configurable over serial.
    // low priority, bc this will mostly be running before serial comms have
    // been established.
    gradientPulseSetup(OFF, WHITE, 2);
    gradientLoop = true;
  } 
}

void gradientPulseSetup (const int col1[3],const int col2[3], float timev) { // timev is now in seconds
  flashThread.disable();
  gradDelayPerTick = (float) timev*1000/numdivs;
  gradPercPerTick = (float) 1/numdivs;
  gradPerc = 0;
  if (debugMode) {

    
    decodeHex(hex1,col1p);
    decodeHex(hex2,col2p);
    float timeVal = atof(timev); //use strtol or sscanf instead
    gradientPulseSetup(col1,col2,timeVal);

    if (debugMode) {
