         }
     }
     
-    // MARK: Private
-    
-    private let defaultDuration: NSTimeInterval = 0.33
-    
-    private func push(transitionContext: UIViewControllerContextTransitioning) {
+    // MARK: Convenience
+    
+    func push(transitionContext: UIViewControllerContextTransitioning) {
         guard let container = transitionContext.containerView(),
             fromView = transitionContext.viewForKey(UITransitionContextFromViewKey),
             toView = transitionContext.viewForKey(UITransitionContextToViewKey) else {

        container.addSubview(shadowView)
        container.addSubview(toView)
        
        UIView.animateWithDuration(self.defaultDuration,
            animations: { () -> Void in
                shadowView.alpha = 0.5
                let maxOffset = container.width / 3.0
                fromView.transform = CGAffineTransformMakeTranslation(-maxOffset, 0)
                toView.transform = CGAffineTransformIdentity
            }) { (completed) -> Void in

        }
    }
    
    func pop(transitionContext: UIViewControllerContextTransitioning) {
        guard let container = transitionContext.containerView(),
            fromView = transitionContext.viewForKey(UITransitionContextFromViewKey),
            toView = transitionContext.viewForKey(UITransitionContextToViewKey) else {
                return
        }
        
        let maxOffset = container.width * maxBackViewTranslationPercentage
        toView.frame = container.bounds
        toView.transform = CGAffineTransformMakeTranslation(-maxOffset, 0)
        
