added a basic client implementation