     }
 }
 
-private var didEAInitialize = false
-private var didEAForLayersInitialize = false
-private var activeAnimationContexts = [AnimationContext]()
+public class EasyAnimation {
+    static private var activeAnimationContexts = [AnimationContext]()
+
+    static private let initialize: Void = UIView.replaceAnimationMethods()
+    static private var layersInitialize: Void = CALayer.replaceAnimationMethods()
+
+    static private let _disableSwizzling: Void = {
+        UIView.replaceAnimationMethods()
+        CALayer.replaceAnimationMethods()
+    }()
+
+    public class func disableSwizzling() {
+        _disableSwizzling
+    }
+}
 
 // MARK: EA animatable properties
 

        context.options = options
        
        //push context
        activeAnimationContexts.append(context)
        
        //enable layer actions
        CATransaction.begin()

        }
        
        //pop context
        EasyAnimation.activeAnimationContexts.removeLast()
        
        //run pending animations
        for anim in context.pendingAnimations {
