~ Implemented p1&2 (nearly)