docs: function (now) {
  
        if (this.lastFrameTime){
          // chrome bug, see: https://code.google.com/p/chromium/issues/detail?id=268213
          // http://jsfiddle.net/pehrlich/35pTx/
          // console.assert(this.lastFrameTime < now);
          if (now < this.lastFrameTime){
            // this fix will cause an extra animation frame before the lerp frame advances. no big.
            this.lastFrameTime = now;
          }else{
            this.timeSinceLastFrame += (now - this.lastFrameTime);
          }
        }
  
        this.lastFrameTime = now;
  
  //      console.assert(!isNaN(this.timeSinceLastFrame));
  
  
        var timeToNextFrame;
  
        // handle frame dropping, etc
        while ( this.timeSinceLastFrame > ( timeToNextFrame = this.recording.timeToNextFrame() ) ){
          this.timeSinceLastFrame -= timeToNextFrame;
          if (!this.recording.advanceFrame()){
            this.pause();
            this.controller.emit('playback.playbackFinished', this);
            return
          }
        }
  
        this.sendFrame(
          this.recording.createLerpFrameData(this.timeSinceLastFrame / timeToNextFrame)
        );
  
      }