                         }
                     }
                     
-                    let b = toView.bounds
-                    let w = b.width
-                    let h = b.height
-                    let p = toView.superview?.convert(toView.position, to: nil) ?? toView.position
-                    snapshotAnimations.append(Motion.position(x: p.x, y: p.y))
-                    
-                    let sizeAnimation = Motion.size(CGSize(width: w, height: h))
+                    snapshotAnimations.append(Motion.position(to: tv.motionPosition))
+                    
+                    let sizeAnimation = Motion.size(tv.bounds.size)
                     snapshotAnimations.append(sizeAnimation)
-                    
-                    snapshotChildAnimations.append(Motion.position(x: w / 2, y:  h / 2))
                     snapshotChildAnimations.append(sizeAnimation)
                     
-                    snapshotAnimations.append(Motion.rotate(angle: toView.motionRotationAngle))
-                    
-                    let cornerRadiusAnimation = Motion.corner(radius: toView.cornerRadius)
+                    snapshotChildAnimations.append(Motion.position(x: tv.bounds.width / 2, y: tv.bounds.height / 2))
+                    
+                    snapshotAnimations.append(Motion.rotate(angle: tv.motionRotationAngle))
+                    
+                    let cornerRadiusAnimation = Motion.corner(radius: tv.cornerRadius)
                     snapshotAnimations.append(cornerRadiusAnimation)
                     snapshotChildAnimations.append(cornerRadiusAnimation)
                     
-                    let snapshot = transitionView.snapshot(view: fromView, afterUpdates: true)
+                    let snapshot = fv.snapshot(afterUpdates: true)
+                    transitionView.addSubview(snapshot)
                     
                     Motion.delay(t) {
-                        for ta in toView.motionTransitionAnimations {
+                        for ta in tv.motionTransitionAnimations {
                             switch ta {
                             case let .timingFunction(timingFunction):
                                 tf = timingFunction

    }
}

extension MotionTransitionAnimator: UINavigationControllerDelegate {
    open func navigationController(_ navigationController: UINavigationController, animationControllerFor operation: UINavigationControllerOperation, from fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        isPresenting = operation == .push
        return self

    }
}

extension MotionTransition: UIViewControllerAnimatedTransitioning {
    @objc(animateTransition:)
    open func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
        guard let tVC = transitionContext.viewController(forKey: .to) else {
