delegatecall-based upgradeability with a single implementation