map.js  refactored