refactor map.js