don't require static initialization of timer routines, init on demand