added interface and DI resolver