@archethect.eth
* Basically to keep the existing state while you want to change how your contract works + to preserve composability with other apps.
* On the frontend you don't want to change the contract address the app connects to every time the contract implementation changes.