notes on dependency injection