   }
 }
 
-// Candle flicker.
-void flicker(int8_t dir){
-  setStartEnd(dir);
+// Candle flicker, blown out, + ember glow
+void flicker(){
   static uint16_t i = 0;
   static uint8_t rnd = 0;
-  uint8_t stair = 0;
+  uint8_t r = 0, g = 0, b = 0;
+  int8_t stair = 0;
   gBright = 0;
-  for(gStair=gStairStart; (dir == 1 && gStair < gStairEnd ) || (dir == -1 && gStair >= gStairEnd && gStair <= gStairStart+1 ); gStair+=(2*dir)) {
+  for(gStair=0; gStair < NUM_LEDS; gStair+=2) {
     for( i = 0; i <= 18; i++ ) {
-      for (stair = gStairStart; (dir == 1 && stair <= gStair ) || ( dir == -1 && stair >= gStair && stair <= gStairStart+1); stair+=(2*dir)) {
+      for (stair = 0; stair <= gStair; stair+=2) {
         rnd = random8(1, 4);
         if ( rnd == 2 ){
           gBright = random8(90,140);
-          leds[stair] = CHSV( 60, 200, gBright );
-          leds[stair + 1*dir] = CHSV( 60, 200, gBright );
+          leds[gUpDown[stair]] = CHSV( 60, 200, gBright );
+          leds[gUpDown[stair + 1]] = CHSV( 60, 200, gBright );
         }
         FastLED.show();
       }
     }
   }
   // Wait
-  Serial.println("Wait");
   for ( i=0; i<=300; i++) {
     for( gStair = 0; gStair < NUM_LEDS; gStair+=2) {  
       rnd = random8(1, 4);

  lightsOn = LOW;  
}

void setStartEnd(int8_t dir){
  if (dir == 1){ //Down
    gStairStart = 0;
    gStairEnd = NUM_LEDS-1;
  } else {
    gStairStart = NUM_LEDS-1;
    gStairEnd = 0;
  }
}

  rainbow();
  addGlitter(80);
}
void addGlitter( fract8 chanceOfGlitter) 
{
  if( random8() < chanceOfGlitter) {
