add function + update