add promise providers support