Service provider pattern.