MutationObserver currently requires manual wrapping