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

*/
class JTSSloppyNavigationController: UINavigationController {
    
    private var sloppySwiping: JTSSloppySwiping? = nil
    
    override init(navigationBarClass: AnyClass?, toolbarClass: AnyClass?) {
        super.init(navigationBarClass: navigationBarClass, toolbarClass: toolbarClass)
    }
    
    override init(rootViewController: UIViewController) {
        super.init(rootViewController: rootViewController)
    }
    
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
        self.sloppySwiping = JTSSloppySwiping(navigationController: self)
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.sloppySwiping = JTSSloppySwiping(navigationController: self)
    }
}

/**
To use this, just initialize it with a navigation controller and keep a strong
reference to the JTSSloppySwiping instance
*/
class JTSSloppySwiping: NSObject {
    
    weak private var navigationController: UINavigationController?
    
    init(navigationController: UINavigationController) {
        self.navigationController = navigationController
        super.init()
        navigationController.delegate = self
        self.popRecognizer.addTarget(self, action: "popRecognizerPanned:")
        navigationController.view.addGestureRecognizer(self.popRecognizer)
    }
    
    // MARK: Private
    
    private var isInteractivelyPopping: Bool = false
    private var interactivePopAnimator = InteractivePopAnimator()
    private let popRecognizer = UIPanGestureRecognizer()
    
    private var isAnimatingANonInteractiveTransition: Bool = false {
        didSet {
            self.popRecognizer.enabled = !self.isAnimatingANonInteractiveTransition
        }
    }
    
    /*private, basically*/ func popRecognizerPanned(recognizer: UIPanGestureRecognizer) {
        
        guard let navigationController = self.navigationController else {
            return

        }
    }
    
    // MARK: Convenience
    
    func push(transitionContext: UIViewControllerContextTransitioning) {
        guard let container = transitionContext.containerView(),
            fromView = transitionContext.viewForKey(UITransitionContextFromViewKey),
            toView = transitionContext.viewForKey(UITransitionContextToViewKey) else {
