         imageView.contentMode = sliderImageContentMode
         imageView.image = sliderImage
         addVisualConstraints("V:|[view]|", horizontal: "H:|[view]|", view: imageView, toView: slider)
+    }
+
+    private func setup() {
+        // Apply the custom slider styling
+        layer.cornerRadius = cornerRadius
+        layer.masksToBounds = true
+
+        // Add views
+        addSlideInLabel()
+        addSlideOutView()
+        addSlider()
 
         // Add pan gesture to slide the slider view
         let pan = UIPanGestureRecognizer(target: self, action: #selector(panGesture))

        sliderPositionConstraint.constant = sliderPadding
        setNeedsUpdateConstraints()
        layoutIfNeeded()
    }

    func panGesture(recognizer: UIPanGestureRecognizer) {

        case .Cancelled:
            guard shouldSlide else { return }
            progress = Float(x / bounds.size.width)

            // If we are more than 50% through the swipe and moving the the right direction
            let success = progress > 0.5 && recognizer.velocityInView(self).x > -1
            let finalX = success ? lastPosition : startPosition
            progress = success ? 1 : 0


            changeSliderViewsState(success)
            sliderPositionConstraint.constant = finalX
            setNeedsUpdateConstraints()

