     }
 
     private func arrange() {
+        contentView.addSubview(buttonViews)
         contentView.addSubview(allCategoriesButton)
+        contentView.addSubview(gradientView)
 
         allCategoriesButton.snp_makeConstraints { make in
             make.top.bottom.trailing.equalTo(contentView)
             make.width.equalTo(contentView.snp_height)
+        }
+
+        gradientView.snp_makeConstraints { make in
+            make.trailing.equalTo(allCategoriesButton.snp_leading)
+            make.top.bottom.equalTo(contentView)
+            make.width.equalTo(30)
+        }
+
+        buttonViews.snp_makeConstraints { make in
+            make.top.leading.bottom.equalTo(contentView)
+            make.trailing.equalTo(gradientView.snp_trailing)
         }
     }
 


        var prevView: UIView? = nil
        for view in categoryButtons {
            contentView.addSubview(view)

            view.snp_makeConstraints { make in
                make.centerY.equalTo(contentView)

                if let prevView = prevView {
                    make.leading.equalTo(prevView.snp_trailing).offset(Size.spacing)
                }
                else {
                    make.leading.equalTo(contentView.snp_leading).offset(Size.sideMargins)
                }
            }

            prevView = view
        }

        layoutIfNeeded()

        for view in categoryButtons {
            if view.frame.maxX > allCategoriesButton.frame.minX {
                view.hidden = true
            }
        }
    }


    private var buttonEndpointLookup: [UIButton: ElloAPI] = [:]
    private var categoryButtons: [UIButton] = []
    private var gradientView = UIView()
    private var buttonViews = UIScrollView()
    private var gradientLayer = CAGradientLayer()
    private var allCategoriesButton = WhiteElloButton()

    private class func buttonTitle(category: String, selected: Bool) -> NSAttributedString {
        var attrs: [String: AnyObject] = [
