     }
 }
 
-public class EasyAnimation {
+@objc public class EasyAnimation: NSObject {
     static private var activeAnimationContexts = [AnimationContext]()
 
-    static private let initialize: Void = UIView.replaceAnimationMethods()
-    static private var layersInitialize: Void = CALayer.replaceAnimationMethods()
-
-    static private let _disableSwizzling: Void = {
+    @objc override public class func initialize() {
+        #if !EANoSwizzling
         UIView.replaceAnimationMethods()
         CALayer.replaceAnimationMethods()
+        #endif
+    }
+
+    static private let _disableSwizzling: Void = {
+        #if !EANoSwizzling
+        UIView.replaceAnimationMethods()
+        CALayer.replaceAnimationMethods()
+        #endif
     }()
 
     public class func disableSwizzling() {


extension CALayer {
    // MARK: CALayer animations
    
    override public static func initialize() {
        super.initialize()
        _ = EasyAnimation.layersInitialize
    }
    
    private static func replaceAnimationMethods() {
        //replace actionForKey
        method_exchangeImplementations(

    //public var animationPath: CGPath? { set {} get {return nil}}
    
    // MARK: UIView animation & action methods

    override public class func initialize() {
        super.initialize()
        _ = EasyAnimation()
    }

    private static func replaceAnimationMethods() {
        //replace actionForLayer...
        method_exchangeImplementations(
