;(function() {
  var interval = 16;

  function Updater() {
    this.updatees = [];
    this.tick = interval;
    this.prev = new Date().getTime();

    var self = this;
    var update = function() {
      var now = new Date().getTime();
      self.tick = now - self.prev;
      self.prev = now;
      game.update(); // make sure game updated before everything else
      for (var i = 0; i < self.updatees.length; i++) {
        self.updatees[i].update();
      }

      window.requestAnimationFrame(update);
    };

    window.requestAnimationFrame(update);
  };

  Updater.prototype = {
    add: function(updatee) {
      this.updatees.push(updatee);
    },

    remove: function(updatee) {
      for(var i = 0; i < this.updatees.length; i++) {
        if(this.updatees[i] === updatee) {
          this.updatees.splice(i, 1);
          break;
        }
      }
    }
  };

  this.Updater = Updater;
}).call(this);

@@ -163,16 +163,167 @@
 = this;%0A
+    var requestAnimationFrame = window.requestAnimationFrame%0A        %7C%7C window.mozRequestAnimationFrame%0A        %7C%7C window.webkitRequestAnimationFrame;%0A
     var 
@@ -611,31 +611,24 @@
    %7D%0A%0A      
-window.
 requestAnima
@@ -658,23 +658,16 @@
 %7D;%0A%0A    
-window.
 requestA

Check for prefixed versions of requestAnimationFrame