IoC implementation