simplified/more generic timer