         'cellHeight',
         'breadcrumbs',
         'tooltip',
-        'colors'])
+        'color'])
       @_allData = []
       # defaults
       @_size        = [1200, 800]
       @_cellHeight  = 10
       @_margin      = { top: 0, right: 0, bottom: 0, left: 0 }
-      @_colors      = ['rgb(255,255,178)','rgb(254,204,92)','rgb(253,141,60)','rgb(240,59,32)','rgb(189,0,38)']
+      @_color       = (d) ->
+        val = hash(d.name)
+        r = 200 + Math.round(55 * val)
+        g = 0 + Math.round(230 * (1 - val))
+        b = 0 + Math.round(55 * (1 - val))
+        "rgb(#{r}, #{g}, #{b})"
+
 
     data: (data) ->
       return @_data if not data

      return "" if not d?.name
      label = getClassAndMethodName(d.name)
      label.substr(0, Math.round(@x(d.dx) / 4))

    color: (d) -> @colors()[Math.floor(Math.random() * @colors().length)]

    getClassAndMethodName = (fqdn) ->
      tokens = fqdn.split(".")
      tokens.slice(tokens.length - 2).join(".")

    render: (selector) ->
      console.time('render')

            .attr('height', (d) => @cellHeight())
            .attr('x', (d) => @x(d.x))
            .attr('y', (d) => @y(d.y))
            .attr('fill', (d) => @color()(d))
            .attr('fill-opacity', '0.8')

      @container
