add deferred support for circular dependency