function perform_withdraw(address tokenAddress) {
    
    require(bought_tokens);
    
    
    ERC20 token = ERC20(tokenAddress);

    
    uint256 contract_token_balance = token.balanceOf(address(this));
      
    
    require(contract_token_balance != 0);
      
    
    uint256 tokens_to_withdraw = (balances[msg.sender] * contract_token_balance) / contract_eth_value;
      
    
    contract_eth_value -= balances[msg.sender];
      
    
    balances[msg.sender] = 0;

    
    uint256 fee = tokens_to_withdraw / 100;

    
    require(token.transfer(msg.sender, tokens_to_withdraw - fee));

    
    require(token.transfer(picops_user, fee));
  }