 const int NCOLOURS = sizeof(COLOURS)/sizeof(int);
 
 // Storage for bitmap of lights 7x8 bits = 56 (we need 50)
+const int bulbBytes = 7;
 #ifdef TWO_STRINGS
-byte bulbs1[7];
-byte bulbs2[7];
+byte bulbs1[bulbBytes];
+byte bulbs2[bulbBytes];
 #else
-byte bulbs[7];
+byte bulbs[bulbBytes];
 #endif
-const int bulbBytes = 7;
 
 // Macros to work out which bit of which byte to set..
 #define GETBIT int bit = bulb % 8

  bulbs[ind] |= 1 << bit;
}

bool bulbUnset(byte bulbs[], const int bulb) {
  GETBIT;
  GETIND;
  return (bulbs[ind] & (1 << bit)) == 0;
}

int countBits(byte bulbs[]) {


void loop() {
  #ifdef TWO_STRINGS
    // Randomly switch on to current colour
    while ( countBits(bulbs1) < LIGHT_COUNT ||
            countBits(bulbs2) < LIGHT_COUNT ) {

      // Set the bulb on first string
      int bulb = random(LIGHT_COUNT);
      if ( bulbIsUnset(bulbs1, bulb) ) {
        setBulb(bulbs1, bulb);
        lights1.set_color(bulb, G35::MAX_INTENSITY, COLOURS[colour]);
        delay(BETWEEN_BULBS);
