add reducers support, and 'fold' benchmark