move provider_for_action logic to provider_resolver