 
     initialize: (attrs, options) ->
       super(attrs, options)
-      @set('tooltip', new Tooltip.Model())
+      ttmodels = {}
       renderers = @get('plot').get('renderers')
-      renderers.push(@get('tooltip'))
+      for r in @get('renderers')
+        tooltip = new Tooltip.Model()
+        ttmodels[r.id] = tooltip
+        renderers.push(tooltip)
+      @set('ttmodels', ttmodels)
       @get('plot').set('renderers', renderers)
+      return
 
     defaults: () ->
       return _.extend({}, super(), {

      vx = canvas.sx_to_vx(e.bokeh.sx)
      vy = canvas.sy_to_vy(e.bokeh.sy)
      if not @plot_view.frame.contains(vx, vy)
        @mget('tooltip').clear()
        return
      @_inspect(vx, vy)

    _move_exit: ()->
      @mget('tooltip').clear()

    _inspect: (vx, vy, e) ->
      geometry = {

      for r in @mget('renderers')
        sm = r.get('data_source').get('selection_manager')
        sm.inspect(@, @plot_view.renderers[r.id], geometry, {"geometry": geometry})
      return

    _update: (indices, tool, renderer, ds, {geometry}) ->

      tooltip = @mget('ttmodels')[renderer.model.id] ? null
      if not tooltip?
        return

      tooltip.clear()

      if indices.length == 0
        return
