Added DI support

new code base with DI container