optimized mutationObserver