I'd make `container` required here, and create a default container inside `Scene` instead, where you know `canvas` has to be available.  Also, I think we don't need to bother with these custom styles for the default container.  There's no guarantee that the container of the canvas will have the right styling in order for the absolute positioning to be correct.  I'd just add a plain div with no styling as the next sibling of the canvas.  Because browsers suck and don't have `insertAfter`,  you need to do with `canvas.parentNode.insertBefore(container, canvas.nextSibling)`