         containerView.addSubview(destinationViewController.view)
 
         if fadeIn {
-            destinationViewController.view.alpha = 0
-            UIView.animateWithDuration(fadeInDuration, animations: {
-                destinationViewController.view.alpha = 1
-            }, completion: { _ in
-                transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
-            })
+            animateBounceFadeInOrFadeIn(destinationViewController, transitionContext: transitionContext)
         } else {
             transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
         }

        destinationViewController.view.frame = containerView.bounds

        if fadeOut {
            UIView.animateWithDuration(fadeOutDuration, animations: {
                sourceViewController.view.alpha = 0
            }, completion: { _ in
                transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
            })
        } else {
            transitionContext.completeTransition(!transitionContext.transitionWasCancelled())
        }
    }
}

//

import UIKit

public protocol FadeAnimatorBounceable {
    func fadeAnimatorBounceContainerView() -> UIView
}

public class FadeAnimatorDelegate: NSObject, UIViewControllerTransitioningDelegate {

