      ```javascript
          function onBalanceChange(address token, address account) public onlyManager {
              TokenData storage data = tokensData[token];
              data.userFeeOffset[account] = data.cumulativeFeePerToken;
              if (balanceOf(token, account) > 0) userTokens[account].push(token);
          }
      ```
```javascript
function addFees(address token) public payable onlyManager {
        uint256 totalSupply_ = totalSupply(token);
        if (totalSupply_ == 0) revert NoTokenHolders();
        TokenData storage data = tokensData[token];
        //@audit-issue : the more the totalSupply increases the more stuck rewards (division loss)
        data.cumulativeFeePerToken += (msg.value * PRECISION) / totalSupply_;
    }
```
    function addFees(address token) public payable onlyManager {
        uint256 totalSupply_ = totalSupply(token);
        if (totalSupply_ == 0) revert NoTokenHolders();
        TokenData storage data = tokensData[token];
        data.cumulativeFeePerToken += (msg.value * PRECISION) / totalSupply_;
    }
