prototype with provider