move the client constructor into the driver