source and sink replaced by document.addEventListener