Talking about the implementation...

There are basically three entities:
 1. Resource
 1. <each>Pagination
 1. Pagination (the plugin)

Pagination (the plugin) iterates over the array of attributes user passes and, for each one, it creates an instance of a Paginated-Resource. What the heck is this Paginated-Resource?

Paginated-Resource is a Resource instance augmented with a proper pagination .next(). This was an approach to isolate the code for each type of Pagination, and at the same time make it easy to extend. The Resource is a very basic encapsulation.