refactor PPU, make lots of fields private