added a PP implementation