add fold method