Implementing DIContainer