user client implementation