Hi, welcome! ![]()
I think when you upgrade a contract with a new implementation, it will use the new logic, so even though it is not a virtual function, you can just re-write it to achieve the new logic.
Not sure what do you mean.
Kind reminder! you can upgrade your contract at any time, but do not change the order of the variable, and you can also have a look at this documentation: