 bool EVENING = 0;
 bool NIGHT = 0;
 
+struct Settings {
+  uint32_t c1 = p1.Color(0,0,0,255);;
+  uint32_t c2 = p2.Color(0,0,0,255);
+  uint32_t c3 = p3.Color(0,0,0,255);
+  uint16_t dayL = 12;
+  uint16_t fadeT = 10;
+  uint16_t riseH = 6;
+  uint16_t riseM = 0;
+};
+Settings theSettings;
+uint32_t EEPROM_ADDR = 1;
+
 void setup() {
+  // EEPROM.put(EEPROM_ADDR, theSettings);
+  loadSavedSettings();
   Serial.begin(115200);
   Wire.begin();
-  if (! rtc.begin()) Serial.println("Couldn't find RTC");
-  if (! rtc.initialized()) Serial.println("RTC is NOT running!");
-  // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
+  lcd.begin(20, 4); // set up the LCD's number of columns and rows:
+  setLCDBacklight(50, 255, 50);
   pinMode(lcd_BCKLGHT_R, OUTPUT);
   pinMode(lcd_BCKLGHT_G, OUTPUT);
   pinMode(lcd_BCKLGHT_B, OUTPUT);
-  lcd.begin(20, 4); // set up the LCD's number of columns and rows:
-  setLCDBacklight(255, 0, 255);
-
-
+  if (! rtc.begin())
+  {
+    lcd.setCursor(0, 0);
+    lcd.print("Couldn't find RTC");
+    lcd.setCursor(0, 1);
+    lcd.print("Please power cycle");
+    while(1);
+  }
+  if (! rtc.initialized())
+  {
+    lcd.setCursor(0, 0);
+    lcd.print("Failed to init RTC");
+    lcd.setCursor(0, 1);
+    lcd.print("Please power cycle");
+    while(1);
+  }
+  rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   p1.begin();
+  p2.begin();
+  p3.begin();
   p1.show();
+  p2.show();
+  p3.show();
   now = rtc.now();
   // sunriseStartTime = DateTime(now.year(), now.month(), now.day(), sunriseHour, sunriseMinute, 0) + TimeSpan(1,0,0,0);
   sunriseStartTime = DateTime(now.year(), now.month(), now.day(), sunriseHour, sunriseMinute, 0);

    case TO_RUN:
      if(Bu_1.wasReleased()) {
        STATE = RUN;
        setLCDBacklight(0,255,255);
        if(set.unixtime() != now.unixtime()) {
          rtc.adjust(set);
          MORNING = 0;
          DAY = 0;
          EVENING = 0;
          NIGHT = 0;
        }
        p1.setPixelColor(5, 0,0,0,0);
        p1.show();
      } else if(Bu_2.wasReleased()) {
        STATE = RUN;
        setLCDBacklight(0,255,255);
      }
      break;


        cursorCol = 0;
        cursorRow = 0;
        lcd.setCursor(cursorCol, cursorRow);
        lcd.print("Panel 1");
        cursorCol = 5;
        cursorRow = 3;
        lcd.setCursor(cursorCol, cursorRow);
        lcd.print("color settings");
        cursorCol = 0;
        cursorRow = 0;
        lcd.setCursor(cursorCol, cursorRow);
      }
      break;
    case COLOR_SETTINGS:
      if(Bu_1.pressedFor(LONG_PRESS))
      {
        STATE = TO_RUN;
        theSettings.c1 = color1Day;
        theSettings.c2 = color2Day;
        theSettings.c3 = color3Day;
        EEPROM.put(EEPROM_ADDR, theSettings);
        lcd.clear();
      } else if(Bu_1.wasReleased())
      {
        cursorRow++;
        cursorRow %= 3;
        if(cursorRow == 0)
        {
          int p_cR = cursorRow;
          int p_cC = cursorCol;
          for(int i = 0; i < NUMPIXELS; i++) p1.setPixelColor(i, color1Day);
          p1.show();
          lcd.clear();
          cursorCol = 0;
          cursorRow = 0;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("Panel 1");
          cursorCol = 5;
          cursorRow = 3;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("color settings");
          cursorCol = p_cC;
          cursorRow = p_cR;
        } else if(cursorRow == 1)
        {
          int p_cR = cursorRow;
          int p_cC = cursorCol;
          for(int i = 0; i < NUMPIXELS; i++) p2.setPixelColor(i, color2Day);
          p2.show();
          lcd.clear();
          cursorCol = 0;
          cursorRow = 0;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("Panel 2");
          cursorCol = 5;
          cursorRow = 3;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("color settings");
          cursorCol = p_cC;
          cursorRow = p_cR;
        } else if(cursorRow == 2)
        {
          int p_cR = cursorRow;
          int p_cC = cursorCol;
          for(int i = 0; i < NUMPIXELS; i++) p3.setPixelColor(i, color3Day);
          p3.show();
          lcd.clear();
          cursorCol = 0;
          cursorRow = 0;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("Panel 3");
          cursorCol = 5;
          cursorRow = 3;
          lcd.setCursor(cursorCol, cursorRow);
          lcd.print("color settings");
          cursorCol = p_cC;
          cursorRow = p_cR;
        }
