     }
     /// Run a \`pulse\` animation effect on the receiver.
     ///
-    /// - Parameter completion: a completion clousure to execute when the animation finished.
+    /// - Parameter completion: a completion closure to execute when the animation finished.
     ///
     public func pulse(completion: @escaping () -> Void = {}) {
         chainAnimator.basic.property("transform.scale").byValue(0.1).duration(0.5).linear().autoreverses().start(completion: completion)
     }
     /// Run a \`shake\` animation effect on the receiver.
     ///
-    /// - Parameter completion: a completion clousure to execute when the animation finished.
+    /// - Parameter completion: a completion closure to execute when the animation finished.
     ///
     public func shake(completion: @escaping () -> Void = {}) {
         let position = layer.position

    }
    /// Run a \`swing\` animation effect on the receiver.
    ///
    /// - Parameter completion: a completion clousure to execute when the animation finished.
    ///
    public func swing(completion: @escaping () -> Void = {}) {
        chainAnimator.basic.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)

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)
