             delay: 0.0,
             options: UIViewAnimationOptions.CurveEaseInOut,
             animations: {
-                fromViewController?.view.frame = self.dismissedFrameInContainerView(containerView, direction: fromDirection)
-                toViewController?.view.frame = self.presentedFrameInContainerView(containerView)
+                if fadeFrom {
+                    fromViewController?.view.alpha = 0.0
+                } else {
+                    fromViewController?.view.frame = self.dismissedFrameInContainerView(containerView, direction: fromDirection)
+                }
+                if fadeTo {
+                    toViewController?.view.alpha = 1.0
+                } else {
+                    toViewController?.view.frame = self.presentedFrameInContainerView(containerView)
+                }
             }
             )
         { finished in

        let animateFromView = animatePresenter || !isPresenting
        let toViewController = animateToView ? transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey) : nil
        let fromViewController = animateFromView ? transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey) : nil
        if toViewController != nil {
            containerView.addSubview(toViewController!.view)
            let toDirection = animatePresenter && !isPresenting ? direction.reverse : direction
            toViewController?.view.frame = dismissedFrameInContainerView(containerView, direction: toDirection)
        }
        let fromDirection = animatePresenter && isPresenting ? direction.reverse : direction
        UIView.animateWithDuration(

    @IBInspectable var bottomInset: CGFloat = 0.0
    @IBInspectable var belowTopGuide: Bool = false
    @IBInspectable var animatePresenter = false // TODO: Determine automatically
    @IBInspectable var fadeFirst: Bool = false // Fade out/in the first view controller, instead of moving.
    var direction: Direction = .Left // Direction to which it presents. Dismiss direction defaults to reverse.
    
    // MARK: - Private functions
