Should we be doing `dotGroups.exit().remove()` in case the number of dot groups decrease (not sure how likely that is)? And maybe the same for `dots` (seems more likely)?