                 self.image = image
                 
                 // Fade out the thumbnail view
-                UIView.animateWithDuration(thumbnailFadeOutDuration, animations: {
+                UIView.animateWithDuration(imageFadeInDuration, animations: {
                     self.thumbnailImageView?.alpha = 0.0
+                    self.fadeInView?.alpha = 0.0
                     }, completion: { finished in
                         self.thumbnailImageView?.removeFromSuperview()
                         self.thumbnailImageView = nil
+                        self.fadeInView?.removeFromSuperview()
+                        self.fadeInView = nil
                 })
             }
         }

    override public func layoutSubviews() {
        super.layoutSubviews()
        
        if let thumbnailData = thumbnailData where image != nil {
            // Only create thumbnail image if the main image has not yet been loaded
            if thumbnailImageView == nil {
                thumbnailImageView = UIImageView(frame: self.frame)
                thumbnailImageView!.contentMode = self.contentMode
                thumbnailImageView!.image = jpegThumbnailDataToImage(data: thumbnailData, maxSize: self.frame.size)
                insertSubview(thumbnailImageView!, atIndex: 0)
                
                // Discard thumbnail data to save memory
                self.thumbnailData = nil
            } else {
                thumbnailImageView!.frame = self.frame
            }
        }
    }

    public var imageChangedCallback: (Void -> Void)?
    
    /// Whether to automaticallty respond to image load notification
    @IBInspectable
    public var ignoreLoadNotification = false
    
    override public var image: UIImage? {
