     ///
     /// - Parameters:
     ///   - from: the from direction of the bonuce animation showing up.
-    ///   - completion: a completion clousure to execute when the animation finished.
+    ///   - completion: a completion closure to execute when the animation finished.
     ///
     public func bonuce(from direction: AXAnimationEffectsDirection = .top, completion: @escaping () -> Void = {}) {
         switch direction {

    }
    /// Run a \`drop\` animation effect on the receiver.
    ///
    /// - Parameter completion: a completion clousure to execute when the animation finished.
    ///
    public func drop(completion: @escaping () -> Void = {}) {
        chainAnimator.basic.anchorToRightTop().property("transform.rotation").toValue(-M_PI/18*2).duration(1.0).combineBasic().property("position.y").fromValue(layer.position.y).toValue(UIScreen.main.bounds.height+layer.position.y).duration(0.5).easeInCubic().start(completion: completion)

public extension UIView {
    /// Run a \`tada\` animation effect on the receiver.
    ///
    /// - parameter completion: a completion closure to execute when the animation finished.
    ///
    public func tada(completion: @escaping () -> Void = {}) {
        chainAnimator.basic.property("transform.scale").fromValue(1.0).toValue(1.1).duration(0.15).combineBasic().property("transform.rotation").byValue(M_PI/21.0).duration(0.1).autoreverses().repeatCount(2).combineBasic().beginTime(0.1).property("transform.rotation").byValue(-M_PI/18.0).duration(0.1).autoreverses().repeatCount(2).nextToBasic().property("transform.scale").toValue(1.0).duration(0.15).start(completion: completion)
