         viewController.view.widthAnchor.constraint(equalTo: _contentScrollView.widthAnchor).isActive = true
         viewController.view.heightAnchor.constraint(equalTo: _contentScrollView.heightAnchor).isActive = true
         
-        _rootViewControllersContext.viewControllers.append(viewController)
+        if !_rootViewControllersContext.viewControllers.contains(viewController) {
+            _rootViewControllersContext.viewControllers.append(viewController)
+        }
         viewController.didMove(toParentViewController: self)
     }
     

        viewController.removeFromParentViewController()
        viewController.didMove(toParentViewController: nil)
        
        tabNavigationBar.removeNavigaitonTitleItem(at: index)
        
        return (true, viewController)

    }
    
    public func addViewController<T>(_ viewController: T) where T: UIViewController, T: TabNavigationReadable {
        if isViewLoaded {
            // Add view controller as child view controller if view of tab-navigation controller loaded.
            _addViewControllerWithoutUpdatingNavigationTitle(viewController)
            tabNavigationBar.addNavigationTitleItem(viewController._tabNavigationTitleItem)
        } else {
            _rootViewControllersContext.viewControllers.append(viewController)
        }
    }
    @discardableResult
    public func removeViewController<T>(_ viewController: T) -> (Bool, UIViewController?) where T: UIViewController, T:TabNavigationReadable {
