new map.jl (tested)