updated based upon latest core rust changes