   return 0;
 }
 
-uint8_t hue; //all living cells have a slowly changing colour
+uint8_t hue, from_hue, to_hue; //all living cells have a slowly changing colour
 void GoLseed(){
   // seed initial cells
   for(uint8_t y=0; y!=ROWS; ++y){

  }
}

void sendColors(){
  // simple FO low-pass between newleds and leds
  for(uint8_t i_led=0; i_led!=NUM_LEDS; ++i_led)
    for(uint8_t i=0; i!=3; ++i)
      leds[i_led][i] = (uint8_t) (((uint16_t) leds[i_led][i]*24 + newleds[i_led][i])/25);
  
  LEDS.show();
}

  memcpy(prev,alive,sizeof(alive));
  memcpy(alive,next,sizeof(next));
  
  // Finally, update the newleds array
  for(uint8_t y=0; y!=ROWS; ++y){
    for(uint8_t x=0; x!=COLS; ++x){
