   update: (timer) ->
     if @_dt > 0 and ((@_dt -= timer.dt) <= 0)
       @onend(@)
-      @reset() if @loop
+
+      if @loop
+        @reset()
+      else
+        @kill()
 
     null

  # loop - loop state (default: false)
  constructor: (@delay, @loop=false) ->
    @_dt = 0

  # Public: On end callback.
  onend: () ->


  # Public: Resets the timeout.
  reset: () ->
    @exists = true
    @alive = true
    @_dt = @delay
    @

  # Public: Kills the timeout.
  kill: () ->
    @exists = false
    @alive = false
    @_dt = 0
    @

