 	/// Prepares the button.
 	private func prepareButton() {
 		button.pulseColor = nil
-//		button.addTarget(self, action: "handleTouchUpOutsideOrCanceled:event:", forControlEvents: .TouchUpOutside)
-//		button.addTarget(self, action: "handleTouchUpInside", forControlEvents: .TouchUpInside)
-//		button.addTarget(self, action: "handleTouchDragInside:event:", forControlEvents: .TouchDragInside)
-//		button.addTarget(self, action: "handleTouchUpOutsideOrCanceled:event:", forControlEvents: .TouchCancel)
+		button.addTarget(self, action: "handleTouchUpOutsideOrCanceled:event:", forControlEvents: .TouchUpOutside)
+		button.addTarget(self, action: "handleTouchUpInside", forControlEvents: .TouchUpInside)
+		button.addTarget(self, action: "handleTouchDragInside:event:", forControlEvents: .TouchDragInside)
+		button.addTarget(self, action: "handleTouchUpOutsideOrCanceled:event:", forControlEvents: .TouchCancel)
 		addSubview(button)
 	}
 	

		}
	}
	
	/// Prepares the track.
	private func prepareTrack() {
		layer.addSublayer(trackLayer)

	- Parameter sender: A UIButton.
	- Parameter event: A UIEvent.
	*/
	internal func handleTouchUpOutsideOrCanceled(sender: FabButton, event: UIEvent) {
		if let v: UITouch = event.touchesForView(sender)?.first {
			let t: CGPoint = v.previousLocationInView(sender)
			let p: CGPoint = v.locationInView(sender)
			let q: CGFloat = sender.x + p.x - t.x
			setSwitchState(q > (width - button.width) / 2 ? .On : .Off, animated: true)
		}
	}
	
	/**
	Handle the TouchDragInside event.
