ERC721Upgradeable multiple upgrades

Hi @SrChong,

It is not upgrade safe to add fields to a struct being used in an array.

Implementation contracts can be stand alone or they can inherit from previous versions of the implementation contract. It is up to you for what works for your use case.

I tend to use stand alone. I only used inheritance as an example here.

OpenZeppelin Upgrades: Step by Step Tutorial for Truffle shows an example of implementation contracts not inheriting from previous versions.