 
     weak var activeDelegate: UISideMenuNavigationControllerDelegate? {
         guard !view.isHidden else { return nil }
-        return sideMenuDelegate ?? foundDelegate ?? findDelegate(forViewController: presentingViewController)
-    }
-
-    func findDelegate(forViewController: UIViewController?) -> UISideMenuNavigationControllerDelegate? {
-        if let navigationController = forViewController as? UINavigationController {
-            return findDelegate(forViewController: navigationController.topViewController)
-        }
-        if let tabBarController = forViewController as? UITabBarController {
-            return findDelegate(forViewController: tabBarController.selectedViewController)
-        }
-        if let splitViewController = forViewController as? UISplitViewController {
-            return findDelegate(forViewController: splitViewController.viewControllers.last)
-        }
-
-        foundDelegate = forViewController as? UISideMenuNavigationControllerDelegate
-        return foundDelegate
+        if let sideMenuDelegate = sideMenuDelegate {
+            return sideMenuDelegate
+        }
+        return visibleViewController(from: presentingViewController) as? UISideMenuNavigationControllerDelegate
+    }
+
+    func visibleViewController(from: UIViewController?) -> UIViewController? {
+        if let foundDelegate = foundViewController {
+            return foundDelegate
+        }
+        if let navigationController = from as? UINavigationController {
+            return visibleViewController(from: navigationController.topViewController)
+        }
+        if let tabBarController = from as? UITabBarController {
+            return visibleViewController(from: tabBarController.selectedViewController)
+        }
+        if let splitViewController = from as? UISplitViewController {
+            return visibleViewController(from: splitViewController.viewControllers.last)
+        }
+
+        foundViewController = from
+        return from
     }
 
     func setup() {

        // Dismiss keyboard to prevent weird keyboard animations from occurring during transition
        presentingViewController?.view.endEditing(true)

        foundDelegate = nil
        activeDelegate?.sideMenuWillAppear?(menu: self, animated: animated)
    }
    

                                           else: { _ in Menu.elseCondition(.leftSide) } )

    private weak var _sideMenuManager: SideMenuManager?
    private weak var foundViewController: UIViewController?
    private weak var interactionController: SideMenuInteractionController?
    private var interactive: Bool = false
    private var originalBackgroundColor: UIColor?
