implement client program