map over fields with some optimization