     
     // MARK: - UIGestureRecognizerDelegate
     public func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
-        guard gestureRecognizer == self.dismissalGesture else {
-            return true
-        }
-        
-        if let translation = self.dismissalGesture?.translationInView(dismissalGesture?.view) {
-            if(translation.x * UIApplication.sharedApplication().wmf_tocRTLMultiplier > 0){
+        if gestureRecognizer == self.dismissalGesture {
+            
+            if let translation = self.dismissalGesture?.translationInView(dismissalGesture?.view) {
+                if(translation.x * UIApplication.sharedApplication().wmf_tocRTLMultiplier > 0){
+                    return true
+                }else{
+                    return false
+                }
+            }else{
+                return false
+            }
+            
+        }else if gestureRecognizer == self.presentationGesture{
+            
+            let translation = self.presentationGesture.translationInView(presentationGesture.view)
+            let location = self.presentationGesture.locationInView(presentationGesture.view)
+            let maxLocation = UIApplication.sharedApplication().wmf_tocShouldBeOnLeft ? 120 : presentationGesture.view!.frame.maxX - 120
+            let isInStartBoundry = UIApplication.sharedApplication().wmf_tocShouldBeOnLeft ? maxLocation - location.x > 0 : location.x - maxLocation > 0
+            if(translation.x * UIApplication.sharedApplication().wmf_tocRTLMultiplier < 0) && isInStartBoundry{
                 return true
             }else{
                 return false
             }
         }else{
-            return false
-        }
+            return true
+        }
+        
+        
     }
 }

    
    
    // MARK: - Gestures
    lazy var presentationGesture: UIScreenEdgePanGestureRecognizer = {
        let gesture = UIScreenEdgePanGestureRecognizer.init(target: self, action: #selector(WMFTableOfContentsAnimator.handlePresentationGesture(_:)))
        gesture.edges = UIApplication.sharedApplication().wmf_tocShouldBeOnLeft ? .Left : .Right
        return gesture
    }()
    

            self.isInteractive = true
            self.presentingViewController?.presentViewController(self.presentedViewController!, animated: true, completion: nil)
        case (.Changed):
            let translation = gesture.translationInView(gesture.view)
            let transitionProgress = translation.x * -UIApplication.sharedApplication().wmf_tocRTLMultiplier / CGRectGetMaxX(self.presentedViewController!.view.bounds)
            self.updateInteractiveTransition(transitionProgress)
        case (.Ended):
            self.isInteractive = false
