 
 
 // MARK: // Private
+// MARK: Computed Variables
+private extension TextButton {
+    var _highlightedAlpha: CGFloat {
+        get {
+            return self.__highlightedAlpha
+        }
+        set(newHighlightedAlpha) {
+            guard newHighlightedAlpha != self.__highlightedAlpha else { return }
+            self.__highlightedAlpha = newHighlightedAlpha
+            let titleColor: UIColor = self.titleColor(for: .highlighted) ?? .black
+            let highlightedTitleColor: UIColor = titleColor.withAlpha(self.highlightedAlpha)
+            self.setTitleColor(highlightedTitleColor, for: .highlighted)
+        }
+    }
+    
+    var _underlined: Bool {
+        get {
+            return self.__underlined
+        }
+        set(newUnderlined) {
+            guard newUnderlined != self.__underlined else { return }
+            self.__underlined = newUnderlined
+            self._updateAttributedTitle(for: state)
+        }
+    }
+}
+
+
 // MARK: Setup Override Implementation
 private extension TextButton {
     func _setup() {
         super.setup()
         self.xPadding = 0
         self.yPadding = 0
-        self.setTitleColor(.black, for: .normal)
     }
 }
 

private extension TextButton {
    func _setTitleColor(_ color: UIColor?, for state: UIControlState) {
        super.setTitleColor(color, for: state)
        self._updateTitle()
    }
}


// MARK: Update Title
private extension TextButton {
    func _updateTitle() {
        let state: UIControlState = self.state
        let title: String? = self.title(for: state)
        self._setTitle(title, for: state)
    }
}

// MARK: Class Declaration
public class TextButton: BaseButton {
    // Private Variables
    private var __highlightedAlpha: CGFloat = 0.5
    private var __underlined: Bool = false
    
    // Setup Override
    public override func setup() {
