Provider implementation