Add data-attributes, ignore_bubbles, and refactor