             options: UIViewAnimationOptions.CurveEaseOut,
             animations: { () -> Void in
                 
-                sourceImageView.frame = self.destinationTransition!.transitionDestinationImageViewFrame()
-                sourceImageView.transform = CGAffineTransformMakeScale(1.06, 1.06)
-                
-                backgroundView.alpha = 0.9
+                self.destinationTransition!.transitionDestinationImageView(sourceImageView)
+                backgroundView.alpha = 1.0
 
             }) { (result) -> Void in
                 
-                UIView.animateWithDuration(
-                    0.06,
-                    delay: 0.0,
-                    options: UIViewAnimationOptions.CurveEaseOut,
-                    animations: { () -> Void in
-
-                        sourceImageView.transform = CGAffineTransformIdentity
-                        snapshotView.frame = fromViewController.view.frame
-                        
-                        backgroundView.alpha = 1.0
-
-                    },
-                    completion: { (result) -> Void in
-
-                        sourceImageView.alpha = 0.0
-                        sourceImageView.removeFromSuperview()
-
-                        toViewController.view.alpha = 1.0
-                        backgroundView.removeFromSuperview()
-
-                        transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
-                })
+                sourceImageView.alpha = 0.0
+                sourceImageView.removeFromSuperview()
                 
+                toViewController.view.alpha = 1.0
+                backgroundView.removeFromSuperview()
+                
+                transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
 
         }
         

            options: UIViewAnimationOptions.CurveEaseOut,
            animations: { () -> Void in
                
                sourceImageView.frame = self.destinationTransition!.transitionDestinationImageViewFrame()
                fromViewController.view.alpha = 0.1
                
            }) { (result) -> Void in
                
                UIView.animateWithDuration(
                    0.06,
                    delay: 0.0,
                    options: UIViewAnimationOptions.CurveEaseOut,
                    animations: { () -> Void in
                        
                        sourceImageView.alpha = 0.0
                        fromViewController.view.alpha = 0.0

                    },
                    completion: { (result) -> Void in
                        
                        sourceImageView.removeFromSuperview()
                        transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
                })
                
                
        }
    }


public protocol ZoomingAnimationControllerTransitioning {
    func transitionSourceImageView() -> UIImageView
    func transitionDestinationImageView(sourceImageView: UIImageView)
}


