     for renderer in @mget_obj('renderers')
       datasource_id = renderer.get_obj('data_source').id
       _.setdefault(datasource_selections, datasource_id, [])
+      #the select call of the render converts the screen coordinates
+      #of @xrange and @yrange into data space coordinates
       selected = @plot_view.renderers[renderer.id].select(@xrange, @yrange)
       datasource_selections[datasource_id].push(selected)
 
     for own k,v of datasource_selections
+
+      #FIXME: I'm not sure why this is here, when will v have more than one element?
+      #
+      # This next line is the equivalent of calling
+      #_.intersection(v[0], v[1], v[2]...) for however many
+      #subelements v has.  each member of the v list will have another
+      #list inside it.  thus this line finds the intersection of the
+      #lists of v.
       selected = _.intersection.apply(_, v)
-      datasources[k].set('selected', selected)
-      datasources[k].save()
+      ds = datasources[k]
+      ds.set('selected', selected)
+      #console.log("datasource_selections", k, v, selected)
+      #ds.save()
     return null
 
 

  _selecting : (e, x_, y_) ->
    [x, y] = @mouse_coords(e, e.bokehX, e.bokehY)
    @mset({'current_x' : x, 'current_y' : y})
    [@xrange, @yrange] = @_get_selection_range_fast(x, y)
    @trigger('boxselect', @xrange, @yrange)
    return null


        select_callback)
      safebind(this, renderer.get_obj('ydata_range'), 'change',
        select_callback)

  eventGeneratorClass : TwoPointEventGenerator
  evgen_options : {keyName:"ctrlKey", buttonText:"Select"}
  tool_events : {
    SetBasepoint : "_start_selecting",
    #UpdatingMouseMove: "box_selecting",
    UpdatingMouseMove: "_selecting",

    #DragEnd: "_selecting",
    deactivated : "_stop_selecting"}

  mouse_coords : (e, x, y) ->
