diff --git a/Dashboard/Dashboard.ino b/Dashboard/Dashboard.ino
index d978b01a104b3e409aed0d95abf52f8cdd04ddd7..ef08d6ffef8bbe0114f66d0ddc79fe7bf339c1e5 100644
--- a/Dashboard/Dashboard.ino
+++ b/Dashboard/Dashboard.ino
@@ -45,10 +45,12 @@
 
 /*******MHZ19 CO2 library********/
 #include <MHZ19_uart.h>
+MHZ19_uart co2;
 /********************************/
 
 /**********RTC library***********/
 #include <microDS3231.h>
+MicroDS3231 rtc;
 /********************************/
 
 /*************EEPROM*************/
@@ -78,7 +80,6 @@ union Arg
     const void *v;
 };
 
-
 // Screen entity with transition table
 struct Screen
 {
@@ -111,6 +112,7 @@ enum PANEL_ORIENTATION : uint8_t
 // Special key, which helps to validate EEPROM data
 const uint8_t special_key = 0b11011100; // Just a random number (it's actually the voltage from the outlet)
 
+// Import configs
 #include "config.h"
 #include "configScreens.h"
 
@@ -173,17 +175,21 @@ struct
     uint8_t wakeupMinute : 6;
 } globalVars;
 
-microLED<NUMLEDS, LEDsPin, MLED_NO_CLOCK, MODEL, CLI_AVER
-    #if(DEBUG)
-    , SAVE_MILLIS
-    #endif
-    > matrix(WIDTH, HEIGHT, CONNECTION_TYPE, CORNER, DIRECTION);
+// Init matrix
+#if(DEBUG)
+microLED<NUMLEDS, LEDsPin, MLED_NO_CLOCK, MODEL, CLI_AVER, SAVE_MILLIS> matrix(WIDTH, HEIGHT, CONNECTION_TYPE, CORNER, DIRECTION);
+#else
+microLED<NUMLEDS, LEDsPin, MLED_NO_CLOCK, MODEL, CLI_AVER> matrix(WIDTH, HEIGHT, CONNECTION_TYPE, CORNER, DIRECTION);
+#endif
+
+// Textbox
 #include "textbox.h"
 textbox tb;
-MHZ19_uart co2;
-MicroDS3231 rtc;
+
+// Screens
 #include "screens.h"
 
+// Extern system timer
 extern volatile uint32_t timer0_overflow_count;
 extern volatile uint32_t timer0_millis;
 
@@ -285,6 +291,32 @@ void buttons(uint8_t resetTimers = 0)
     }
 }
 
+// Check sleep time
+void checkSleep(DateTime* DT)
+{
+    if(globalVars.noAutoChangeScreen) globalVars.sleep = false;
+    else if ((globalVars.sleepHour > globalVars.wakeupHour) || 
+            ((globalVars.sleepHour == globalVars.wakeupHour) && 
+            (globalVars.sleepMinute >= globalVars.wakeupMinute)))
+    {
+        globalVars.sleep =  (((DT->hour > globalVars.sleepHour) ||
+                            ((DT->hour == globalVars.sleepHour) &&
+                            (DT->minute >= globalVars.sleepMinute))) ||
+                            ((DT->hour < globalVars.wakeupHour) ||
+                            ((DT->hour == globalVars.wakeupHour) &&
+                            (DT->minute < globalVars.wakeupMinute))));
+    }
+    else
+    {
+        globalVars.sleep =  (((DT->hour > globalVars.sleepHour) ||
+                            ((DT->hour == globalVars.sleepHour) &&
+                            (DT->minute >= globalVars.sleepMinute))) &&
+                            ((DT->hour < globalVars.wakeupHour) ||
+                            ((DT->hour == globalVars.wakeupHour) &&
+                            (DT->minute < globalVars.wakeupMinute))));
+    }
+}
+
 void setup()
 {
     // Hardware init
@@ -344,27 +376,27 @@ void setup()
                 }
             }
             break;
-            case 4:
+            // Wake up
+            case 3:
             {
-                if(((eepromData & 0b11100000) == (special_key & 0b11100000)) && ((eepromData & 0b00011111) < 24) && !globalVars.unpreparedEEPROM)
-                    globalVars.wakeupHour = eepromData & 0b00011111;
+                if(((eepromData & 0b11000000) == (special_key & 0b11000000)) && ((eepromData & 0b00111111) < 60) && !globalVars.unpreparedEEPROM)
+                    globalVars.sleepMinute = eepromData & 0b00111111;
                 else 
                 {
-                    EEPROM.write(i, (special_key & 0b11100000) | WAKEUPHOUR);
-                    globalVars.wakeupHour = WAKEUPHOUR;
+                    EEPROM.write(i, (special_key & 0b11000000) | SLEEPMINUTE);
+                    globalVars.sleepMinute = SLEEPMINUTE;
                     globalVars.unpreparedEEPROM = true;
                 }
             }
             break;
-            // Wake up
-            case 3:
+            case 4:
             {
-                if(((eepromData & 0b11000000) == (special_key & 0b11000000)) && ((eepromData & 0b00111111) < 60) && !globalVars.unpreparedEEPROM)
-                    globalVars.sleepMinute = eepromData & 0b00111111;
+                if(((eepromData & 0b11100000) == (special_key & 0b11100000)) && ((eepromData & 0b00011111) < 24) && !globalVars.unpreparedEEPROM)
+                    globalVars.wakeupHour = eepromData & 0b00011111;
                 else 
                 {
-                    EEPROM.write(i, (special_key & 0b11000000) | SLEEPMINUTE);
-                    globalVars.sleepMinute = SLEEPMINUTE;
+                    EEPROM.write(i, (special_key & 0b11100000) | WAKEUPHOUR);
+                    globalVars.wakeupHour = WAKEUPHOUR;
                     globalVars.unpreparedEEPROM = true;
                 }
             }
@@ -406,6 +438,7 @@ void setup()
                 }
             }
             break;
+            // Brightness
             case 8:
             {
                 if(!globalVars.unpreparedEEPROM)
@@ -437,31 +470,6 @@ void setup()
     delay(500);
 }
 
-void checkSleep(DateTime* DT)
-{
-    if(globalVars.noAutoChangeScreen) globalVars.sleep = false;
-    else if ((globalVars.sleepHour > globalVars.wakeupHour) || 
-            ((globalVars.sleepHour == globalVars.wakeupHour) && 
-            (globalVars.sleepMinute >= globalVars.wakeupMinute)))
-    {
-        globalVars.sleep =  (((DT->hour > globalVars.sleepHour) ||
-                            ((DT->hour == globalVars.sleepHour) &&
-                            (DT->minute >= globalVars.sleepMinute))) ||
-                            ((DT->hour < globalVars.wakeupHour) ||
-                            ((DT->hour == globalVars.wakeupHour) &&
-                            (DT->minute < globalVars.wakeupMinute))));
-    }
-    else
-    {
-        globalVars.sleep =  (((DT->hour > globalVars.sleepHour) ||
-                            ((DT->hour == globalVars.sleepHour) &&
-                            (DT->minute >= globalVars.sleepMinute))) &&
-                            ((DT->hour < globalVars.wakeupHour) ||
-                            ((DT->hour == globalVars.wakeupHour) &&
-                            (DT->minute < globalVars.wakeupMinute))));
-    }
-}
-
 void loop()
 {
     // Terminate if buttuns are holded
@@ -534,6 +542,7 @@ void loop()
         if(globalVars.seconds != DTtmp.second)
         {
             timer3 = millis();
+            // Check sleep time
             checkSleep(&DTtmp);
         }
         globalVars.seconds = DTtmp.second;
@@ -579,7 +588,7 @@ void loop()
         PRINTLN_DEBUG(globalVars.pomodoroSeconds);
     }
 
-    // Display
+    // Back to homeScreen after 30 seconds
     static uint32_t timer5 = 0;
     TIMER(timer5, 30000) 
     {
@@ -591,17 +600,22 @@ void loop()
         }
     }
     else globalVars.sleep = false;
+
+    // Display
     switch(globalVars.prepare)
     {
+        // Prepare additional buffer
         case 1:
             PRINTLN_DEBUG(F("Prepared"));
             unhandle();
             clearBuffer(&globalVars.leds[0]);
             screens[globalVars.currentScreen].funcPrepare(&globalVars.leds[0]);
+        // Animate
         case 2:
             PRINTLN_DEBUG(F("Animated"));
             animate(AN_FRAMES_DELAY);
         break;
+        // Draw screen
         case 0:
             PRINT_DEBUG(F("Screen "));
             PRINT_DEBUG(globalVars.currentScreen);
@@ -612,20 +626,18 @@ void loop()
                     globalVars.swipeLeft || globalVars.swipeRight )
             {
                 timer5 = millis();
-                // if(globalVars.sleep) unhandle();
             }
             if(globalVars.sleep)
                 matrix.clear();
-            else screens[globalVars.currentScreen].func(&screens[globalVars.currentScreen].arg);
+            else
+                screens[globalVars.currentScreen].func(&screens[globalVars.currentScreen].arg);
         break;
     }
     matrix.show();
 
     // Wait until ppm data stabilize
     TIMER(0, 180000)
-    {
         globalVars.co2Ready = true;
-    }
 
     // Monthly preventative safe reset of the millis() timer
     TIMER(0, 3456000000)
diff --git a/Dashboard/screens.h b/Dashboard/screens.h
index 3c220f74ce8fdb1195d24e874dd217eb656acb8f..cd9649a2e705a3b4c1f9eb5eb3c734d2476a33ab 100644
--- a/Dashboard/screens.h
+++ b/Dashboard/screens.h
@@ -9,7 +9,7 @@ void changeScreen(SCREEN current, uint8_t next, ANIMATION anim = NO_ANIMATION);
 // Animate
 void animate(uint16_t reciprocal_speed);
 // Draw small number
-void drawSmallNumber(uint8_t x, uint8_t y, uint8_t num, mData color);
+void drawSmallNumber(mData* m, uint8_t x, uint8_t y, uint8_t num, mData color);
 // Set pixel in the buffer
 void setPixel(mData* m, uint8_t x, uint8_t y, mData c);
 // Get pixel from the buffer