nit why `p` ? this looks obfuscated can we replace with `func` or something?