added DI and logger