         return drawerViewController.view
     }
     
-    /// Handle invoked when drawer slides (argument represents percent shown, 0% being 0 and 100% being `drawerSize`)
+    /// Handle invoked when drawer will open
+    public var drawerWillOpen: (() -> Void)?
+    /// Handle invoked when the drawer will close
+    public var drawerWillClose: (() -> Void)?
+    
+    /// Handle invoked when drawer slides (argument represents percent shown,
+    /// 0% being 0 and 100% being `drawerSize`)
     public var drawerDidPan: ((CGFloat) -> Void)?
+    /// Handle invoked when the drawer pan gesture will begin
+    public var drawerPanDidBegin: (() -> Void)?
+    /// Handle invoked when drawer pan did finish (first argument represnts
+    /// the speed at which the drawer will close, second, second represents
+    /// whether the drawer will open or not)
+    public var drawerPanDidFinish: ((NSTimeInterval, Bool) -> Void)?
     
     // ***
     

    /// Whether the user can swipe to reveal the drawer
    public var canPanToDrawer: Bool = true {
        didSet {
            configureSwipeGestureRecognizer()
        }
    }
    /// A pan gesture recognizer used to recognize when a user swipes to the view. Non-nil if `canSwipeToDrawer` is true.

            case .Right:
                _fingerOffset = drawerPoint.x
            }
            drawerPanDidBegin?()
        case .Ended:
            let swipeEndPoint = gestureRecognizer.locationInView(view)
            let swipeEndDate = NSDate()
