Add ability to use custom providers