 		if @_a < 1 then return false
 		return cssNames[rgbToHex(@_r, @_g, @_b, @)] or false
 
-	setAlpha: (value) ->
-		@_a = boundAlpha(value)
-		@_roundA = Math.round(100*@_a) / 100
-		return @
-
 	lighten: (amount) ->
 		hsl = @toHsl()
 		print hsl
 		hsl.l += amount / 100
 		hsl.l = Math.min(1, Math.max(0, hsl.l))
-		return new Color(hsl).toRgbString()
+		return new Color(hsl)
 
 	brighten: (amount) ->
 		rgb = @toRgb()
 		rgb.r = Math.max(0, Math.min(255, rgb.r - Math.round(255 * -(amount / 100))))
 		rgb.g = Math.max(0, Math.min(255, rgb.g - Math.round(255 * -(amount / 100))))
 		rgb.b = Math.max(0, Math.min(255, rgb.b - Math.round(255 * -(amount / 100))))
-		return new Color(rgb).toRgbString()
+		return new Color(rgb)
 
 	darken: (amount) ->
 		hsl = @toHsl()
 		hsl.l -= amount / 100
 		hsl.l = Math.min(1, Math.max(0, hsl.l))
-		return new Color(hsl).toRgbString()
+		return new Color(hsl)
 
 	desaturate: (amount) ->
 		hsl = @toHsl()
 		hsl.s -= amount / 100
 		hsl.s = Math.min(1, Math.max(0, hsl.s))
-		new Color(hsl).toRgbString()
+		new Color(hsl)
 
 	saturate: (amount) ->
 		hsl = @toHsl()
 		hsl.s += amount / 100
 		hsl.s = Math.min(1, Math.max(0, hsl.s))
-		return new Color(hsl).toRgbString()
+		return new Color(hsl)
 
 	greyscale: ->
-		return new Color(hsl).desaturate(100).toRgbString()
+		return new Color(hsl).desaturate(100)
 
 	toString: ->
 		return @toRgbString()


		color = @color

		# If input is already a Color object, return a copy
		if (color instanceof Color) then return color

		if @color == null
			@r = 0
			@g = 0
			@b = 0
			@a = 0
			return

		# Convert input to RGB
		rgb = inputToRGB(color)

		@r = rgb.r
		@g = rgb.g
		@b = rgb.b
		@a = rgb.a

	@define "r",
		get: -> @_r
		set: (value) -> @_r = Utils.clamp(value, 0, 255)

	@define "g",
		get: -> @_g
		set: (value) -> @_g = Utils.clamp(value, 0, 255)

	@define "b",
		get: -> @_b
		set: (value) -> @_b = Utils.clamp(value, 0, 255)

	@define "a",
		get: -> @_a
		set: (value) ->
			@_a = Utils.clamp(value, 0, 1)
			@_roundA = Math.round(100*@_a) / 100

	toHex: (allow3Char) ->
		return rgbToHex(@_r, @_g, @_b, allow3Char)

		result = null

		if fromColor not instanceof Color and toColor instanceof Color
			fromColor = toColor.copy()
			fromColor.a = 0
		else if fromColor instanceof Color and fromColor._a == 0 and toColor instanceof Color and toColor._a != 0
			fromColor = toColor.copy()
			fromColor.a = 0
		else if toColor not instanceof Color and fromColor instanceof Color
			toColor = fromColor.copy()
			toColor.a = 0
		else if toColor instanceof Color and toColor._a == 0 and fromColor instanceof Color and fromColor._a != 0
			toColor = fromColor.copy()
			toColor.a = 0

		if toColor instanceof Color

