added dependency-injection