added fold and map