new module system to provide lazy dependency injection