Imrpove client implementation