https://www.prestonfu.com/notes/ppm/