 layerValueTypeError = (name, value) ->
 	throw new Error("Layer.#{name}: value '#{value}' of type '#{typeof(value)}' is not valid")
 
-layerProperty = (obj, name, cssProperty, fallback, validator, transformer, options={}, set) ->
+layerProperty = (obj, name, cssProperty, fallback, validator, transformer, options={}, set, targetElement, includeMainElement) ->
 	result =
 		default: fallback
 		get: ->


		# 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)
