lots more innerHTML -> textContent cleanup where possible