added an api provider interface