final client implementation