Clean up listeners when scope is destroyed