I have some contracts that rely on their constructors for their state. I want to make my contracts upgradeable and support deploying the state to a proxy contract and the logic to an implementation contract. I would like to keep my non-upgradeable contract as is and use extension/inheritance to create an upgradeable contract. Are there strategies for accomplishing this without duplicating code and tests?
Here's one of the contracts I want to extend into an upgradeable version:
https://github.com/EvanPiro/Contracts/blob/main/contracts/Forward.sol