I have been getting into data visualization with d3.js, but there is one thing that I have not been able to wrap my head around. What is the difference between d3.join() and d3.enter()? Is enter() to be used mainly for dynamic data? Or is join() an overarching method that contains enter(), exit(), and update()?