 }
 
 uint8_t spiral1() {
-    fillSpiral(spiral1Arms, false);
+    fillSpiral(spiral1Arms, false, currentPalette);
     
     return 0;
 }
 
 uint8_t spiral2() {
-    fillSpiral(spiral2Arms, true);
+    fillSpiral(spiral2Arms, true, currentPalette);
     
     return 0;
+}
+
+CRGBPalette16 FireVsWaterColors_p = CRGBPalette16(
+    CRGB::White, CRGB::Red, CRGB::Red, CRGB::Red, CRGB::Red, CRGB::Red, CRGB::Red, CRGB::Red, 
+    CRGB::White, CRGB::Blue, CRGB::Blue, CRGB::Blue, CRGB::Blue, CRGB::Blue, CRGB::Blue, CRGB::Blue);
+
+uint8_t yinYang()
+{
+    fillSpiral(spiral1Arms, false, FireVsWaterColors_p);
 }
 
 void spiralPath(uint8_t points[], uint8_t length)

  HeatColors_p,
  LavaColors_p,
  PartyColors_p,
  icePalette,
};

uint8_t paletteCount = ARRAY_SIZE(palettes);


void loop() {
    if (Spark.connected() && millis() - lastTimeSync > ONE_DAY_MILLIS) {
        // Request time synchronization from the Spark Cloud
        Spark.syncTime();
        lastTimeSync = millis();
    }
    
    if(power < 1) {
        fill_solid(leds, NUM_LEDS, CRGB::Black);
        FastLED.show();
        FastLED.delay(15);
        return;
    }
    
    uint8_t delay = patterns[patternIndex].drawFrame();
