generalise PP assembly