map.js refactored