communication function works