+import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract TokenDivider is IERC721Receiver, Ownable {]
+   using SafeERC20 for IERC20;
    function divideNft(address nftAddress, uint256 tokenId, uint256 amount)
        external
        onlyNftOwner(nftAddress, tokenId)
        onlyNftOwner(nftAddress, tokenId)
    {
        balances[msg.sender][erc20] = amount;
        nftToErc20Info[nftAddress] = ERC20Info({erc20Address: erc20, tokenId: tokenId});
        erc20ToMintedAmount[erc20] = amount; // amount of erc20 minted for the nft
        erc20ToNft[erc20] = nftAddress;
        emit NftDivided(nftAddress, amount, erc20);
-       bool transferSuccess = IERC20(erc20).transfer(msg.sender, amount);
-       if (!transferSuccess) {
-           revert TokenDivider__TransferFailed();
-       }
+       IERC20(erc20).safeTransfer(msg.sender, amount);
    }
    function transferErcTokens(address nftAddress, address to, uint256 amount) external {
.
.
.
        if (to == address(0)) {
            revert TokenDivider__CantTransferToAddressZero();
        }
        if (balances[msg.sender][tokenInfo.erc20Address] < amount) {
            revert TokenDivider__NotEnoughErc20Balance();
        }
        balances[msg.sender][tokenInfo.erc20Address] -= amount;
        balances[to][tokenInfo.erc20Address] += amount;
        emit TokensTransfered(amount, tokenInfo.erc20Address);
-       IERC20(tokenInfo.erc20Address).transferFrom(msg.sender, to, amount);
+       IERC20(tokenInfo.erc20Address).safeTransferFrom(msg.sender, to, amount);
    }
    function sellErc20(address nftPegged, uint256 price, uint256 amount) external {
.
.
.
        s_userToSellOrders[msg.sender].push(
            SellOrder({seller: msg.sender, erc20Address: tokenInfo.erc20Address, price: price, amount: amount})
        );
        emit OrderPublished(amount, msg.sender, nftPegged);
-        IERC20(tokenInfo.erc20Address).transferFrom(msg.sender, address(this), amount);
+        IERC20(tokenInfo.erc20Address).safeTransferFrom(msg.sender, address(this), amount);
        
       
    }
   
    function buyOrder(uint256 orderIndex, address seller) external payable {
.
.
.
        if (!success) {
            revert TokenDivider__TransferFailed();
        }
        (bool taxSuccess,) = payable(owner()).call{value: fee}("");
        if (!taxSuccess) {
            revert TokenDivider__TransferFailed();
        }
-       IERC20(order.erc20Address).transfer(msg.sender, order.amount);
+       IERC20(order.erc20Address).safeTransfer(msg.sender, order.amount);
    }