alternate client implementation