allow client to do filter/sorting on a collection without transfering result into a list of map. allow client to provide a customized Selector. fixed #1