Richard rework providers

Please check and merge