A simple IoC Container