function distributeTokens(address token) public onlyWhitelisted() {
        
        require(!distributionActive);
        distributionActive = true;

        
        ERC677 erc677 = ERC677(token);

        
        uint256 currentBalance = erc677.balanceOf(this) - tokenBalance[token];
        require(currentBalance > ethWei * distributionMinimum);

        
        tokenBalance[token] = SafeMath.add(tokenBalance[token], currentBalance);

        
        
        
        for (uint64 i = 0; i < totalOwners; i++) {
            address owner = ownerAddresses[i];

            
            if (ownerShareTokens[owner] > 0) {
                
                balances[owner][token] = SafeMath.add(SafeMath.div(SafeMath.mul(currentBalance, ownerPercentages[owner]), 100000), balances[owner][token]);
            }
        }
        distributionActive = false;

        
        emit TokenDistribution(token, currentBalance);
    }