add communication functions (except serialization part)