foldl and foldlWithKey added