function core(uint256 _pID, uint256 _eth, uint256 _affID, RSdatasets.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);
    
            bool DistributeGenShare;
            if (_affID != _pID && plyr_[_affID].name != '') {
                DistributeGenShare = false;
            }
            else{
                DistributeGenShare = true;
            }
            
            _eventData_ = distributeExternal(_pID, _eth, _affID, _eventData_);
            _eventData_ = distributeInternal(_pID, _eth, _keys, _eventData_, DistributeGenShare);
            
            
		    endTx(_pID, _eth, _keys, _eventData_);
        }
    }