instantiates deps only once
implemented circular error handling in injector