         }
     }
 
+    /// update addition in tab view
+    private func updateTabViewAddition(by scrollView: UIScrollView) {
+        switch options.tabView.addition {
+        case .underline:
+            moveUnderlineView(scrollView: scrollView)
+        case .none:
+            tabView?.update(currentIndex)
+        }
+    }
+
     /// update underbar position
     private func moveUnderlineView(scrollView: UIScrollView) {
 

            let ratio = scrollView.contentOffset.x.truncatingRemainder(dividingBy: contentView.frame.width) / contentView.frame.width

            switch scrollView.contentOffset.x {
            case let offset where offset > frame.width * CGFloat(currentIndex):
                tabView.moveUnderlineView(index: currentIndex, ratio: ratio, direction: .forward)
            case let offset where offset < frame.width * CGFloat(currentIndex):
                tabView.moveUnderlineView(index: currentIndex, ratio: ratio, direction: .reverse)

        setContentOffset(of: scrollView)
    }

    public func scrollViewDidEndScrollingAnimation(_ scrollView: UIScrollView) {
        if isJumping || isOrientationChange { return }

        // update currentIndex
        if scrollView.contentOffset.x + 1.0 > frame.width * CGFloat(currentIndex + 1) {
            update(from: currentIndex, to: currentIndex + 1)
        } else if scrollView.contentOffset.x - 1.0 < frame.width * CGFloat(currentIndex - 1) {
            update(from: currentIndex, to: currentIndex - 1)
        }

        updateTabViewAddition(by: scrollView)
    }
    
    private func setContentOffset(of scrollView: UIScrollView) {

        if scrollView.contentOffset.x > frame.width * (CGFloat(currentIndex) + 0.5) {
