       options: .CurveEaseOut, animations: {
         self.transform = CGAffineTransformIdentity
         self.alpha = 1
-      }, completion: nil)
+      }, completion: completion)
     return self
   }
 

     - toScale: ending scale for the view, should be between 0 and 1
     - duration: duration of the animation, in seconds
     - delay: delay before the animation starts, in seconds
   */
  func popOut(toScale: CGFloat = 0.5,
              duration: NSTimeInterval = 0.3,
              delay: NSTimeInterval = 0) -> UIView {
    let endTransform = CGAffineTransformMakeScale(toScale, toScale)
    let prepareTransform = CGAffineTransformMakeScale(1.1, 1.1)
    UIView.animateKeyframesWithDuration(

     - amount: distance to shake, expressed as a fraction of the view's size
     - duration: duration of the animation, in seconds
     - delay: delay before the animation starts, in seconds
     - completion: block executed when the animation ends
   */
  func shake(toward edge: SimpleAnimationEdge = .None,
                    amount: CGFloat = 0.15,
                    duration: NSTimeInterval = 0.6,
                    delay: NSTimeInterval = 0,
                    completion: ((Bool) -> Void)? = nil) -> UIView {
    let steps = 8
    let timeStep = 1.0 / Double(steps)
    var dx: CGFloat, dy: CGFloat
