         }
     }
     
+    public var shouldMakeTranclucentOnHiglhlight = true
+    
     lazy var nestedButtons: [UIButton] = {
         var buttons = [UIButton]()
-        let count = self.subviews.count - 1 > 0 ? self.subviews.count - 1 : 0
+        let count = self.subviews.count - 1
+        guard count > 0 else {
+            return []
+        }
         let sbviews = Array(self.subviews[0..<1])
         self.recursive(subviews: sbviews) {
             if let button = $0 as? UIButton {

        self.overlay = overlay
    }
    
    override var isEnabled: Bool { didSet {
        self.nestedButtons.forEach { $0.isEnabled = isEnabled }
    }}

    override var isSelected: Bool { didSet {
        self.nestedButtons.forEach { $0.isSelected = isSelected }
    }}

    override var isHighlighted: Bool { didSet {
        let count = subviews.count - 1 > 0 ? subviews.count - 1 : 0
        let alpha: CGFloat = isHighlighted ? 0.3 : 1
        for subview in subviews[0..<count] {

        }
    }
    
    override public var contentVerticalAlignment: UIControlContentVerticalAlignment { didSet {
        self.nestedButtons.forEach { $0.contentVerticalAlignment = contentVerticalAlignment }
    }}
    
    override public var contentHorizontalAlignment: UIControlContentHorizontalAlignment{ didSet {
        self.nestedButtons.forEach { $0.contentHorizontalAlignment = contentHorizontalAlignment }
    }}
    
    
    override public func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
        self.nestedButtons.forEach { $0.beginTracking(touch, with: event) }
        return super.beginTracking(touch, with: event)
    }

    override public func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool {
        self.nestedButtons.forEach { $0.continueTracking(touch, with: event) }
        return super.continueTracking(touch, with: event)
    }

    override public func endTracking(_ touch: UITouch?, with event: UIEvent?) {
        self.nestedButtons.forEach { $0.endTracking(touch, with: event) }
        return super.endTracking(touch, with: event)
    }

    override public func cancelTracking(with event: UIEvent?) {
        self.nestedButtons.forEach { $0.cancelTracking(with: event) }
        super.cancelTracking(with: event)
    }
    
    override public func addTarget(_ target: Any?, action: Selector, for controlEvents: UIControlEvents) {
        overlay.addTarget(target, action: action, for: controlEvents)
    }
    
    override public func removeTarget(_ target: Any?, action: Selector?, for controlEvents: UIControlEvents) {
        overlay.removeTarget(target, action: action, for: controlEvents)
    }
    
    override public func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        let newValue = change![.newKey] as! Bool
        switch keyPath {
        case "highlighted"?: isHighlighted = newValue
