 @objc(NavigationDrawerControllerDelegate)
 public protocol NavigationDrawerControllerDelegate {
 	/**
-	An optional delegation method that is fired before the 
-	NavigationDrawerController opens.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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)
-public class NavigationDrawerController: RootController, UIGestureRecognizerDelegate {
-	/**
-	A CGFloat property that is used internally to track
-	the original (x) position of the container view when panning.
-	*/
+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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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.
-	*/
+     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 public var animationDuration: TimeInterval = 0.25
-	
-	/**
-	A Boolean property that enables and disables the leftView from
-	opening and closing. Defaults to true.
-	*/
-	@IBInspectable public var enabled: Bool {
+     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
 		}

	}
	
	/**
	A Boolean property that triggers the status bar to be hidden
	when the leftView is opened. Defaults to true.
	*/
	@IBInspectable public var enableHideStatusBar: Bool = true
	
	/// Sets the statusBar to hidden or not.
	public private(set) var isStatusBarHidden: Bool = false
	
	/**
	A DepthPreset property that is used to set the depth of the
	leftView when opened.
	*/
    public var depthPreset: DepthPreset = .depth1
	
	/**
	A View property that is used to hide and reveal the
	leftViewController. It is very rare that this property will
	need to be accessed externally.
	*/
	public private(set) var leftView: View?
	
	/**
	A View property that is used to hide and reveal the
	rightViewController. It is very rare that this property will
	need to be accessed externally.
	*/
	public private(set) var rightView: View?
	
	/// Indicates whether the leftView or rightView is opened.
	public var opened: Bool {
		return openedLeftView || openedRightView
	}
	
	/// indicates if the leftView is opened.
	public var openedLeftView: Bool {
		guard nil != leftView else {
			return false
		}

	}
	
	/// Enables the right tap gesture.
	@IBInspectable
    open var enabledRightTapGesture = false {
		didSet {
			if enabledRightTapGesture {
				prepareRightTapGesture()
