implemented dependency injection container
changes