         becomeFirstResponder()
     }
     
-    func updateButtonStates(focusBorderColor: UIColor = .black, inactiveBorderColor: UIColor = .lightGray) {
+    func updateButtonStates(overrideFocusBorderColor: UIColor? = nil, overrideInactiveBorderColor: UIColor? = nil) {
         let showsPlaceholder = state?.showsPlaceholder == true
         
         for (i, button) in buttons.enumerated() {

            textField.text = nil
            createNewButtons()
        }
        else if oldValue?.showsPlaceholder != state?.showsPlaceholder {
            updateButtonStates()
        }
        else if oldValue?.completedBorderColor != state?.completedBorderColor {
            updateButtonStates()
        }
    }

    @objc @IBInspectable fileprivate var allowsBackspace: Bool = false
    @objc @IBInspectable fileprivate var showsPlaceholder: Bool = true
    @objc @IBInspectable fileprivate var allowsAllCharacters: Bool = false
    @objc @IBInspectable fileprivate var focusBorderColor: UIColor = .black
    @objc @IBInspectable fileprivate var inactiveBorderColor: UIColor = .lightGray
    @objc @IBInspectable fileprivate var completedBorderColor: UIColor = .green
    @objc @IBInspectable fileprivate var errorBorderColor: UIColor = .red
    
    public override var canBecomeFirstResponder: Bool {
        return textField.canBecomeFirstResponder
