 }
 
 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;
+  uint8_t i,j;
+  for(j=0;j < NUM_TWINKLES; j++){
+    for(i=twinkles[j][0];i<=(twinkles[j][0] + 2); i++){
+      strip.setPixelColor(i, strip.Color(twinkles[j][2],twinkles[j][2],twinkles[j][2]));
+    }
+    twinkles[j][2] = twinkles[j][2] + twinkles[j][3];
+    if(twinkles[j][2] >= 255){
+      twinkles[j][2] = 255;
+      twinkles[j][3] = twinkles[j][3] * -1;
+    }
+    
+    if(twinkles[j][2] <= 0){
+      twinkles[j][2] = 0;
+      twinkles[j][3] = twinkles[j][3] * -1;
+    }
   }
 }
 
 void updateTwinkleLocation(){
-  if( random(0,3) == 0){
-    twinkles[0][0] = random(0, NUM_PIXELS-3);
-  } 
+  uint8_t i;
+  for(i=0; i < NUM_TWINKLES; i++){
+    if( random(0,50) == 0){
+      twinkles[i][0] = random(0, NUM_PIXELS-3);
+    }
+  }
 }
 
 void updateRainbow() {


#define PIN 7
#define NUM_PIXELS 300
// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:

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