       x1 = x1.replace(rgx, '$1' + ',' + '$2')
 
     x1 + x2
+
+  # format startVal on initialization
+  @doc.innerHTML = @addCommas startVal.toFixed(decimals)


  # Robert Penner's easeOutExpo
  @easeOutExpo = (t, b, c, d) ->
    # modified from:
    # c * (-Math.pow(2, -10 * t / d) + 1) + b
    # thanks to @lifthrasiir's "exact easing" commit
    c * (-Math.pow(2, -10 * t / d) + 1) * 1024 / 1023 + b

  @count = (timestamp) ->
    @startTime = timestamp if @startTime is null

    progress = timestamp - @startTime
      
    # to ease or not to ease is the question
    if @.useEasing
      if @.countDown
        i = @.easeOutExpo progress, 0, startVal - endVal, @.duration
        @.frameVal = startVal - i
      else
        @.frameVal = @.easeOutExpo(progress, startVal, endVal - startVal, @.duration)
      console.log @.frameVal
    else
      if @.countDown
        i = (startVal - endVal) * (progress / @.duration)
        @.frameVal = startVal - i
      else
        @.frameVal = startVal + (endVal - startVal) * (progress / @.duration)
        
    # decimal
    @frameVal = Math.round(@frameVal * @dec) / @dec

    @doc.innerHTML = @addCommas @frameVal.toFixed(decimals)

    # weather to continue
    if progress < @duration
      @rAF = requestAnimationFrame @count
    else
      @callback() if @callback?

  @start = (callback) ->
    @callback = callback
    # make sure endVal is a number
    requestAnimationFrame @count unless isNaN(endVal) and isNan(startVal) isnt null
    else
