           row.count = count
           rows.push row
 
-      __getHistogram = Flow.Data.Table
-        name: 'histogram'
-        label: 'Histogram'
-        description: "Histogram for column '#{column.label}' in frame '#{frameKey}'."
+      __getDistribution = Flow.Data.Table
+        name: 'distribution'
+        label: 'Distribution'
+        description: "Distribution for column '#{column.label}' in frame '#{frameKey}'."
         columns: schema.attributes
         rows: rows
         meta:
-          scan: "scan 'histogram', getColumnSummary #{stringify frameKey}, #{stringify columnName}"
+          scan: "scan 'distribution', getColumnSummary #{stringify frameKey}, #{stringify columnName}"
 
     __getCharacteristics = null
     getCharacteristics = ->

      data: getData

  extendColumnSummary = (frameKey, frame, columnName) ->
    __getHistogram = null
    getHistogram = ->
      return __getHistogram if __getHistogram

      column = head frame.columns
      histogramDataType = if column.type is 'int' then Flow.Data.Integer else Flow.Data.Real
      
      schema = if column.type is 'int' then extensionSchemas.column.integerHistogram else extensionSchemas.column.realHistogram
      Row = Flow.Data.createCompiledPrototype schema.attributeNames
      
      minBinCount = 32

        rows: rows
        meta:
          scan: "scan 'domain', getColumnSummary #{stringify frameKey}, #{stringify columnName}"
          plot: """plot
          type: 'interval'
          data: scan 'domain', getColumnSummary #{stringify frameKey}, #{stringify columnName}
          x: 'count'
          y: 'label'
          """

    mixin frame,
      characteristics: getCharacteristics
      summary: getSummary
      distribution: getDistribution
      domain: getDomain

  requestFrame = (frameKey, go) ->
