That sounds indeed like the right way to go, but for the moment it seems a little bit hard to create a container able to store and distinguish between those three methods of saving previous states.
I think I should start with the simplest of them all, namely cache, and progressively implement the others. So I will store lets say up to 10 frames with a unique id and call them as needed.