I think `p` would be better named `prototype`.