```\nfunction \_stakeDAIx(address \_user, uint256 \_amount, address \_policyBookAddr) internal {\n    require (\_amount > 0, "BMIDAIStaking: Can't stake zero tokens");\n\n    PolicyBook \_policyBook = PolicyBook(\_policyBookAddr);\n    // transfer DAI from PolicyBook to yield generator\n    daiToken.transferFrom(\_policyBookAddr, address(defiYieldGenerator), \_amount);            \n\n    // transfer bmiDAIx from user to staking\n    \_policyBook.transferFrom(\_user, address(this), \_amount);       \n\n    \_mintNFT(\_user, \_amount, \_policyBook);\n}\n```\n