function distributeExternal(uint256 _pID, uint256 _eth, uint256 _affID, RSdatasets.EventReturns memory _eventData_)
        private
        returns(RSdatasets.EventReturns)
    {
        
        uint256 _com = (_eth.mul(5)) / 100;
                
        
        uint256 _affs = (_eth.mul(affTol)) / 100;
        uint256 _comTmp;
        uint256 _affIDNext;        

        
        (_affIDNext, _comTmp) = updateAff(_pID, _affs, _affID, affLv1_);
        if (_comTmp > 0){
           _com = (_com.add(_comTmp));
        }

        
        (_affIDNext, _comTmp) = updateAff(_pID, _affs, _affIDNext, affLv2_);
        if (_comTmp > 0){
           _com = (_com.add(_comTmp));
        }

        
        (_affIDNext, _comTmp) = updateAff(_pID, _affs, _affIDNext, affLv3_);
        if (_comTmp > 0){
           _com = (_com.add(_comTmp));
        }

        yyyy.transfer((_com.mul(80)/100));
        gggg.transfer((_com.sub((_com.mul(80)/100))));
        
        return(_eventData_);
    }