use std::vector instead of custom memory allocation in PPS