add on content change callback