rely on textContent instead of manually cleaning strs