add dependency injection functionality