do we have to return `p` (as we're ordering on it?) since we just discard it below