dependency injection implemented