recursive inject