Dependency Injection Explained (Especially for beginners)