Extract client persistence into a model
Add classes for request/response handling
Make output format rendering extensible