send/recieve logic