 
 			@_properties[name] = value
 
+			elements = [@_element]
+			if targetElement
+				elements = [@[targetElement]]
+				elements.push(@_element) if includeMainElement
+
 			if cssProperty isnt null
-				if name is cssProperty and not LayerStyle[cssProperty]?
-					@_element.style[cssProperty] = @_properties[name]
-				else
-					@_element.style[cssProperty] = LayerStyle[cssProperty](@)
+				elements.forEach (element) =>
+					if name is cssProperty and not LayerStyle[cssProperty]?
+						element.style[cssProperty] = @_properties[name]
+					else
+						element.style[cssProperty] = LayerStyle[cssProperty](@)
 
 			set?(@, value)
 


		# We have to create the element before we set the defaults
		@_createElement()

		# Sanitize calculated property setters so direct properties always win
		layerPropertyIgnore(options, "point", ["x", "y"])

	@define "color", layerProperty(@, "color", "color", null, Color.validColorValue, Color.toColor)

	# Border properties
	@define "borderRadius", layerProperty(@, "borderRadius", "borderRadius", 0, null, asBorderRadius, null, null, "_elementBorder", true)
	@define "borderColor", layerProperty(@, "borderColor", "borderColor", null, Color.validColorValue, Color.toColor, null, null, "_elementBorder")
	@define "borderWidth", layerProperty(@, "borderWidth", "borderWidth", 0, null, asBorderWidth, null, null, "_elementBorder")
	@define "borderStyle", layerProperty(@, "borderStyle", "borderStyle", "solid", _.isString, null, null, null, "_elementBorder")

	@define "force2d", layerProperty(@, "force2d", "webkitTransform", false, _.isBoolean)
	@define "flat", layerProperty(@, "flat", "webkitTransformStyle", false, _.isBoolean)
