     //================================================================================
 
     fileprivate let height: CGFloat
-    fileprivate let width: CGFloat
+    fileprivate var width: CGFloat {
+        get { return height+(height*0.6) }
+    }
 
     fileprivate var leftConstraint: NSLayoutConstraint?
     fileprivate var heightConstraint: NSLayoutConstraint?

    // MARK: Public Parameters
    //================================================================================

    public var isOn = false {
        didSet { animate() }
    }

    /// Change the toggle border on and off
    public var hasToggleBorder = true {
        didSet { circle.layer?.borderWidth = hasToggleBorder ? toggleBorderWidth : 0 }
    }

    /// Change the width of the outline border
    public var outlineWidth: CGFloat = 2 {
        didSet {
            backVw.layer?.borderWidth = outlineWidth
            layoutSwitch(resetingLayout: true)

    //================================================================================

    required init?(coder: NSCoder) {
        self.height = 44
        super.init(coder: coder)
        drawView()
    }

    required init(height: CGFloat = 44) {
        self.height = height
        super.init(frame: .zero)
        drawView()
    }

    override func mouseDown(with event: NSEvent) {
        let push: Double = Double(outlineWidth + width) - Double(height)
        NSAnimationContext.runAnimationGroup({ (context) in
            context.duration = 0.3
            context.allowsImplicitAnimation = true

            let adjustment = (toggleSize/4)
            widthConstraint?.isActive = false
            widthConstraint = circle.widthAnchor.constraint(equalToConstant: toggleSize+adjustment)
            widthConstraint?.isActive = true

            if isOn {
                leftConstraint?.constant = CGFloat(push)-adjustment
            }
            animator().layoutSubtreeIfNeeded()
        })
    }

    override func mouseUp(with event: NSEvent) {
        isOn = !isOn
    }

    //================================================================================
    // MARK: Helpers
    //================================================================================

    fileprivate func drawView() {
        backVw.backgroundColor = backColor

        addSubview(backVw)
