Adding an abstract client implementation