add mutation observer