      animation.perform()
      ```
      - parameter duration: The duration that the animation should take.
+     - parameter delay: Takes a time interval to delay the animation.
+     - parameter options: Takes a set of UIViewAnimationOptions. Default is none.
      - parameter callback: `Animation` callback to perform over the duration passed in.
      
      - returns: An animation instance.

        case .do(let doBlock):
            
            doBlock()
            perform(completion)
            
        }
    }

     
     - warning: Not calling finish or perform on an animation will result in a memory leak!
     */
    open func `do`(callback: @escaping Do) -> Animate {
        animations.enqueue(data: .do(callback))
        return self
    }
