 	}
 	
 	/**
-	A method that opens the rightView.
-	- Parameter velocity: A CGFloat value that sets the
-	velocity of the user interaction when animating the
-	leftView. Defaults to 0.
-	*/
-	public func openRightView(velocity: CGFloat = 0) {
+     A method that opens the rightView.
+     - Parameter velocity: A CGFloat value that sets the
+     velocity of the user interaction when animating the
+     leftView. Defaults to 0.
+     */
+	open func openRightView(velocity: CGFloat = 0) {
 		if enabledRightView {
 			if let v: View = rightView {
 				hideStatusBar()

	}
	
	/**
	A method that determines whether the passed point is
	contained within the bounds of the leftViewThreshold
	and height of the NavigationDrawerController view frame
	property.
	- Parameter point: A CGPoint to test against.
	- Returns: A Boolean of the result, true if yes, false 
	otherwise.
	*/
	private func isPointContainedWithinLeftThreshold(point: CGPoint) -> Bool {
		return point.x <= leftThreshold
	}
	
	/**
	A method that determines whether the passed point is
	contained within the bounds of the rightViewThreshold
	and height of the NavigationDrawerController view frame
	property.
	- Parameter point: A CGPoint to test against.
	- Returns: A Boolean of the result, true if yes, false
	otherwise.
	*/
	private func isPointContainedWithinRighThreshold(point: CGPoint) -> Bool {
		return point.x >= view.bounds.width - rightThreshold
	}
	
	/**
	A method that determines whether the passed in point is
	contained within the bounds of the passed in container view.
	- Parameter container: A UIView that sets the bounds to test
	against.
	- Parameter point: A CGPoint to test whether or not it is 
	within the bounds of the container parameter.
	- Returns: A Boolean of the result, true if yes, false
	otherwise.
	*/
	private func isPointContainedWithinView(container: UIView, point: CGPoint) -> Bool {
		return container.bounds.contains(point)
	}
	
	/**
	A method that shows a view.
	- Parameter container: A container view.
	*/
	private func showView(container: View) {
		container.depthPreset = depthPreset
		container.isHidden = false
	}
	
	/**
	A method that hides a view.
	- Parameter container: A container view.
	*/
	private func hideView(container: View) {
		container.depthPreset = .none
		container.isHidden = true

@objc(NavigationDrawerControllerDelegate)
public protocol NavigationDrawerControllerDelegate {
	/**
     An optional delegation method that is fired before the
     NavigationDrawerController opens.
     */
    @objc
	optional func navigationDrawerWillOpen(navigationDrawerController: NavigationDrawerController, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired after the
     NavigationDrawerController opened.
     */
	@objc
    optional func navigationDrawerDidOpen(navigationDrawerController: NavigationDrawerController, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired before the
     NavigationDrawerController closes.
     */
    @objc
	optional func navigationDrawerWillClose(navigationDrawerController: NavigationDrawerController, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired after the
     NavigationDrawerController closed.
     */
    @objc
	optional func navigationDrawerDidClose(navigationDrawerController: NavigationDrawerController, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired when the
     NavigationDrawerController pan gesture begins.
     */
    @objc
	optional func navigationDrawerPanDidBegin(navigationDrawerController: NavigationDrawerController, point: CGPoint, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired when the
     NavigationDrawerController pan gesture changes position.
     */
    @objc
	optional func navigationDrawerPanDidChange(navigationDrawerController: NavigationDrawerController, point: CGPoint, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired when the
     NavigationDrawerController pan gesture ends.
     */
    @objc
	optional func navigationDrawerPanDidEnd(navigationDrawerController: NavigationDrawerController, point: CGPoint, position: NavigationDrawerPosition)
	
	/**
     An optional delegation method that is fired when the
     NavigationDrawerController tap gesture executes.
     */
    @objc
	optional func navigationDrawerDidTap(navigationDrawerController: NavigationDrawerController, point: CGPoint, position: NavigationDrawerPosition)

	/**
     An optional delegation method that is fired when the
     status bar is about to change display, hidden or not.
     */
    @objc
	optional func navigationDrawerStatusBarHiddenState(navigationDrawerController: NavigationDrawerController, hidden: Bool)
}

@IBDesignable
@objc(NavigationDrawerController)
open class NavigationDrawerController: RootController, UIGestureRecognizerDelegate {
	/**
     A CGFloat property that is used internally to track
     the original (x) position of the container view when panning.
     */
	private var originalX: CGFloat = 0
	
	/**
     A UIPanGestureRecognizer property internally used for the
     leftView pan gesture.
     */
	internal private(set) var leftPanGesture: UIPanGestureRecognizer?
	
	/**
     A UIPanGestureRecognizer property internally used for the
     rightView pan gesture.
     */
	internal private(set) var rightPanGesture: UIPanGestureRecognizer?
	
	/**
     A UITapGestureRecognizer property internally used for the
     leftView tap gesture.
     */
	internal private(set) var leftTapGesture: UITapGestureRecognizer?
	
	/**
     A UITapGestureRecognizer property internally used for the
     rightView tap gesture.
     */
	internal private(set) var rightTapGesture: UITapGestureRecognizer?
	
	/**
     A CGFloat property that accesses the leftView threshold of
     the NavigationDrawerController. When the panning gesture has
     ended, if the position is beyond the threshold,
     the leftView is opened, if it is below the threshold, the
     leftView is closed. The leftViewThreshold is always at half
     the width of the leftView.
     */
	@IBInspectable public var leftThreshold: CGFloat = 64
	private var leftViewThreshold: CGFloat = 0
	
	/**
     A CGFloat property that accesses the rightView threshold of
     the NavigationDrawerController. When the panning gesture has
     ended, if the position is beyond the threshold,
     the rightView is closed, if it is below the threshold, the
     rightView is opened. The rightViewThreshold is always at half
     the width of the rightView.
     */
	@IBInspectable public var rightThreshold: CGFloat = 64
	private var rightViewThreshold: CGFloat = 0
	
	/**
     A NavigationDrawerControllerDelegate property used to bind
     the delegation object.
     */
	open weak var delegate: NavigationDrawerControllerDelegate?
	
	/**
     A CGFloat property that sets the animation duration of the
     leftView when closing and opening. Defaults to 0.25.
     */
	@IBInspectable
    open var animationDuration: TimeInterval = 0.25
	
	/**
     A Boolean property that enables and disables the leftView from
     opening and closing. Defaults to true.
     */
	@IBInspectable
    open var enabled: Bool {
		get {
			return enabledLeftView || enabledRightView
		}
