added provider and change logic