only apply changes when something changed, listen on changes from outside
extend demo to listen on changes from outside