             }
         }
     }
+    
+    @IBInspectable public var imageName:String? {
+        didSet {
+            self.processImageName(self.imageName, forState: .Normal)
+        }
+    }
+    
+    @IBInspectable public var highlightedImageName:String? {
+        didSet {
+            self.processImageName(self.highlightedImageName, forState: .Highlighted)
+        }
+    }
+    
+    @IBInspectable public var selectedImageName:String? {
+        didSet {
+            self.processImageName(self.selectedImageName, forState: .Selected)
+        }
+    }
+    
+    @IBInspectable public var disabledImageName:String? {
+        didSet {
+            self.processImageName(self.disabledImageName, forState: .Disabled)
+        }
+    }
+    
+    
+    // -----------------------------------------------------------------------------------------------------------------------
+    //
+    // MARK: - Public methods
+    //
+    // -----------------------------------------------------------------------------------------------------------------------
     
     public func applyStyle(style:Style) {
         self.setBackgroundColor(style.backgroundColor, forState: .Normal)

        
        self.layer.cornerRadius = style.cornerRadius
    }
}



@IBDesignable public class STButton : ExtendedButton, Stylable {
    
    // -----------------------------------------------------------------------------------------------------------------------
    //
    // MARK: - Computed properties
    //
    // -----------------------------------------------------------------------------------------------------------------------
    
    @IBInspectable public var styleName:String? {
        didSet {
            if let styleName = self.styleName, style = Styles.sharedStyles.styleNamed(styleName) {
