var start,end,mean = [];
   
  var draggableBox;

  draggableBox = document.createElement('div');
   
  draggableBox.style.cssText ="width:100px;height:100px;top:100px;left:100px";
  document.body.appendChild(draggableBox)
  draggable(draggableBox);
  draggable(draggableBox);
  dragElementTo(draggableBox, [310, 220]);
  draggable(draggableBox);
  dragElementTo(draggableBox);
  var previousElement = document.createElement('div');
  previousElement.style.cssText ="width:100px;height:100px;position:fixed;";
  document.body.appendChild(draggableBox)
  draggable(previousElement);
  draggable(draggableBox);
  dragElementTo(previousElement);
  dragElementTo(draggableBox, 0, 0);
  draggable(draggableBox);
  dragElementTo(draggableBox);
  draggable(draggableBox);
  dragElementTo(draggableBox, [555, 666]);
  draggable(draggableBox);
  dragElementTo(draggableBox, [222, 111]);
  draggable(draggableBox);
  dragElementTo(draggableBox, [111, 222], [333, 444], [555, 666]);
  dragElementTo(draggableBox, [200, 100]);

  function dragElementTo(/* element, points */) {
    var element = arguments[0];
    var points = (2 <= arguments.length) ? Array.prototype.slice.call(arguments, 1) : [];

    var downPosition = $(element).position();
    start = window.performance.now();;
    happen.mousedown(element, { clientX: downPosition.left, clientY: downPosition.top });
    var lastPoint = [downPosition.left, downPosition.top];
    for (var i = 0; i < points.length; i++) {
      happen.mousemove(element, { clientX: points[i][0], clientY: points[i][1] });
      lastPoint = points[i];
    };
    happen.mouseup(element, { clientX: lastPoint[0], clientY: lastPoint[1] });
    end = window.performance.now();
    mean.push(end - start);
    try{
      document.body.removeChild(draggableBox);
    }catch(e){}
  }
   console.log( mean.toString());
   console.log( mean.reduce(function(prev, curr) { // print the mean value
      return prev + curr;
    }, 0) /9 );