Now uses interrupts and timers, not delays