   }
 }
 
-void show_strip() {
-  strip.show();
+void reseedRandom(){
+    randomSeed(analogRead(0));
 }
 
 TimedAction ta_updateTwinkle = TimedAction(10, updateTwinkle);
-TimedAction ta_showStrip = TimedAction(1, show_strip);
 TimedAction ta_updateRainbow = TimedAction(10, updateRainbow);
 TimedAction ta_updateTwinkleLocation = TimedAction(1000, updateTwinkleLocation);
+TimedAction ta_reseedRandom = TimedAction(10000, reseedRandom);
 
 
 void setup() {
-
   strip.begin();
   strip.clear();
   strip.show(); // Initialize all pixels to 'off'
 
   randomSeed(analogRead(0));
 
-  twinkles[0][0] = random(0,NUM_PIXELS - 3);
-  twinkles[0][2] = 1;
-  twinkles[0][3] = 1;
+   for(uint8_t i=0; i < NUM_TWINKLES; i++){
+    twinkles[i][0] = random(0,NUM_PIXELS - 3);
+    twinkles[i][2] = random(0,255);
+    twinkles[i][3] = 1;
+   }
 }
 
 

}

void updateTwinkle(){
  uint8_t i;
  for(i=twinkles[0][0];i<=(twinkles[0][0] + 2); i++){
    strip.setPixelColor(i, strip.Color(twinkles[0][2],twinkles[0][2],twinkles[0][2]));
  }
  twinkles[0][2] = twinkles[0][2] + twinkles[0][3];
  if(twinkles[0][2] >= 255){
    twinkles[0][2] = 255;
    twinkles[0][3] = twinkles[0][3] * -1;
  }
  
  if(twinkles[0][2] <= 0){
    twinkles[0][2] = 0;
    twinkles[0][3] = twinkles[0][3] * -1;
  }
}

void updateTwinkleLocation(){
  if( random(0,3) == 0){
    twinkles[0][0] = random(0, NUM_PIXELS-3);
  } 
}

void updateRainbow() {

  ta_updateRainbow.check();
  ta_updateTwinkle.check();
  ta_updateTwinkleLocation.check();
  ta_reseedRandom.check();
  strip.show();
}
