 
       return result
 
-  _fixup_values: (cls, source, attrs) ->
+  _fixup_values: (cls, data, attrs) ->
     for name, value of attrs
-      [prop, ...] = cls.prototype.props[name]
-
-      if prop.prototype.dataspec
-        if value?
-          if _.isArray(value)
-            source.data[name] = value
-            attrs[name] = { field: name }
-          else if _.isNumber(value) or _.isString(value) # or Date?
-            attrs[name] = { value: value }
+      do (name, value) ->
+        [prop, ...] = cls.prototype.props[name]
+
+        if prop.prototype.dataspec
+          if value?
+            if _.isArray(value)
+              data[name] = value
+              attrs[name] = { field: name }
+            else if _.isNumber(value) or _.isString(value) # or Date?
+              attrs[name] = { value: value }
 
   _glyph: (cls, params, args) ->
     params = params.split(",")

      [args..., opts] = args
      attrs = _.clone(opts)
      for param, i in params
        attrs[param] = args[i]

    source = attrs.source ? new models.ColumnDataSource()
    delete attrs.source

    glyph_ca   = @_pop_colors_and_alpha(cls, attrs)
    nsglyph_ca = @_pop_colors_and_alpha(cls, attrs, "nonselection_")
    sglyph_ca  = @_pop_colors_and_alpha(cls, attrs, "selection_")
    hglyph_ca  = @_pop_colors_and_alpha(cls, attrs, "hover_")

    @_fixup_values(cls, source,   glyph_ca)
    @_fixup_values(cls, source, nsglyph_ca)
    @_fixup_values(cls, source,  sglyph_ca)
    @_fixup_values(cls, source,  hglyph_ca)

    @_fixup_values(cls, source, attrs)

    _make_glyph = (cls, attrs, extra_attrs) =>
      new cls(_.extend({}, attrs, extra_attrs))

    glyph   = _make_glyph(cls, attrs,   glyph_ca)
    nsglyph = _make_glyph(cls, attrs, nsglyph_ca)
    sglyph  = _make_glyph(cls, attrs,  sglyph_ca)
    hglyph  = _make_glyph(cls, attrs,  hglyph_ca)

    glyph_renderer = new models.GlyphRenderer({
      data_source:        source

      axis_label = x_axis_label
      if axis_label.length != 0
        xaxis.axis_label = axis_label
      @xgrid = new models.Grid({plot: this, dimension: 0, ticker: xaxis.ticker})
      if x_axis_location == "above"
        this.above = (this.above ? []).concat([xaxis])
      else if x_axis_location == "below"
        this.below = (this.below ? []).concat([xaxis])
      @add_renderers(xaxis, @xgrid)

    y_axiscls = @_get_axis_class(y_axis_type, this.y_range)
    if y_axiscls?
