     pinMode(RELAYPIN, OUTPUT);
 
     // Interrupt pin
-    pinMode(SWITCHPIN, INPUT_PULLDOWN);
+    pinMode(SWITCHPIN, INPUT);
     attachInterrupt(SWITCHPIN, updateSwitchState, CHANGE);
     pinMode(BUTTONPIN, INPUT_PULLDOWN);
     attachInterrupt(BUTTONPIN, updateButtonState, RISING);

    // Setup timezone
    Time.zone(+2.00);

    //clockTimer.start();
}

void loop() {
    if (requestOpeningOperation) {
        requestOpeningOperation = false;
        digitalWrite(LEDPIN, HIGH);
        openOperation.start();
    } else {
        digitalWrite(LEDPIN, LOW);
    }

    //displayStatus();
}

void displayStatus() {
    lcd.setCursor(0,1);
    if (digitalRead(SWITCHPIN) == 1) {
        lcd.print("LOCKED");
    } else {
        lcd.print("OPEN");
    }
}

void displayTime() {
    lcd.setCursor(0,0);
    // Format from C library: https://www.gnu.org/software/libc/manual/html_node/Low_002dLevel-Time-String-Parsing.html
    lcd.print(Time.format(Time.now(), "%T"));

    hour = Time.hour();
    minute = Time.minute();
}

void updateSwitchState() {
    swtichState = digitalRead(SWITCHPIN);
}

void updateButtonState() {
    requestOpeningOperation = true;
}

bool checkOpenCondition() {
    return (hour == 9) && (minute == 15);
}

    }
};

volatile int switchState = LOW;
volatile bool requestDisplayStatus = true;
volatile bool requestDisplayTime = false;
volatile bool requestOpeningOperation = false;

Timer clockTimer(1000, updateTime); // timer used to display the clock on the lcd display

OpenOperation openOperation;

volatile int hour;
volatile int minute;
volatile int second;

void setup() {
    // Ouput pins
