refactored map.js