update so that we can add and remove at any point (pop/insert)