implemented p1