 
 public extension UIImageView {
 	public func animate(image: UIImage?, block: ActionBlock? = nil) {
+		guard self.image != image else {
+			return
+		}
+		
 		UIView.transition(with: self, duration: animationConstant, options: .transitionFlipFromTop, animations: {
 			self.image = image
 		}, completion: { finished in


public extension UITextField {
	public func animate(text: String?, block: ActionBlock? = nil) {
		UIView.transition(with: self, duration: animationConstant, options: .transitionCrossDissolve, animations: {
			self.text = text
		}, completion: { finished in
			block?()
		})

}

public extension UIView {
	public func animate(frame: CGRect, block: ActionBlock? = nil) {
		UIView.animate(withDuration: animationConstant, animations: {
			self.frame = frame
		}, completion: { finished in
			block?()
		})
	}
	
	public func animate(alpha: CGFloat, block: ActionBlock? = nil) {
		UIView.animate(withDuration: animationConstant, animations: {
			self.alpha = alpha
