     }
     @discardableResult
     public func removeViewController(at index: Array<UIViewController>.Index) -> (Bool, UIViewController?) {
-        guard !childViewControllers.isEmpty else {
+        guard !_viewControllersStack[0].isEmpty else {
             return (false, nil)
         }
         
-        guard index >= childViewControllers.startIndex && index < childViewControllers.endIndex else {
+        guard index >= _viewControllersStack[0].startIndex && index < _viewControllersStack[0].endIndex else {
             return (false, nil)
         }
         
-        let viewController = childViewControllers[index]
+        let viewController = _viewControllersStack[0][index]
         viewController.willMove(toParentViewController: nil)
         viewController.removeFromParentViewController()
         

        
        _contentScrollView.addSubview(viewController.view)
        _contentScrollView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: [], metrics: nil, views: ["view":viewController.view]))
        viewController.view.leadingAnchor.constraint(equalTo: childViewControllers.last?.view.trailingAnchor ?? _contentScrollView.leadingAnchor).isActive = true
        if let _trailing = _trailingConstraintOflastViewController {
            _contentScrollView.removeConstraint(_trailing)
        }

        viewController.view.heightAnchor.constraint(equalTo: _contentScrollView.heightAnchor).isActive = true
        
        self.addChildViewController(viewController)
        _viewControllersStack[0].append(viewController)
        viewController.didMove(toParentViewController: self)
        
        if let scrollView = viewController.view as? UIScrollView {
