implrmented operator P