function claim(address _payout, address _fee) public returns (bool success) {
        
        require(locked[msg.sender] <= block.timestamp && locked[msg.sender] != 0);
        
        
        require(_payout != _fee);
        
        
        require(msg.sender != _payout);
        
        
        require(msg.sender != _fee);
        
        
        require(balances[msg.sender] >= retentionMin);
        
        
        uint256 previousBalances = balances[msg.sender] + balances[_payout] + balances[_fee];
        
        
        uint256 payAmount = balances[msg.sender] - feeAmount;
        
        
        lockedSupply -= balances[msg.sender];
        
        
        balances[msg.sender] = 0;
        
        
        balances[_payout] += payAmount;
        
        
        balances[_fee] += feeAmount;
        
        
        Claim(msg.sender, _payout, _fee);
        Transfer(msg.sender, _payout, payAmount);
        Transfer(msg.sender, _fee, feeAmount);
        
        
        assert(balances[msg.sender] + balances[_payout] + balances[_fee] == previousBalances);
        return true;
    }