 AnimationEndedCallback transitionCompleteCallback;
 double transitionElapsed; // millis taken by transition so far
 
-void renderColors(unsigned long delta)
-{
-  if (transitionElapsed < transitionDuration) {
-    transitionElapsed += delta;
-  }
-  else {
-    transitionCompleteCallback();
-  }
-}
+
 /**
  Transition to a frame of colors.
  @param duration in seconds
  */
-void transitionToFrame(byte* frame, double duration, void (*completionCallback)(), uint32_t color)
-{
-
+void transitionToFrame(byte* frame, uint32_t color)
+{
   for (int y = 0; y < GRIDSIZE; y++) {
     byte b = frame[y];
     for (int x = 0; x < GRIDSIZE; x++) {


void animateToSmallHeart(double duration, uint32_t param)
{
  transitionToFrame(SmallHeart, duration, &nextAnimation, Color(200, 0, 0));
}

void animateToBigHeart(double duration, uint32_t param)
{
  transitionToRedFrame(BigHeart, duration, &nextAnimation);
}

void animateToLetterI(double duration, uint32_t param)
{
  transitionToFrame(FontI, duration, &nextAnimation, Color(0, 0, 150));
}
void animateToLetterU(double duration, uint32_t param)
{
  transitionToFrame(FontU, duration, &nextAnimation, Color(0, 0, 150));
}

void pause(double duration, uint32_t param)

//  { allOff, 0.5 },
  { pause, 0.5 },

  // Color swirls
  { rainbowAnimation, 10, 1 },
  { rainbowAnimation, 15, 0 },

