adding dynamic provider handling