         (array[0] * amount) + (array[1] * (1 - amount))
 
       [@r, @g, @b, @a] = mixedColors
-      @r = @r.round()
-      @g = @g.round()
-      @b = @b.round()
 
       return this 
 

    return undefined unless channels = hslParser.exec(colorString)

    parsedColor = (parseFloat channel for channel in channels[1..3])
    parsedColor[0] = parsedColor[0].round()
    parsedColor[3] ||= 1.0

    return hslToRgb(parsedColor)

  hslToRgb = (hsl) ->    
    [h, s, l, a] = (parseFloat(channel) for channel in hsl)
    h = h.round()
    h /= 360.0
    a ||= 1.0



      rgbMap = (channel * 0xFF for channel in [r, g, b])

    return rgbMap.concat(a)

  normalizeKey = (key) ->
    key.toString().toLowerCase().split(' ').join('')

  channelize = (color, alpha) ->
    if Object.isArray color
      if alpha?
        alpha = parseFloat(alpha)
      else if color[3]?
        alpha = parseFloat(color[3])
      else
        alpha = 1

      result = (parseFloat(channel) for channel in color[0..2]).concat(alpha)
    else
      result = lookup[normalizeKey(color)] || parseHex(color) || parseRGB(color) || parseHSL(color)

      if alpha?
        result[3] = parseFloat(alpha)

    return result

  Color2 = (args...) ->
    parsedColor = 
      switch args.length
        when 0
          [0, 0, 0, 1]
        when 1
          channelize(args.first())
        when 2
          channelize(args.first(), args.last())
        else     
          channelize(args)

    throw "#{args.join(',')} is an unknown color" unless parsedColor   

