   return column if typeof column is 'function'
   return (d) -> d[column]
 
-cross_data_scales = (data, scales) ->
+cross_data_ctx = (data, scales, extra) ->
   newData = []
   for datum in data
     newData.push {
       d: datum
       s: scales
+      e: extra
     }
   return newData
 


      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

    points: (parent, size, data, {x, y, color}) ->
      fx = acc(x)
      fy = acc(y)
      fcolor = acc(color)

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

            scale = copy(scales)



# d3.select('.cont').append('div').text('just point')

svl.plot {
  selector: '.cont'
  size:
    width: 600
    height: 600
  dataSource:
    data: data
    removeNA: false
  plot:
    type: 'facet'
    split: 'Letter'
    color: 'Letter'
    x: 'Time'
    plot:
      type: 'facet'
      split: 'Number'
      plot:
        type: 'points'
        y: 'ScoreA'
}

# d3.select('.cont').append('div').text('just facet Number > point')

