Add flexibility & convenience through persistence

Also split init from request.
Add support for returning results as generator.