diff --git a/CLC-qthing/SiliconTorch/FxCyanRGB8.cpp b/CLC-qthing/SiliconTorch/FxCyanRGB8.cpp
index 4351d6ba1060908e4e60e87313ea893f7c92d12a..e951d1ebe4f7e73eff3af84751054d6fb71e1cbb 100644
--- a/CLC-qthing/SiliconTorch/FxCyanRGB8.cpp
+++ b/CLC-qthing/SiliconTorch/FxCyanRGB8.cpp
@@ -11,9 +11,9 @@
 // #include "freertos/queue.h"
 
 // project specific
+#include <Types.hpp>
 #include "FxVSync.hpp"
 #include "CyanBus.hpp"
-#include "SpiderLib/NumberTypes.hpp"
 
 // qthing stuff
 // #include ""
@@ -148,5 +148,31 @@ namespace SiliconTorch {
         buffer1[px].b = 0;
       }
     }
+
+
+    str colorOrder2String(ColorOrder co) {
+      switch (co) {
+        case ColorOrder::RGB: return "RGB";
+        case ColorOrder::RBG: return "RBG";
+        case ColorOrder::GRB: return "GRB";
+        case ColorOrder::GBR: return "GBR";
+        case ColorOrder::BRG: return "BRG";
+        case ColorOrder::BGR: return "BGR";
+      }
+
+      return "RGB";
+    }
+
+    ColorOrder string2ColorOrder(str co) {
+      if      (co.compare("RGB") == 0) return RGB;
+      else if (co.compare("RBG") == 0) return RBG;
+      else if (co.compare("GRB") == 0) return GRB;
+      else if (co.compare("GBR") == 0) return GBR;
+      else if (co.compare("BRG") == 0) return BRG;
+      else if (co.compare("BGR") == 0) return BGR;
+
+      return ColorOrder::RGB;
+    }
+
   }
 }
diff --git a/CLC-qthing/SiliconTorch/FxCyanRGB8.hpp b/CLC-qthing/SiliconTorch/FxCyanRGB8.hpp
index 769543bdfc6bd0bcaf8b79d73332af2f7832f556..d38e1c55f2a84e02adcc7d296c226df11c9fe10d 100644
--- a/CLC-qthing/SiliconTorch/FxCyanRGB8.hpp
+++ b/CLC-qthing/SiliconTorch/FxCyanRGB8.hpp
@@ -10,7 +10,7 @@
 
 // project specific
 #include "CyanBus.hpp"
-#include "SpiderLib/NumberTypes.hpp"
+#include "SpiderLib/Types.hpp"
 
 // qthing stuff
 #include <qthing>
@@ -27,8 +27,21 @@ namespace SiliconTorch {
       u8 b;
     } Pixel;
 
+
     extern const std::string HEADER;
 
+
+    enum ColorOrder {
+      RGB, RBG,
+      GRB, GBR,
+      BRG, BGR
+    };
+
+    str colorOrder2String(ColorOrder co);
+    ColorOrder string2ColorOrder(str co);
+
+
+
     class FxCyanRGB8 : public qthing::Animation<qthing::RGB> {
       public:
         FxCyanRGB8(u16 leds, u16 startIdx = 0);
diff --git a/CLC-qthing/SiliconTorch/Service/CyanStripe.cpp b/CLC-qthing/SiliconTorch/Service/CyanStripe.cpp
index db4cd4b056b6b5e15c164babe7ee065dfcb270cc..2bcf285a4c92365ffa557da67c26858a72ae787f 100644
--- a/CLC-qthing/SiliconTorch/Service/CyanStripe.cpp
+++ b/CLC-qthing/SiliconTorch/Service/CyanStripe.cpp
@@ -60,8 +60,13 @@ namespace SiliconTorch {
 
           if (!info.valid) break;
 
-          ESP_LOGI(getName().c_str(), "Configuring: FxCyanRGB8{ info[ %d ] gpio[ %d ] leds[ %d ] startIdx[ %d ] }", idx, info.gpio, info.leds, info.startIdx);
-
+          ESP_LOGI(getName().c_str(), "Configuring: FxCyanRGB8{ info[ %d ] gpio[ %d ] leds[ %d ] startIdx[ %d ] colorOrder[ %s ] }",
+            idx,
+            info.gpio,
+            info.leds,
+            info.startIdx,
+            FxCyanRGB8::colorOrder2String(info.colorOrder).c_str()
+          );
 
           ChannelDriver channel = {
             .info    = info,
@@ -109,6 +114,10 @@ namespace SiliconTorch {
         std::snprintf(tmp, sizeof(tmp), "ch%d_startIdx", channel);
         ch.startIdx = nvs.getUnsignedInt(getNameSpace(), std::string(tmp), 0);
 
+        std::snprintf(tmp, sizeof(tmp), "ch%d_colorOrder", channel);
+        str _colorOrder = nvs.getString(getNameSpace(), std::string(tmp), "RGB");
+        ch.colorOrder   = FxCyanRGB8::string2ColorOrder(_colorOrder);
+
         ch.valid = ch.gpio < 0xFF && ch.leds > 0;
 
         return ch;
diff --git a/CLC-qthing/SiliconTorch/Service/CyanStripe.hpp b/CLC-qthing/SiliconTorch/Service/CyanStripe.hpp
index ba69c00a60ee835a1f5c4d5a3702df7cfcfd0e79..c2f6e6fe88b9b62349857a4a6289f0b56ea41bde 100644
--- a/CLC-qthing/SiliconTorch/Service/CyanStripe.hpp
+++ b/CLC-qthing/SiliconTorch/Service/CyanStripe.hpp
@@ -29,10 +29,11 @@ namespace SiliconTorch {
 
       typedef struct {
 
-        u8   gpio     = 0;
-        u16  leds     = 0;
-        u16  startIdx = 0;
-        bool valid    = false;
+        u8                     gpio       = 0;
+        u16                    leds       = 0;
+        u16                    startIdx   = 0;
+        FxCyanRGB8::ColorOrder colorOrder = FxCyanRGB8::ColorOrder::RGB;
+        bool                   valid      = false;
 
       } ChannelInfo;