         }
     }
     
-    private func updateLayers() {
+    private var borderPath: UIBezierPath {
         let centerPoint = CGPoint(x: sideWidth / 2.0, y: sideWidth / 2.0)
         let halfSideWidth = sideWidth / 2.0
-        let borderPath: UIBezierPath
+        let result: UIBezierPath
         switch form {
         case .circle:
-            borderPath = UIBezierPath(
+            result = UIBezierPath(
                 arcCenter: centerPoint,
                 radius: sideWidth / 2.0,
                 startAngle: 0.0,

                clockwise: true
            )
        case .square:
            centerPath = UIBezierPath(
                rect: CGRect(
                    origin: CGPoint.zero,
                    size: CGSize(width: halfSideWidth - currentBorderLineWidth, height: halfSideWidth - currentBorderLineWidth)
                )
            )
        }
        centerShape.path = centerPath.cgPath
        centerShape.fillColor = emptyFillColor.cgColor
    }

    
    private func startBorderLayerAnimation(animated: Bool) {
        if state == .empty {
            let finalPath = centerPath.cgPath
            /*UIBezierPath(
                arcCenter: CGPoint(x: sideWidth / 2.0, y: sideWidth / 2.0),
                radius: sideWidth / 2.0 - currentBorderLineWidth,
                startAngle: 0.0,
                endAngle: doublePi,
                clockwise: true
            ).cgPath*/
            if animated {
                with(CABasicAnimation(keyPath: "path")) {
                    $0.fromValue = UIBezierPath(
