      
      */
     public init(duration: TimeInterval, delay: TimeInterval = 0.0, options: UIViewAnimationOptions = [], animationBlock: @escaping AnimationBlock) {
-        animations.enqueue(data: [.animation(StandardAnimation(duration: duration, delay: delay, options: options, animationBlock: animationBlock))])
+        operations.enqueue(data: [.animation(StandardAnimation(duration: duration, delay: delay, options: options, animationBlock: animationBlock))])
     }
     
     /**

     ```
     
     - parameter keyframes: An array of `Keyframe` objects representing the keyframes to be animated.
     
     - returns: The current animation instance.
     
     - warning: Not calling decay, finish or perform on an animation will result in a memory leak!
     */
    open func then(keyframes: [Keyframe], options: UIViewKeyframeAnimationOptions = []) -> Animate {
        animations.enqueue(data: [.animation(KeyframeAnimation(keyframes: keyframes, options: options))])
        return self
    }
    

     */
    open func perform(completion: @escaping (()->Void) = {_ in}) {
        
        completionBlock = nil
        
        guard let operationSet = operations.dequeue()?.sorted(by: {
            $0.delay <= $1.delay && ($0.timeInterval ?? TimeInterval.greatestFiniteMagnitude) <= ($1.timeInterval ?? TimeInterval.greatestFiniteMagnitude)
        }) else {
            return completion()
        }
        
        let group = DispatchGroup()
        
        // Perform operations
        for operation in operationSet {
            
            group.enter()
        
