Upgradeable contract derive

Hi, I am making upgrageable token:

contract MyTokenV1 is Initializable,OwnableUpgradeable,UUPSUpgradeable,  ERC20BurnableUpgradeable   {
... initialize
    foo1(){...}
    foo2(){...}
}
can I derive my V2 from V1 to avoid reimplementing all methods that I did in V1:
contract MyTokenV2 is MyTokenV1 {
    ... initialize
}

All source code I found MyTokenV2 for some reason was derived from same contracts as MyTokenV1 instead of deriving directly from MyTokenV1. Is there a reason from that? Deriving from MyTokenV1 would save me from reimplementing all functions that are in MyTokenV1

yes I did inherit and works great, thank you