```\n//CollateralManager.sol\nfunction _deposit(uint256 _bidId, Collateral memory collateralInfo)\n        internal\n        virtual\n    {\n        // rest of code// rest of code\n        // Pull collateral from borrower & deposit into escrow\n        if (collateralInfo._collateralType == CollateralType.ERC20) {\n            IERC20Upgradeable(collateralInfo._collateralAddress).transferFrom( //transferFrom first time\n                borrower,\n                address(this),\n                collateralInfo._amount\n            );\n            IERC20Upgradeable(collateralInfo._collateralAddress).approve(\n                escrowAddress,\n                collateralInfo._amount\n            );\n            collateralEscrow.depositAsset(  //transferFrom second time\n                CollateralType.ERC20,\n                collateralInfo._collateralAddress,\n                collateralInfo._amount,   //this value is from user's input\n                0\n            );\n        }\n        // rest of code// rest of code\n    }\n```\n