Implementing the Client