use _principal internally consistantly