refactors d3, still need to add backpressure