refactored timer model