add timer.cancel()