add first iteration of provider thingies
refactoring