added MutationObserver; closes #3