added MoveWithPP class to fix pp aliasing problem