 
   # Public: Resets the timeout.
   reset: () ->
+    @exists = true
+    @alive = true
     @_dt = @delay
     @
 
   # Public: Kills the timeout.
   kill: () ->
+    @exists = false
+    @alive = false
     @_dt = 0
     @
 

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

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

  update: (timer) ->
    if @_dt > 0 and ((@_dt -= timer.dt) <= 0)
      @onend(@)

      if @loop
        @reset()
      else
        @kill()

    null
