final version of IoC module