     
     public override func viewWillLayoutSubviews() {
         super.viewWillLayoutSubviews()
-        selectionButtonsContainerView.translatesAutoresizingMaskIntoConstraints = false
+        buttonsScrollView.translatesAutoresizingMaskIntoConstraints = false
         let pageViewControllerView = pageViewController.view
         pageViewControllerView.translatesAutoresizingMaskIntoConstraints = false
         
         
         NSLayoutConstraint.activateConstraints([
-            NSLayoutConstraint(item: selectionButtonsContainerView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0),
-            NSLayoutConstraint(item: selectionButtonsContainerView, attribute: .Top, relatedBy: .Equal, toItem: self.topLayoutGuide, attribute: .Bottom, multiplier: 1, constant: 0),
-            NSLayoutConstraint(item: selectionButtonsContainerView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: appearance.button.buttonsHeight),
-            NSLayoutConstraint(item: selectionButtonsContainerView, attribute: .Width, relatedBy: .Equal, toItem: self.view, attribute: .Width, multiplier: 1, constant: 0)
+            NSLayoutConstraint(item: buttonsScrollView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0),
+            NSLayoutConstraint(item: buttonsScrollView, attribute: .Top, relatedBy: .Equal, toItem: self.topLayoutGuide, attribute: .Bottom, multiplier: 1, constant: 0),
+            NSLayoutConstraint(item: buttonsScrollView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: 30),
+            NSLayoutConstraint(item: buttonsScrollView, attribute: .Width, relatedBy: .Equal, toItem: self.view, attribute: .Width, multiplier: 1, constant: 0)
             ])
         
         // layout pageViewController
         NSLayoutConstraint.activateConstraints([
             NSLayoutConstraint(item: pageViewControllerView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0),
-            NSLayoutConstraint(item: pageViewControllerView, attribute: .Top, relatedBy: .Equal, toItem: selectionButtonsContainerView, attribute: .Bottom, multiplier: 1, constant: 0),
+            NSLayoutConstraint(item: pageViewControllerView, attribute: .Top, relatedBy: .Equal, toItem: buttonsScrollView, attribute: .Bottom, multiplier: 1, constant: 0),
             NSLayoutConstraint(item: pageViewControllerView, attribute: .Bottom, relatedBy: .Equal, toItem: self.bottomLayoutGuide, attribute: .Top, multiplier: 1, constant: 0),
             NSLayoutConstraint(item: pageViewControllerView, attribute: .Width, relatedBy: .Equal, toItem: self.view, attribute: .Width, multiplier: 1, constant: 0)
             ])

    
    // MARK: - Setups
    public func setupButtons() {
        self.view.addSubview(selectionButtonsContainerView)
        
        guard let vcs = self.viewControllers else { return }
        
        appearance.button.buttonsCount = vcs.count
        
        self.selectionButtons = [UIButton]()
        for (idx, vc) in vcs.enumerate() {
            let btn = UIButton(frame: appearance.buttonFrame(idx))
            btn.translatesAutoresizingMaskIntoConstraints = true
            btn.setTitle(vc.title, forState: .Normal)
            btn.setTitleColor(appearance.button.buttonTitleColor, forState: .Normal)
            btn.setTitleColor(appearance.button.buttonTitleSelectedColor, forState: .Selected)
            btn.backgroundColor = appearance.button.buttonBackgroundColor
            btn.titleLabel?.font = UIFont.init(name: "SFUIText-Semibold", size: appearance.button.buttonFontSize)
            btn.titleLabel?.textAlignment = .Center
            
            btn.tag = idx
            btn.addTarget(self, action: #selector(LXPageViewWithButtonsViewController.selectionButtonTapped(_:)), forControlEvents: .TouchUpInside)
            
            self.selectionButtons?.append(btn)
            self.selectionButtonsContainerView.addSubview(btn)
        }
        self.selectionButtons?[currentIdx].selected = true
        
        setupSelectionIndicator()
    }
    
    public func setupPageViewController() {

        self.view.addSubview(pageViewController.view)
        self.addChildViewController(pageViewController)
        pageViewController.didMoveToParentViewController(self)
        
        pageViewScrollView?.addObserver(self, forKeyPath: "contentOffset", options: .New, context: &LXPageViewWithButtonsViewControllerScrollingViewContentOffsetXContext)
    }
    
    var LXPageViewWithButtonsViewControllerScrollingViewContentOffsetXContext : Int32 = 0
    
    // MARK: - Selection Indicator
    override public func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
