   push_color(random_color());
 }
 
+int do_mirror(){
+  for(int i = 0; i < LED_COUNT / 2; i++){
+    colors[LED_COUNT - i - 1] = colors[i];
+    effects[LED_COUNT - i - 1] = effects[i];
+  }
+}
+
 void setup_buffer(){
   for(int i = 0; i < LED_COUNT; i++){
-    if(states[i] == BLINK_ON){
+    if(effects[i] == BLINK_ON){
       if(blink_state){
         render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
       } else {
         render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
       }
-    } else if(states[i] == BREATHE_ON){
+    } else if(effects[i] == BLINK_ON_1){
+      if(blink_state_1){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BLINK_ON_2){
+      if(blink_state_2){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BLINK_ON_3){
+      if(blink_state_3){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BLINK_ON_4){
+      if(blink_state_4){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BLINK_ON_5){
+      if(blink_state_5){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BLINK_ON_6){
+      if(blink_state_6){
+        render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE); 
+      } else {
+        render[i] = scale_color(colors[i], MINIMUM_BRIGHTNESS_SCALE);
+      }
+    } else if(effects[i] == BREATHE_ON){
       render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE * breathe_steps[BREATHE_MAX_STEP - breathe_step]);
+    } else if(effects[i] == STATIC_ON){
+      render[i] = random_color();
     } else {
       render[i] = scale_color(colors[i], DEFAULT_BRIGHTNESS_SCALE);
     }

    else if(is_command(str, "fade"))     do_fade();
    else if(is_command(str, "flood"))    do_flood();
    else if(is_command(str, "random"))   do_random();
    else if(is_command(str, "red"))      push_color(red);
    else if(is_command(str, "green"))    push_color(green);
    else if(is_command(str, "blue"))     push_color(blue);

    int c = Serial1.readBytesUntil('|', str, MAX_STRING_LENGTH);
    str[c] = 0;

    // reset the effects so the automatic render won't interfere
    blink_state = true;
    blink_state_1 = false;
    blink_state_2 = false;
    blink_state_3 = false;
    blink_state_4 = false;
    blink_state_5 = false;
    blink_state_6 = false;
    blink_counter = 0;
    breathe_step = 0;
    breathe_counter = 0;
  
    //Serial.println(str);

// fast blink, breathe
// static, flame
// invert hue, swing hue, back and forth between two arbitrary colors, rgb cube
// rainbow colors incremental, or continuously changing
// shooting up
// push-down animation when a new build is seen (to emphasize its adding)
// fade based on build time
// change refresh rate based on time of day (afterhours it doesn't need to check that often)
// show something if the data hasn't updated in a long time
// automatically stop and restart the script at night
// blink a/b

    if     (is_command(str, "pause"))    paused = true;  
    else if(is_command(str, "continue")) paused = false;
    else if(is_command(str, "erase"))    erase(true);
    else if(is_command(str, "blink"))    start_blinking();
    else if(is_command(str, "blink1"))   start_blinking_1();
    else if(is_command(str, "blink2"))   start_blinking_2();
    else if(is_command(str, "blink3"))   start_blinking_3();
    else if(is_command(str, "blink4"))   start_blinking_4();
    else if(is_command(str, "blink5"))   start_blinking_5();
    else if(is_command(str, "blink6"))   start_blinking_6();
    else if(is_command(str, "blinkr"))   start_blinking_r();
    else if(is_command(str, "breathe"))  start_breathing();
    else if(is_command(str, "flush"))    flush();
    else if(is_command(str, "blend"))    do_blend();
