diff --git a/GOL-RGB.ino b/GOL-RGB.ino
new file mode 100644
index 0000000..3709418
--- /dev/null
+++ b/GOL-RGB.ino
@@ -0,0 +1,102 @@
+#include <NeoPixelBus.h>
+#define colorSaturation 10
+
+const int dtime=500;
+const int fillp=750;
+
+// make sure to set these panel values to the sizes of yours
+const uint8_t PanelWidth = 8;  // 8 pixel x 8 pixel matrix of leds
+const uint8_t PanelHeight = 8;
+const uint8_t TileWidth = 3;  // laid out in 3 panels x 2 panels mosaic
+const uint8_t TileHeight = 2;
+const uint16_t PixelCount = PanelWidth * PanelHeight * TileWidth * TileHeight;
+const uint16_t width=TileWidth*PanelWidth;
+const uint16_t height=TileHeight*PanelHeight;
+
+
+uint16_t countX=0;
+uint16_t countY=0;
+
+NeoPixelBus<NeoGrbFeature, NeoEsp8266Uart1Ws2812xMethod> strip(PixelCount, D4);
+
+typedef ColumnMajorAlternatingLayout MyPanelLayout;
+typedef RowMajorAlternatingLayout MyTilesLayout;
+NeoTiles <MyPanelLayout, MyTilesLayout> tiles(PanelWidth, PanelHeight, TileWidth, TileHeight);
+
+RgbColor red(colorSaturation, 0, 0);
+RgbColor green(0, colorSaturation, 0);
+RgbColor blue(0, 0, colorSaturation);
+RgbColor black(0);
+
+uint8_t  current[height][width];
+uint8_t     next[height][width];
+RgbColor rgbNext[height][width];
+
+void setup() {
+  Serial.begin(115200);
+
+  // Make sure our two arrays are empty
+  for(int n=0;n<height;n++) {
+    for(int m=0;m<width;m++) {
+      current[n][m]=0;
+      next[n][m]=0;
+    }
+  }
+
+  strip.Begin();
+  initGOL();
+  displayGOL()
+}
+
+void initGOL() {
+  int r;
+  for(int n=0;n<height;n++) {
+    for(int m=0;m<width;m++) {
+      r=random(1000);
+      if(r<fillp) {
+        rgbNext[n][m][0]=random(colorSaturation);
+        rgbNext[n][m][1]=random(colorSaturation);
+        rgbNext[n][m][2]=random(colorSaturation);
+        current[n][m]=1;
+      } else {
+        rgbNext[n][m][0]=0;
+        rgbNext[n][m][1]=0;
+        rgbNext[n][m][2]=0;
+        current[n][m]=0;
+      }
+    }
+  }
+  Serial.println("init done");
+}
+
+void updateGOL() {
+
+}
+
+uint8_t countNeighbours(uint8_t x, uint8_t y) {
+
+  uint8_t count=0;
+
+  if(y>0current 
+
+}
+
+void displayGOL() {
+  strip.ClearTo(black);
+  for(int n=0;n<height;n++) {
+    for(int m=0;m<width;m++) {
+      strip.SetPixelColor(tiles.Map(m,n), rgbNext[n][m]);
+    }
+  }
+  strip.Show();
+  Serial.println("show done");
+}
+
+void loop() {
+  delay(dtime);
+  updateGOL();
+  displayGOL();
+  // strip.SetPixelColor(tiles.Map(countX,countY), red);
+  // strip.Show();
+  Serial.println("Next loop");
+}