     - Parameters:
       - duration: duration of the animation, in seconds
       - delay: delay before the animation starts, in seconds
+      - completion: block executed when the animation ends
    */
   func fadeIn(duration: NSTimeInterval = 0.25,
-              delay: NSTimeInterval = 0) -> UIView {
+              delay: NSTimeInterval = 0,
+              completion: ((Bool) -> Void)? = nil) -> UIView {
     hidden = false
     alpha = 0
     UIView.animateWithDuration(
       duration, delay: delay, options: .CurveEaseInOut, animations: {
         self.alpha = 1
-      }, completion: nil)
+      }, completion: completion)
     return self
   }
 

        UIView.addKeyframeWithRelativeStartTime(0.4, relativeDuration: 0.6) {
          self.transform = endTransform
        }
      }, completion: nil)
    return self
  }


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

