dependency injection WIP