starting the implementation of IoC container

Inspired by func