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


    addPath = (target, hover) ->
      if hover
        lineWidth = (params.lineWidth ? 0) + 10
      else
        lineWidth = params.lineWidth

      path = target.append("path")
        .attr('class', (d) -> d.lineMode)
        .attr('stroke', (d, i) -> d.color)
        .style('stroke-width', lineWidth)
        .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))


    unhovers.onValue ({selection, index}) ->
      highlightLegend(null)

      selection.each (d) ->
        targetSelection = d3.select(this)

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

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

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


    mousePosition = mouseMoves.map (pos) ->
