```\\nfunction doTransfer(\\n    address sender,\\n    address recipient,\\n    uint amount\\n) internal returns (bool) {\\n    if (!isAuthorized[sender] && !isAuthorized[recipient]) {\\n        require(launched, "VoxNET: transfers not allowed yet");\\n    }\\n\\n    require(balanceOf[sender] >= amount, "VoxNET: insufficient balance");\\n\\n    balanceOf[sender] = balanceOf[sender] - amount;\\n\\n    uint amountAfterFee = amount;\\n\\n    if (!distributingFee) {\\n        if ((isPool[sender] && !isFeeExempt[recipient]) || (isPool[recipient] && !isFeeExempt[sender])) {\\n            amountAfterFee = takeFee(sender, amount);\\n        } else {\\n            distributeFeeIfApplicable(amount);\\n        }\\n    }\\n\\n    balanceOf[recipient] = balanceOf[recipient] + amountAfterFee;\\n\\n    emit Transfer(sender, recipient, amountAfterFee);\\n    return true;\\n}\\n```\\n