   }
   else if (KnobValue < 150){
     //rainbow!
-    rainbowCycle(map(KnobValue, 50, 149, 0, 50));
+//    rainbowCycle(map(KnobValue, 50, 149, 0, 50));
     PRINT_DEBUG("rainbow1 - delay ");
     PRINTLN_DEBUG(map(KnobValue, 50, 149, 0, 50));
+    displayBuffer2(ledStates, map(KnobValue, 50, 149, 0, 50));
+    
+    
   }else if (KnobValue < 300){
     //rainbow!
-    rainbow(map(KnobValue, 150, 299, 0, 50));
+    displayBuffer3(ledStates, map(KnobValue, 150, 299, 0, 50));
     PRINT_DEBUG("rainbow2 - delay ");
     PRINTLN_DEBUG(map(KnobValue, 150, 299, 0, 50));
+    
   }
   else  if (KnobValue <1000){
     //solid colour
     int colour = map(KnobValue, 300, 999, 0, 255);
-    PRINT_DEBUG(colour);
-    for(int i=0; i<matrix.numPixels(); i++) {
-      strip.setPixelColor(i, Wheel(colour));
-
-    }
-    strip.show();
-    PRINTLN_DEBUG(" solid colour");
-  }  
+    PRINT_DEBUG("Show the time, solid colour ");
+    PRINTLN_DEBUG(colour);
+    displayBuffer(ledStates, colour);
+   
+  } 
+  
   else {
-    PRINTLN_DEBUG("Show the time, bitches");
-
-//    for(int i=0; i<strip.numPixels(); i++) {
-//      strip.setPixelColor(i, strip.Color(255, 255, 255));
-//    }
-//    strip.show();
-
-
-      getWords(ledStates, now.hour(), now.minute() );
-      displayBuffer(ledStates);
+    PRINTLN_DEBUG("Show the time, all white");
+      displayBuffer_WHITE(ledStates);
   }
 }
 

  PRINT_DEBUG("  | ");


 
   
  if (LDRValue < 350) {
    Brightness = 12;
  } else if (LDRValue > 1000) {
      Brightness = 255;
    }  
    else Brightness = map(LDRValue,350,1000,12,255);
  
  strip.setBrightness(Brightness);
  matrix.setBrightness(Brightness);

          else if ((hours * 12 + minutes / 5) <= (23 * 12 + 45 / 5))
            tod_idx = 4;
            else tod_idx = 0;
//  PRINT_DEBUG(" tod_idx");
//  PRINTLN_DEBUG(tod_idx);

  for(int dispIdx = 0; dispIdx < 2; dispIdx++) {
    // Get the display bits
