Patched up recursive construction with DI