    public weak var context: UINavigationController?
    weak var topBeforeShowing: UIViewController?
    weak var previousContextDelegate: UINavigationControllerDelegate?
-   
+
+   public var willShowBlock: (() -> Void) = {}
+   public var showBlock: (() -> Void) = {}
+
+   public var willDismissBlock: (() -> Void) = {}
    public var dismissBlock: (() -> Void) = {}
-   
+
    fileprivate var _isShowing: Bool = false
    fileprivate var _resetCompletion: (() -> Void)?
    fileprivate var _dismissCompletion: (() -> Void)?

      if !_isShowing, rootViewController == viewController {
         conductorDidShow(in: navigationController)
         _isShowing = true
      }
      
      if _isShowing, rootViewController == viewController, let resetCompletion = _resetCompletion {

      
      if _conductorIsBeingPoppedOffContext(byShowing: viewController) {
         conductorWillDismiss(from: navigationController)
         willDismissBlock()
      }
      
      if !_isShowing, rootViewController == viewController {
         conductorWillShow(in: navigationController)
         willShowBlock()
      }
      
      previousDelegate?.navigationController?(navigationController, willShow: viewController, animated: animated)
