 			}
 
 			updateBorderColor()
+		}
+	}
+
+
+	open var highlightedTintColor: UIColor? {
+		didSet {
+			guard highlightedTintColor != oldValue else {
+				return
+			}
+
+			updateTintColor()
 		}
 	}
 

	fileprivate var defaultAlpha = CGFloat(1)
	fileprivate var defaultBackgroundColor: UIColor?
	fileprivate var defaultBorderColor: UIColor?

	open var tapped: Closure?
	open var touchTolerance = CGFloat(75)

	}


	// TODO this is hacky but tintColor is quite special anyway. We should split this up to normalTintColor, highlightedTintColor and appliedTintColor.
	open override var tintColor: UIColor? {
		get { return super.tintColor }
		set {
			guard newValue != defaultTintColor else {
				return
			}

			defaultTintColor = newValue

			updateTintColor()
		}
	}


	open override func tintColorDidChange() {
		super.tintColorDidChange()

