Connection api returns higher-level values

this makes it much easier to fake out and makes client/container thinner