         }
     }
     
-    open func snapshot(view: UIView, afterUpdates: Bool) -> UIView {
-        view.isHidden = false
-        
-        (view as? Pulseable)?.pulse.pulseLayer?.isHidden = true
-        
-        let oldCornerRadius = view.cornerRadius
-        view.cornerRadius = 0
-        
-        let v = view.snapshotView(afterScreenUpdates: afterUpdates)!
-        view.cornerRadius = oldCornerRadius
+    open func snapshot(afterUpdates: Bool) -> UIView {
+        isHidden = false
+        
+        (self as? Pulseable)?.pulse.pulseLayer?.isHidden = true
+        
+        let oldCornerRadius = cornerRadius
+        cornerRadius = 0
+        
+        let v = snapshotView(afterScreenUpdates: afterUpdates)!
+        cornerRadius = oldCornerRadius
         
         let contentView = v.subviews.first!
-        contentView.cornerRadius = view.cornerRadius
+        contentView.cornerRadius = cornerRadius
         contentView.masksToBounds = true
         
-        v.motionTransitionIdentifier = view.motionTransitionIdentifier
-        v.position = view.superview?.convert(view.position, to: nil) ?? view.position
-        v.bounds = view.bounds
-        v.cornerRadius = view.cornerRadius
-        v.zPosition = view.zPosition
-        v.opacity = view.opacity
-        v.isOpaque = view.isOpaque
-        v.anchorPoint = view.anchorPoint
-        v.masksToBounds = view.masksToBounds
-        v.backgroundColor = view.backgroundColor
-        v.borderColor = view.borderColor
-        v.borderWidth = view.borderWidth
-        v.shadowRadius = view.shadowRadius
-        v.shadowOpacity = view.shadowOpacity
-        v.shadowColor = view.shadowColor
-        v.shadowOffset = view.shadowOffset
-        v.contentMode = view.contentMode
-        v.layer.transform = view.layer.transform
-        
-        view.isHidden = true
-        (view as? Pulseable)?.pulse.pulseLayer?.isHidden = false
-        
-        addSubview(v)
+        v.motionTransitionIdentifier = motionTransitionIdentifier
+        v.position = motionPosition
+        v.bounds = bounds
+        v.cornerRadius = cornerRadius
+        v.zPosition = zPosition
+        v.opacity = opacity
+        v.isOpaque = isOpaque
+        v.anchorPoint = anchorPoint
+        v.masksToBounds = masksToBounds
+        v.backgroundColor = backgroundColor
+        v.borderColor = borderColor
+        v.borderWidth = borderWidth
+        v.shadowRadius = shadowRadius
+        v.shadowOpacity = shadowOpacity
+        v.shadowColor = shadowColor
+        v.shadowOffset = shadowOffset
+        v.contentMode = contentMode
+        v.layer.transform = layer.transform
+        
+        isHidden = true
+        (self as? Pulseable)?.pulse.pulseLayer?.isHidden = false
         
         return v
     }

        transitionView.isHidden = true
        
        let bgView = UIView()
        bgView.backgroundColor = fromViewController.view.backgroundColor
        bgView.frame = transitionView.bounds
        transitionView.addSubview(bgView)
        
        toViewController.view.updateConstraints()
        toViewController.view.setNeedsLayout()
        toViewController.view.layoutIfNeeded()
        
        for toView in toViews {
            for fromView in fromViews {
                if toView.motionTransitionIdentifier == fromView.motionTransitionIdentifier {
                    var t: TimeInterval = 0
                    var d: TimeInterval = 0
                    var snapshotAnimations = [CABasicAnimation]()
                    var snapshotChildAnimations = [CABasicAnimation]()
                    var tf = MotionAnimationTimingFunction.easeInEaseOut
                    
                    for ta in toView.motionTransitionAnimations {
                        switch ta {
                        case let .delay(time):
                            if time > delay {

    }
}

extension MotionTransition: UITabBarControllerDelegate {
    open func tabBarController(_ tabBarController: UITabBarController, animationControllerForTransitionFrom fromVC: UIViewController, to toVC: UIViewController) -> UIViewControllerAnimatedTransitioning? {
        isPresenting = true
        self.fromViewController = fromViewController ?? fromVC
