reworked PrincipalExtensions