updated: fold-left, fold-right now properly tail-recursive