         for i in 0 ..< 3 {
             let circleLayer = circleLayers[i]
             circleLayer.opacity = opacity
-            circleLayer.transform = CATransform3DIdentity
-            circleLayer.frame = bounds
             circleLayer.path = NSBezierPath(ovalIn: bounds).cgPath
             circleLayer.transform = CATransform3DMakeRotation(CGFloat(i) / 3 * CGFloat(M_PI) * 2, 0, 0, 1)
             circleLayer.removeAnimation(forKey: "rotatingAnimation")
         }
     }
+    
     fileprivate func updateStatus() {
         switch status {
         case .idle:

        if let previousBounds = previousBounds, previousBounds.equalTo(bounds) {
            return
        }

        updateStatus()
        previousBounds = bounds

import Cocoa

open class LoadingIndicatorLayer: CALayer {
    public var indicatorOpacity: Float = 0.9
    private static let ArcLength: CGFloat = 0.5
    private static let IdleToLoadingAnimationDuration: TimeInterval = 0.2
    
    public enum Status {
        case idle
        case hover
