                     nowTime: nowTime
                     index: @_counter - 1
                 )
-        , @precision)
+        Date.Timer._onCheck.bind(@_checker)
         @_running = true
         @
     stop: ->
         if not @_running then return
-        clearInterval(@_internalTimer)
+        Date.Timer._onCheck.unbind(@_checker)
         @_running = false
         @
     getRunning: -> @_running

        )
class Date.Observer extends Date.IntervalTimer
    constructor: (fun) ->
        super(200)
        @_fun = fun
        @onChange = eventField()
        @onArrive.bind(=>

        @includesEnd = false
        @onStart = eventField()
        @onArrive.bind((event) =>
            if @interval < Date.Timer.getPrecision() * 2
                @stop()
                return
            @targetTime = event.idealTime.add(@interval)
            if not @_started
                @_started = true
