Rewrote Timer subsystem to enable using generic timers.