     case padding(UIEdgeInsets)
     case position(GSMessagePosition)
     case textAlignment(GSMessageTextAlignment)
-    case textColor(UIColor)
     case textNumberOfLines(Int)
 }
 
 extension UIViewController {
-
-    open func showMessage(_ text: String, type: GSMessageType, options: [GSMessageOption]? = nil) {
-        GSMessage.showMessageAddedTo(text, type: type, options: options, inView: view, inViewController: self)
+    
+    open func showMessage(_ text: String,
+                          type: GSMessageType,
+                          options: [GSMessageOption]? = nil) {
+        
+        GSMessage.showMessageAddedTo(text: text, type: type, options: options, inView: view, inViewController: self)
+    }
+
+    open func showMessage(_ attributedText: NSAttributedString,
+                          type: GSMessageType,
+                          options: [GSMessageOption]? = nil) {
+        
+        GSMessage.showMessageAddedTo(attributedText: attributedText, type: type, options: options, inView: view, inViewController: self)
     }
 
     open func hideMessage(animated: Bool = true) {

        }

        if animation == .fade {
            UIView.animate(withDuration: self.animationDuration,
                animations: { [weak self] in if let this = self { this.messageView.alpha = 0 } },
                completion: { [weak self] finished in self?.removeFromSuperview() }
            )
        }

        else if animation == .slide && position == .top {
            UIView.animate(withDuration: self.animationDuration,
                animations: { [weak self] in if let this = self { this.messageView.transform = CGAffineTransform(translationX: 0, y: -this.messageHeight + -this.margin.top) } },
                completion: { [weak self] finished in self?.removeFromSuperview() }
            )
        }

        else if animation == .slide && position == .bottom {
            UIView.animate(withDuration: self.animationDuration,
                animations: { [weak self] in if let this = self { this.messageView.transform = CGAffineTransform(translationX: 0, y: this.messageHeight + this.margin.bottom) } },
                completion: { [weak self] finished in self?.removeFromSuperview() }
            )
        }


public class GSMessage: NSObject {

    public static var font : UIFont = UIFont.systemFont(ofSize: 14)
    
    public static var successBackgroundColor : UIColor = UIColor(red: 142.0/255, green: 183.0/255, blue: 64.0/255,  alpha: 0.95)
    public static var warningBackgroundColor : UIColor = UIColor(red: 230.0/255, green: 189.0/255, blue: 1.0/255,   alpha: 0.95)
    public static var errorBackgroundColor   : UIColor = UIColor(red: 219.0/255, green: 36.0/255,  blue: 27.0/255,  alpha: 0.70)
    public static var infoBackgroundColor    : UIColor = UIColor(red: 44.0/255,  green: 187.0/255, blue: 255.0/255, alpha: 0.90)
    
    public class func showMessageAddedTo(text: String,
                                         type: GSMessageType,
                                         options: [GSMessageOption]?,
                                         inView: UIView,
                                         inViewController: UIViewController?) {
        
        let attributedText = NSAttributedString(
            string: text,
            attributes: [
                .font: GSMessage.font,
                .foregroundColor: UIColor.white,
                .paragraphStyle: NSParagraphStyle()
            ]
        )
        
        showMessageAddedTo(attributedText: attributedText, type: type, options: options, inView: inView, inViewController: inViewController)
    }

    public class func showMessageAddedTo(attributedText: NSAttributedString,
                                         type: GSMessageType,
                                         options: [GSMessageOption]?,
                                         inView: UIView,
                                         inViewController: UIViewController?) {
        
        if inView.installedMessage != nil && inView.uninstallMessage == nil {
            inView.hideMessage()
        }
        
        if inView.installedMessage == nil {
            GSMessage(attributedText: attributedText,
                      type: type,
                      options: options,
                      inView: inView,
                      inViewController: inViewController).show()
        }
    }

    public func show() {

        guard inView?.installedMessage == nil else {
            return
        }

        inView?.installedMessage = self
        inView?.addSubview(containerView)
