refactored the provider and dependency strings into a WritableProvider class for efficiency and reuse in the component gen