     clearAndUpdate = false;
 }
 
-void loop() {
+/**
+ * @brief Show the meta datas
+ */
+void showMetaData()
+{
+    display.clearDisplay();
+    for (int i = 0; i < 4; i++) {
+        char* data = metaDatas[i];
+        int cursorPosition = 8 * i;
+        display.setCursor(0, cursorPosition);
+        display.println(data);
+    }
+    display.display();
+}
+
+/**
+ * @brief Sets the meta data for the given index
+ * @param index
+ * @param data
+ */
+void setMetaData(int index, const char *data)
+{
+    if (metaDatas[index])
+        free(metaDatas[index]);
+    metaDatas[index] = (char*)malloc(strlen(data) * sizeof(char));
+    strcpy(metaDatas[index], data);
+}
+
+void loop()
+{
     // Toast time elapsed
     unsigned long currentTime = millis();
     if ((currentTime - lastToastTime) > toastDuration) {

#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif

void setup() {
    Consumer.begin();

    // Encoder configuration

        clearAndUpdate = true;
    }

    int availableBytes = Serial.available();
    if (availableBytes && clearAndUpdate) {
        isMediaPlayerDetected = true;
        char *data = (char *)malloc(availableBytes * sizeof(char));
        Serial.readBytes(data, availableBytes);
        OLEDData oledData;
        if (OLEDData::decode(data, availableBytes, &oledData)) {
            //display.clearDisplay();
            switch (oledData.type()) {
            case OLEDData::Artist:
                setMetaData(0, oledData.data());
                break;
            case OLEDData::Album:
                setMetaData(1, oledData.data());
                break;
            case OLEDData::Track:
                setMetaData(2, oledData.data());
                break;
            default:
                break;
            }
        }
        free(data);
        showMetaData();
    }

    if (!keySent) {
