Use macro SYSTEM_MODE() before setup() and implemented remaining methods