We wrap up our chapter on drag-and-drop behaviors with some refactoring. I wanted to simplify the HtmlElement constructor to take a DOM element rather than leaking its use of jQuery. This turns out to be easier than expected, but it raises tough questions about the fine line between abstraction (good!) and reinventing the wheel (bad).