new file:   communication.c