   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
 


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

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

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



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

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

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

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

      return

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

      sel = parent.selectAll('circle')
        .data((d,i) ->
            { data: myData, scales, size } = dataCtx.call(this,d,i)

            scale = copy(scales)

