require and provider

build into single file