refactor to support paginations

This meant moving to manual derialization because we needed modify the
instance of the Response body before returning up.