code: function extendEventData(ev) {
      var cur = this.current
        , startEv = cur.startEvent;
  
      // if the touches change, set the new touches over the startEvent touches
      // this because touchevents don't have all the touches on touchstart, or the
      // user must place his fingers at the EXACT same time on the screen, which is not realistic
      // but, sometimes it happens that both fingers are touching at the EXACT same time
      if(ev.touches.length != startEv.touches.length || ev.touches === startEv.touches) {
        // extend 1 level deep to get the touchlist with the touch objects
        startEv.touches = [];
        Utils.each(ev.touches, function(touch) {
          startEv.touches.push(Utils.extend({}, touch));
        });
      }
  
      var delta_time = ev.timeStamp - startEv.timeStamp
        , delta_x = ev.center.clientX - startEv.center.clientX
        , delta_y = ev.center.clientY - startEv.center.clientY;
  
      this.getVelocityData(ev, delta_time, delta_x, delta_y);
      this.getInterimData(ev);
  
      Utils.extend(ev, {
        startEvent: startEv,
  
        deltaTime : delta_time,
        deltaX    : delta_x,
        deltaY    : delta_y,
  
        distance  : Utils.getDistance(startEv.center, ev.center),
        angle     : Utils.getAngle(startEv.center, ev.center),
        direction : Utils.getDirection(startEv.center, ev.center),
  
        scale     : Utils.getScale(startEv.touches, ev.touches),
        rotation  : Utils.getRotation(startEv.touches, ev.touches)
      });
  
      return ev;
    }
docs: extend eventData for Hammer.gestures
  @param   {Object}   evData
  @returns {Object}   evData