added dependency inversion