 
     addPath = (target, hover) ->
       if hover
-        lineWidth = (params.lineWidth ? 0) + 10
-      else
-        lineWidth = params.lineWidth
+        extraWidth = 10
+        c = ''
+      else
+        extraWidth = 0
 
       path = target.append("path")
         .attr('class', (d) -> d.lineMode)
         .attr('stroke', (d, i) -> d.color)
-        .style('stroke-width', lineWidth)
+        .style('stroke-width', (d) -> d.lineWidth + extraWidth)
         .attr('fill', (d, i) -> if d.lineMode is 'area' then d.color)
         # TODO don't call lineFn for both visible and hover paths
         .attr('d', (d, i) -> d.lineFn(d.lineValues))


    addInfiniteLines = (target, hover) ->
      if hover
        lineWidth = (params.lineWidth ? 0) + 10
      else
        lineWidth = params.lineWidth
      target.append('g').attr('class', 'infiniteLines')
      .each (d) ->
        lineColor = d.color
        d3.select(this)
          .selectAll('line')
          .data((d) -> d.scatterValues)


    hoverSelections = mouseOver.map ({index}) -> {index, selection: d3.select(container).selectAll ".target#{index}"}
    hoverSelections.onValue ({selection, index}) ->
      selection.each (d) ->
        targetSelection = d3.select(this)

        targetSelection.select('path')
          .style('stroke-width', (d) -> d.lineWidth + 3)

        targetSelection.select('.infiniteLines').each (d) ->
          d3.select(this).selectAll('line')
            .style('stroke-width', d.lineWidth + 3)

        targetSelection.select('.circles').selectAll('circle')
          .attr('r', 4)

      highlightLegend(index)

    unhovers = hoverSelections.merge(mouseOut)
