timer refactoring, still broken