 	fileprivate var defaultAlpha = CGFloat(1)
 	fileprivate var defaultBackgroundColor: UIColor?
 	fileprivate var defaultBorderColor: UIColor?
+	fileprivate var defaultTintColor: UIColor?
 
 	open var tapped: Closure?
 	open var touchTolerance = CGFloat(75)

				return
			}

			if highlightedAlpha != defaultAlpha || highlightedBackgroundColor != defaultBackgroundColor || highlightedBorderColor != defaultBorderColor {
				var animation: Animation? = highlighted ? nil : Animation(duration: 0.3)
				animation?.allowsUserInteraction = true

				animation.runAlways {
					updateAlpha()
					updateBackgroundColor()
				}
			}
		}

	}


	// 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()

