     
     /// If set to `true`, the container gets a fill color similar to the `containerColor` property.
     /// Default value is `false`.
-    @IBInspectable public var containerFillsOnSelected: Bool = false {
-        didSet {
-            colorLayers()
-        }
-    }
-    
-    // MARK: Box and check properties
-    let containerLayer = CAShapeLayer()
-    let checkLayer = CAShapeLayer()
-    
-    var containerFrame: CGRect {
+    @IBInspectable public var containerFillsOnToggleOn: Bool = false {
+        didSet {
+            colorLayers()
+        }
+    }
+    
+    /// A Boolean value that determines the off/on state of the checkbox. If `true`, the checkbox is checked.
+    @IBInspectable public var on: Bool = false {
+        didSet {
+            colorLayers()
+        }
+    }
+    
+    // MARK: Internal and private properties
+    
+    internal let containerLayer = CAShapeLayer()
+    internal let checkLayer = CAShapeLayer()
+    
+    internal var containerFrame: CGRect {
         let width = bounds.width
         let height = bounds.height
         

import UIKit

@IBDesignable
public class CheckboxButton: UIButton {
    // MARK: Inspectable properties
    
    /// Line width for the check mark. Default value is 2.
    @IBInspectable public var checkLineWidth: CGFloat = 2.0 {

        return CGRect(x: x + halfLineWidth, y: y + halfLineWidth, width: sideLength - containerLineWidth, height: sideLength - containerLineWidth)
    }
    
    internal var containerPath: UIBezierPath {
        if circular {
            return UIBezierPath(ovalInRect: containerFrame)
        } else {
            return UIBezierPath(rect: containerFrame)
        }
    }
    internal var checkPath: UIBezierPath {
        let containerFrame = self.containerFrame
        
        // Add an offset for circular checkbox
