docs: function(t){
      // http://stackoverflow.com/a/5344074/478354
      var currentFrame = this.currentFrame(),
          nextFrame = this.nextFrame(),
          handProps   = ['palmPosition', 'stabilizedPalmPosition', 'sphereCenter', 'direction', 'palmNormal', 'palmVelocity'],
          fingerProps = ['mcpPosition', 'pipPosition', 'dipPosition', 'tipPosition', 'direction'],
          frameData = this.cloneCurrentFrame(),
          numHands = frameData.hands.length,
          numPointables = frameData.pointables.length,
          len1 = handProps.length,
          len2 = fingerProps.length,
          prop, hand, pointable;
  
      for (var i = 0; i < numHands; i++){
        hand = frameData.hands[i];
  
        for (var j = 0; j < len1; j++){
          prop = handProps[j];
  
          if (!currentFrame.hands[i][prop]){
            continue;
          }
  
          if (!nextFrame.hands[i]){
            continue;
          }
  
          Leap.vec3.lerp(
            hand[prop],
            currentFrame.hands[i][prop],
            nextFrame.hands[i][prop],
            t
          );
  
  //        console.assert(hand[prop]);
        }
  
      }
  
      for ( i = 0; i < numPointables; i++){
        pointable = frameData.pointables[i];
  
        for ( j = 0; j < len2; j++){
          prop = fingerProps[j];
  
          if (!currentFrame.pointables[i][prop]){
            continue;
          }
  
          if (!nextFrame.hands[i]){
            continue;
          }
  
          Leap.vec3.lerp(
            pointable[prop],
            currentFrame.pointables[i][prop],
            nextFrame.pointables[i][prop],
            0
          );
  //          console.assert(t >= 0 && t <= 1);
  //          if (t > 0) debugger;
  
        }
  
      }
  
      return frameData;
    }