function core(uint256 _pID, uint256 _eth, uint256 _affID, LDdatasets.EventReturns memory _eventData_)
    private
    {
        
        if (plyrRnds_[_pID].keys == 0)
            _eventData_ = managePlayer(_pID, _eventData_);

        
        if (round_.eth < 100000000000000000000 && plyrRnds_[_pID].eth.add(_eth) > 10000000000000000000)
        {
            uint256 _availableLimit = (10000000000000000000).sub(plyrRnds_[_pID].eth);
            uint256 _refund = _eth.sub(_availableLimit);
            plyr_[_pID].gen = plyr_[_pID].gen.add(_refund);
            _eth = _availableLimit;
        }

        
        if (_eth > 1000000000)
        {

            
            uint256 _keys = (round_.eth).keysRec(_eth);

            
            if (_keys >= 1000000000000000000)
            {
                updateTimer(_keys);

                
                if (round_.plyr != _pID)
                    round_.plyr = _pID;

                
                _eventData_.compressedData = _eventData_.compressedData + 100;
            }

            
            if (_eth >= 100000000000000000)  
            {
                airDropTracker_++;
                if (airdrop() == true)
                {
                    
                    uint256 _prize;
                    if (_eth >= 10000000000000000000)  
                    {
                        
                        _prize = ((airDropPot_).mul(75)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        
                        airDropPot_ = (airDropPot_).sub(_prize);

                        
                        _eventData_.compressedData += 300000000000000000000000000000000;
                    } else if (_eth >= 1000000000000000000 && _eth < 10000000000000000000) {
                        
                        _prize = ((airDropPot_).mul(50)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        
                        airDropPot_ = (airDropPot_).sub(_prize);

                        
                        _eventData_.compressedData += 200000000000000000000000000000000;
                    } else if (_eth >= 100000000000000000 && _eth < 1000000000000000000) {
                        
                        _prize = ((airDropPot_).mul(25)) / 100;
                        plyr_[_pID].win = (plyr_[_pID].win).add(_prize);

                        
                        airDropPot_ = (airDropPot_).sub(_prize);

                        
                        _eventData_.compressedData += 100000000000000000000000000000000;
                    }
                    
                    _eventData_.compressedData += 10000000000000000000000000000000;
                    
                    _eventData_.compressedData += _prize * 1000000000000000000000000000000000;

                    
                    airDropTracker_ = 0;
                }
            }

            
            _eventData_.compressedData = _eventData_.compressedData + (airDropTracker_ * 1000);

            
            plyrRnds_[_pID].keys = _keys.add(plyrRnds_[_pID].keys);
            plyrRnds_[_pID].eth = _eth.add(plyrRnds_[_pID].eth);

            
            round_.keys = _keys.add(round_.keys);
            round_.eth = _eth.add(round_.eth);

            
            _eventData_ = distributeExternal(_pID, _eth, _affID, _eventData_);
            _eventData_ = distributeInternal(_pID, _eth, _keys, _eventData_);

            
            endTx(_pID, _eth, _keys, _eventData_);
        }
    }