modules and dependency injection