 		for state in UIControlState.all {
 			button.setAttributedTitle(attributedTitleForState(state), forState: state)
 			button.setImage(imageForState(state), forState: state)
+			button.setBackgroundImage(backgroundImageForState(state), forState: state)
 		}
 		button.alpha = alpha
 		button.hidden = hidden

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

		self.init(attributedTitleForState: {_ in attributedTitle}, imageForState: {_ in image}, action: {_ in action() })
	}
	
	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
