WIP client: min client for discovery

I like having them separate so the testing matrix is minimized. I would like to stay away from having one giant struct where only a subset of the fields are ever used by a given client.