      console.log('test')

      var stage;
      var circlesLayer;
      var circles;
      var stats;
      var width = 500;
      var height = 300;

      var VERSION = Kinetic.version === '4.7.4' || Kinetic.version === 'dev' ? 'new' : 'old';

      window.requestAnimFrame = (function(callback){
        return window.requestAnimationFrame ||
        window.webkitRequestAnimationFrame ||
        window.mozRequestAnimationFrame ||
        window.oRequestAnimationFrame ||
        window.msRequestAnimationFrame ||
        function(callback){
            window.setTimeout(callback, 1000 / 30);
        };
      })();

      function fpsCounter() {
      //fps stat---------------------------
          stats = new Stats();
          stats.setMode(0);
          stats.domElement.style.position = 'fixed';
          stats.domElement.style.left = '0px';
          stats.domElement.style.top = '0px';
          $('html').append( stats.domElement );
      }

      $(function() {
        fpsCounter();

        make_stage();
        

        var colors = ["red", "orange", "yellow", "green", "blue", "cyan", "purple"];
        var colorIndex = 0;

        circles = [];
        for(var n = 0; n < 1500; n++) {( function() {
            var color = colors[colorIndex++];
            if(colorIndex >= colors.length) {
              colorIndex = 0;
            }

            var shape = make_shape('red');
            circlesLayer.add(shape);
            circles.push(shape);
          }());
        }

        stage.add(circlesLayer);
        animate((new Date()).getTime());

      });

      function animate(lastTime){
        stats.begin();
            // update
          var date = new Date();
          var time = date.getTime();
          var timeDiff = time - lastTime;
          var period = timeDiff/1000; //times per second, our period

          for (var i = 0; i < circles.length; i++) {
            var x = Math.random() * width;
            var y = Math.random() * height;
            if (VERSION === 'new') {
            circles[i].position({x: x, y: y});
            }
            else {
              circles[i].setPosition(x, y);
            }
          }
          lastTime = time;

          circlesLayer.draw();
          stats.end();
          requestAnimFrame(function(){
                  animate(lastTime);
          });
      }

      function make_shape(color) {
        if (VERSION === 'new') {
     
          return new Kinetic.Rect({
            fill: color,
            width: 10,
            height: 10,
            transformsEnabled: false
          });
      
 
    
          // return new Kinetic.Shape({
          //   drawFunc: function(context) {
          //     var _context = context._context;
          //     _context.beginPath();
          //     _context.rect(0, 0, 10, 10);
          //     _context.closePath();
          //     _context.fillStyle = 'red';
          //     _context.fill();
          //   }
          // });
   
     
        } else {
          return new Kinetic.Shape(function(){
                var context = this.getContext();
                
                context.beginPath();
                context.rect(0, 0, 10, 10);
                context.fillStyle = 'red';
                context.fill();
                context.closePath();
            });
        }
      }

      function make_stage() {
        if (VERSION === 'new') {
          stage = new Kinetic.Stage({
            container: "container",
            width: width,
            height: height,
            nestedTransformsEnabled: false
          });
          circlesLayer = new Kinetic.Layer({
            hitGraphEnabled: false
          });
        } else {
          stage = new Kinetic.Stage("container", width, height);
          circlesLayer = new Kinetic.Layer();
        }
      }