implement aggregate eval fun