modified: recv_v and send_v function