   
   
   randomSeed(analogRead(A3));
-  // generate initial hues
-  from_hue = random(0,255);
-  to_hue = random(0,255);
+  // generate initial hues and saturation
+  generateColour();
+  // copy these to from_X
+  from_hue = to_hue; from_val = to_val; from_sat = to_sat;
+  // generate new TO-colour
+  generateColour();
+  
   // seed the first cells
   GoLseed();
 }

    }
  }
}

// Flag and time are used to seed a new game with a delay
boolean seedFlag = false;

  for(uint8_t y=0; y!=ROWS; ++y){
    for(uint8_t x=0; x!=COLS; ++x){
      if(alive[y][x]){
        newleds[xy2i(x,y)].setHSV(hue, saturation, value);
      } else {
        newleds[xy2i(x,y)] = CRGB::Black;
      }
