refactor p1
a