private static SerializableHand ToSerializableHand(Hand leapHand)
 {
     var hand = new SerializableHand
     {
         id = leapHand.Id,
         frameID = leapHand.FrameId,
         confidence = leapHand.Confidence,
         grabStrength = leapHand.GrabStrength,
         grabAngle = leapHand.GrabAngle,
         pinchStrength = leapHand.PinchStrength,
         pinchDistance = leapHand.PinchDistance,
         palmWidth = leapHand.PalmWidth,
         isLeft = leapHand.IsLeft,
         timeVisible = leapHand.TimeVisible,
         arm = ToSerializableArm(leapHand.Arm),
         fingers = leapHand.Fingers.Select(ToSerializableFinger).ToList(),
         palmPosition = ToSerializableVector(leapHand.PalmPosition),
         stabilizedPalmPosition = ToSerializableVector(leapHand.StabilizedPalmPosition),
         palmVelocity = ToSerializableVector(leapHand.PalmVelocity),
         palmNormal = ToSerializableVector(leapHand.PalmNormal),
         direction = ToSerializableVector(leapHand.Direction),
         wristPosition = ToSerializableVector(leapHand.WristPosition)
     };
     return hand;
 }
 private static Hand ToHand(SerializableHand hand)
 {
     return new Hand(hand.frameID, hand.id, hand.confidence, hand.grabStrength, hand.grabAngle, hand.pinchStrength, hand.pinchDistance, hand.palmWidth,
         hand.isLeft, hand.timeVisible, ToArm(hand.arm), hand.fingers.Select(ToFinger).ToList(), hand.palmPosition.ToVector(), hand.stabilizedPalmPosition.ToVector(),
         hand.palmVelocity.ToVector(), hand.palmNormal.ToVector(), hand.direction.ToVector(), hand.wristPosition.ToVector());
 }