Introduce Provider mecanism