Add new state variable to base contract for upgradeable contracts

Hi @ExeciN,

When upgrading we can’t use the initializer modifier, so need to create a custom guard to ensure that the upgrade initialization function is only called once. See the following example: