implement basic functionality of ppm