added feature dependency injection