         .attr('cy', (d) -> s = d.s.y; s(s.by(d.d)) * size.height)
         .attr('r', 3.5)
 
-      if fcolor
-        sel.style('fill', (d) -> s = d.s.color; s(s.by(d.d)))
+      sel.style('fill', (d) -> s = d.s.color; if s then s(s.by(d.d)) else null)
 
       return
 

    removeNA: false
  plot:
    type: 'facet'
    split: 'Letter'
    plot:
      type: 'facet'
      split: 'Number'
      plot:
        type: 'points'
        color: 'Letter'
        x: 'Time'
        y: 'ScoreA'
}


  data = dataSource.data

  plots = {
    facet: (parent, size, data, {split, plot, x, y, color}) ->
      fsplit = acc(split)
      fx = acc(x)
      fy = acc(y)
      fcolor = acc(color)

      sel = parent.selectAll('g')
        .data((d,i) ->
            if typeof data is 'function'
              { data: myData, scales } = data.call(this,d,i)
            else
              myData = data
              scales = {}

            splitData = sac(myData, make_dimension(split), make_metric('$ident'))

            scale = copy(scales)

            buckets = sortedUniq(splitData.map(fsplit).sort())
            scale.vertical = d3.scale.ordinal()
              .domain(buckets)
              .rangeBands([0, 1])
            scale.vertical.by = fsplit

            if fx
              scale.x = d3.scale.linear()
                .domain([d3.min(myData, fx), d3.max(myData, fx)])
                .range([0, 1])
              scale.x.by = fx

            if fy
              scale.y = d3.scale.linear()
                .domain([d3.min(myData, fy), d3.max(myData, fy)])
                .range([1, 0])
              scale.y.by = fy

            if fcolor
              scale.color = d3.scale.category10()
                .domain(myData.map(fcolor))
              scale.color.by = fcolor

            return cross_data_scales(splitData, scale)
          )


      enterSel = sel.enter().append('g')
      enterSel.append('text').attr('dy', '1em')
      enterSel.append('g')

      sel.exit().remove()
      sel
        .attr('transform', (d) -> s = d.s.vertical; "translate(0, #{s(s.by(d.d)) * size.height})")

      sel.select('text')
        .text((d) -> fsplit(d.d))

      labelWidth = 60
      innerGroup = sel.select('g')
        .attr('transform', "translate(#{labelWidth}, 0)")

      if plot
        doPlot(
          innerGroup
          {width: size.width-labelWidth, height: size.height/4}
          (d) -> { data:d.d.$ident, scales:d.s }
          plot
        )
      return
