 		self.init(attributedTitleForState: {_ in attributedTitle}, imageForState: {_ in image}, action: {_ in action() })
 	}
 	
-	public init(attributedTitleForState: (UIControlState -> NSAttributedString?), imageForState: (UIControlState -> UIImage?) = {_ in nil}, enabled: Bool = true, selected: Bool = false, highlighted: Bool = false, action: (() -> Void) = { }) {
+	public init(attributedTitleForState: (UIControlState -> NSAttributedString?), imageForState: (UIControlState -> UIImage?) = {_ in nil}, backgroundImageForState: (UIControlState -> UIImage?) = {_ in nil}, enabled: Bool = true, selected: Bool = false, highlighted: Bool = false, action: (() -> Void) = { }) {
 		self.imageForState = imageForState
 		self.attributedTitleForState = attributedTitleForState
+		self.backgroundImageForState = backgroundImageForState
 		self.selected = selected
 		self.enabled = enabled
 		self.highlighted = highlighted

public class Button: Element {
	public var attributedTitleForState: (UIControlState -> NSAttributedString?)
	public var imageForState: (UIControlState -> UIImage?)
	public var enabled: Bool
	public var selected: Bool
	public var highlighted: Bool

					button.setImage(newImage, forState: state)
				}
				
				let newBG = backgroundImageForState(state)
				if button.backgroundImageForState(state) != newBG {
					button.setBackgroundImage(newBG, forState: state)
				}
				
				let newTitle = attributedTitleForState(state)
				if button.attributedTitleForState(state) != newTitle {
					button.setAttributedTitle(newTitle, forState: state)
