Excellent Explanation of Dependency Injection (Inversion of Control)