refactored Map and MapFunc