maybe move this into document.js and do `return new DOMElement(tagName, this, htmlns)` in `createElement` ?