add more fold functions
benchmark fold functions