 // MARK: - TabNavigationBarDelegate.
 
 extension TabNavigationController: TabNavigationBarDelegate {
-    func tabNavigationBar(_ tabNavigationBar: TabNavigationBar, willSelectTitleItemAt index: Int) {
+    public func tabNavigationBar(_ tabNavigationBar: TabNavigationBar, willSelectTitleItemAt index: Int) {
         guard _viewControllersStack.isEmpty else {
             return
         }
         setSelectedViewController(at: index, animated: true)
     }
     
-    func tabNavigationBar(_ tabNavigationBar: TabNavigationBar, didSelectTitleItemAt index: Int) {
+    public func tabNavigationBar(_ tabNavigationBar: TabNavigationBar, didSelectTitleItemAt index: Int) {
         _endsRootViewControllersAppearanceTransitionIfNeccessary()
     }
     
-    func tabNavigationBarDidTouchNavigatiomBackItem(_ tabNavigationBar: TabNavigationBar) {
+    public func tabNavigationBarDidTouchNavigatiomBackItem(_ tabNavigationBar: TabNavigationBar) {
         pop(animated: true)
     }
 }

        _panGestureRecognizer.isEnabled = false
    }
    
    override func loadView() {
        super.loadView()
        
        view.addGestureRecognizer(_panGestureRecognizer)

    
    public func addViewController<T>(_ viewController: T) where T: UIViewController, T: TabNavigationReadable {
        _addViewControllerWithoutUpdatingNavigationTitle(viewController)
        tabNavigationBar.addNavigationTitleItem(viewController._tabNavigationTitleItem)
    }
    @discardableResult
    public func removeViewController<T>(_ viewController: T) -> (Bool, UIViewController?) where T: UIViewController, T:TabNavigationReadable {
