adding differences between factories, services, and providers example