refactored Map