         current[i] = OFF;
         desired[i] = OFF;
     }
+    drainResponse = RESPONSE_OK;
     Spark.function("update", handleUpdate);
     Serial.begin(9600);
 }
 
 void loop() {
-    for(int i=0; i<12; i++) {
-        if (current[i] != desired[i]) {
-            updateColor(i, desired[i]);
-            current[i] = desired[i];
+    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];
+            }
         }
     }
 }

            current += c;
        }
    }
    return 1;
}

        case BLUE:
            strip.ledOn(i, 0, 0, 10);
            break;
    }
}

void resetAllColors() {
    for(int i=0; i<12; i++) {
        current[i] = 99; // flag as dirty
    }
}

