2: Dependency injection, what is it and how does it work?