complete taxiClient, and revise userclient