uses DI