         case BLUE:
             strip.ledOn(i, 0, 0, 10);
             break;
+    }
+}
+
+void resetAllColors() {
+    for(int i=0; i<12; i++) {
+        current[i] = 99; // flag as dirty
     }
 }
 

#define RED 3
#define BLUE 4

SparkButton strip = SparkButton();

int current[12];
int desired[12];

void setup() {
    strip.begin();

        current[i] = OFF;
        desired[i] = OFF;
    }
    drainResponse = RESPONSE_OK;
    Spark.function("update", handleUpdate);
    Serial.begin(9600);
}

void loop() {
    if (strip.buttonOn(2)) {
        drainResponse = RESPONSE_RESTART;
        strip.allLedsOn(10, 10, 10);
        resetAllColors();
    }

    if (drainResponse == RESPONSE_OK) {
        for(int i=0; i<12; i++) {
            if (current[i] != desired[i]) {
                updateColor(i, desired[i]);
                current[i] = desired[i];
            }
        }
    }
}
