```\nfunction distributeFee() public {\n    require(distributingFee == false, "VoxNET: reentry prohibited");\n    distributingFee = true;\n\n    uint tokensToSell = balanceOf[address(this)];\n\n    if (tokensToSell > 0) {\n        address[] memory path = new address[](2);\n        path[0] = address(this);\n        path[1] = weth;\n\n        allowance[address(this)][router] = tokensToSell;\n\n        IUniswapV2Router02(router).swapExactTokensForETHSupportingFeeOnTransferTokens(\n            tokensToSell,\n            0,\n            path,\n            address(this),\n            block.timestamp\n        );\n    }\n\n    uint amount = address(this).balance;\n\n    if (amount > 0) {\n        bool success;\n\n        if (ecosystemFee != 0) {\n            uint amountEcosystem = (amount * ecosystemFee) / fee;\n            (success, ) = payable(ecosystemFeeReceiver).call{ value: amountEcosystem, gas: 30000 }("");\n        }\n\n        uint amountMarketing = (amount * marketingFee) / fee;\n        (success, ) = payable(marketingFeeReceiver1).call{ value: amountMarketing / 2, gas: 30000 }("");\n        (success, ) = payable(marketingFeeReceiver2).call{ value: amountMarketing / 2, gas: 30000 }("");\n\n        uint amountTreasury = (amount * treasuryFee) / fee;\n        (success, ) = payable(treasuryFeeReceiver).call{ value: amountTreasury, gas: 30000 }("");\n    }\n\n    distributingFee = false;\n}\n```\n