         return true
     }
     
-    public override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool {
+    public override func continueTrackingWithTouch(touch: UITouch, withEvent event: UIEvent?) -> Bool {
         super.continueTrackingWithTouch(touch, withEvent: event)
         
         updateForTouch(touch, modifyHue: touchInside)

    // MARK: Initializers
	convenience init() {
        self.init()
        backgroundColor = UIColor.clearColor()
    }
    
    public override init(frame: CGRect) {
        super.init(frame: frame)
        backgroundColor = UIColor.clearColor()
    }
    
    public required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        backgroundColor = UIColor.clearColor()
    }
    
    // MARK: UIControl methods
    public override func beginTrackingWithTouch(touch: UITouch, withEvent event: UIEvent) -> Bool {
        super.beginTrackingWithTouch(touch, withEvent: event)
        
        updateForTouch(touch, modifyHue: true)

        return true
    }
    
    public override func endTrackingWithTouch(touch: UITouch?, withEvent event: UIEvent?) {
        super.endTrackingWithTouch(touch, withEvent: event)
		
		guard let endTouch = touch else { return }
        updateForTouch(endTouch, modifyHue: touchInside)
		sendActionsForControlEvents(touchInside ? .TouchUpInside : .TouchUpOutside)
    }
    
    public override func cancelTrackingWithEvent(event: UIEvent?) {
