Add a template function to cache the underscore template for new timers
Extract two models out of Timer and make it an abstract interface