client should be a WSClient trait