setContent is supposed to replace the existing content, we should call clear() before.

but I see that `clear` is doing some of what `hide` is doing.. So here is my proposal
* remove the 2 last lines of clear (`dom.subject.classList.add('hide'); this.isVisible = false;`)
* add `return this;` (you can add this to other functions too) so that it's chainable
* review all the places where `clear` is called, and add `.hide()` at the end if necessary.